<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: @kiwibreaksme</title>
    <description>The latest articles on Forem by @kiwibreaksme (@kiwibreaksme).</description>
    <link>https://forem.com/kiwibreaksme</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F865191%2F8d1bfea4-e727-40e2-9d08-a564a58324ce.png</url>
      <title>Forem: @kiwibreaksme</title>
      <link>https://forem.com/kiwibreaksme</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kiwibreaksme"/>
    <language>en</language>
    <item>
      <title>당신이 AI를 잘 못 쓰는 이유, 메타인지 훈련</title>
      <dc:creator>@kiwibreaksme</dc:creator>
      <pubDate>Thu, 26 Feb 2026 04:55:20 +0000</pubDate>
      <link>https://forem.com/kiwibreaksme/dangsini-aireul-jal-mos-sseuneun-iyu-05co-4b0c</link>
      <guid>https://forem.com/kiwibreaksme/dangsini-aireul-jal-mos-sseuneun-iyu-05co-4b0c</guid>
      <description>&lt;p&gt;&lt;em&gt;AI랑 일 잘하는 법 — 1편&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;먼저 말해두면, 이 글은 프롬프트 템플릿 모음이 아니다. "이렇게 물어보세요~" 하는 글은 이미 넘쳐난다. 이 글은 그보다 한 단계 아래에 있는 얘기를 한다. &lt;strong&gt;생각하는 방식&lt;/strong&gt; 얘기다. 그리고 이게 바뀌면 AI 결과물만 좋아지는 게 아니라, 본인이 성장한다. 진짜로.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;지난주에 팀 회식을 해야 했다.&lt;/p&gt;

&lt;p&gt;귀찮아서 AI한테 물어봤다. "강남역 근처 고깃집 추천해줘."&lt;/p&gt;

&lt;p&gt;5곳을 뽑아줬다. 리뷰 좋고, 분위기 좋고, 가격도 적당하다고 했다. 예약 팁까지 줬다. 친절하다.&lt;/p&gt;

&lt;p&gt;첫 번째 가게를 네이버에 검색해봤다. &lt;strong&gt;3개월 전에 폐업했다.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;두 번째는 이름이 바뀌어 있었다. 세 번째는 별 1개 테러를 맞고 있었다.&lt;/p&gt;

&lt;p&gt;동료한테 얘기했더니 반응이 두 가지였다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"역시 AI는 쓸모없네."&lt;br&gt;
"그걸 왜 AI한테 물어봐 ㅋㅋ"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;둘 다 핵심을 모르는 거다.&lt;/p&gt;

&lt;p&gt;AI가 문제가 아니다. &lt;strong&gt;물어보는 방식이 문제다.&lt;/strong&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  그러면 어떻게 물어봤어야 하나
&lt;/h3&gt;

&lt;p&gt;애초에 "고깃집 추천해줘"가 잘못된 질문이다.&lt;/p&gt;

&lt;h4&gt;
  
  
  ❌ 보통 사람의 질문
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;"강남역 근처 회식하기 좋은 고깃집 추천해줘"&lt;br&gt;
→ AI가 5곳 추천 → 첫 번째가 폐업 → "AI 별로네"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  ✅ 이렇게 물어봤어야 한다
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;1단계 — 기준부터 잡기:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"회사 회식할 때 직원들 만족도가 높은 음식점 유형이 뭐야? 인원수, 분위기, 메뉴 선택지 같은 요소별로 정리해줘."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI가 판단 기준을 먼저 정리해준다. 고깃집이 무난하긴 한데, 채식하는 사람 있으면 한정식이 낫고, 10명 넘으면 룸 있는 데가 좋고. 이런 거.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2단계 — 조건 넣기:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"우리 팀 8명이고, 고기파 많고, 강남역 도보 10분 이내. 후보 뽑아줘"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;3단계 — 결과는 내가 검증:&lt;/strong&gt;&lt;br&gt;
네이버 지도에서 영업 중인지, 리뷰는 어떤지 직접 확인한다. 이건 사람이 해야 하는 영역이다.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(더 미친 사람은 AI한테 네이버 지도 데이터를 직접 물려줘서, 영업 중인 가게만 자동으로 걸러내게 한다. 이것도 나중에 다룬다.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;"추천해줘" 한 마디로 끝내는 거랑, 기준 잡고 → 조건 넣고 → 결과를 내가 검증하는 거랑은 &lt;strong&gt;완전히 다른 행위다.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 여기서 한 가지 더. 반대로 생각하면 재밌다. 사람들이 구글 대신 AI한테 "추천해줘"를 점점 더 많이 하고 있다. 가게 입장에서는? 구글에 잘 걸리는 게 중요했는데, 이제는 &lt;strong&gt;AI가 추천하는 리스트에 들어가는 게 중요해졌다.&lt;/strong&gt; 이걸 'AI SEO'라고 부르기 시작했다. 이것도 다른 편에서 다룬다.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  대부분이 이렇게 쓰고 있다
&lt;/h2&gt;

&lt;p&gt;ChatGPT, Claude, Gemini. 한 번쯤은 써봤을 거다.&lt;/p&gt;

&lt;p&gt;근데 대부분 이렇게 쓴다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"OO해줘." → 결과 받음 → 끝.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;자기소개서 써줘. 이메일 번역해줘. 여행 계획 세워줘. 한 번 물어보고 한 번 받고 끝이다.&lt;/p&gt;

&lt;p&gt;좋으면 "AI 대단하다." 별로면 "AI 별로네." 이게 전부다.&lt;/p&gt;

&lt;p&gt;이건 구글 검색이랑 같은 거다. 검색창에 키워드 넣고 첫 번째 결과 클릭하는 거.&lt;/p&gt;

&lt;p&gt;AI는 검색엔진이 아니다. 전지전능한 신은 더더욱 아니다.&lt;/p&gt;

&lt;p&gt;근데 신한테 소원 빌듯이 한 줄 던지고 기적을 기대한다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;기적은 안 일어난다.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Meta의 AI 안전 전문가도 당했다
&lt;/h2&gt;

&lt;p&gt;최근에 딱 맞는 사건이 있었다.&lt;/p&gt;

&lt;p&gt;요즘 IT업계에서 제일 핫한 게 &lt;strong&gt;OpenClaw&lt;/strong&gt;라는 AI 도구다. 내 컴퓨터에서 직접 돌면서 코딩도 하고, 웹 리서치도 하고, 이메일 정리하고, 파일 관리에 시스템 자동화까지 한다. 챗봇이 아니라 &lt;strong&gt;내 컴퓨터를 직접 조작하는 수준&lt;/strong&gt;이다. 맥미니가 품귀될 정도로 난리가 났고, 만든 개발자를 OpenAI가 영입하면서 더 난리가 났다.&lt;/p&gt;

&lt;p&gt;그런데 Meta에서 AI 안전을 담당하는 연구원이 이걸 쓰다가 사고가 났다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;AI가 사고 안 치게 하는 게 직업인 사람이다.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;이 사람이 OpenClaw한테 이메일 정리를 시켰다. "이메일 정리할거 정리해줘. 직접 지우지는 마." 이렇게 말했다.&lt;/p&gt;

&lt;p&gt;AI가 그 말을 무시하고 이메일을 &lt;strong&gt;전부&lt;/strong&gt; 삭제했다.&lt;/p&gt;

&lt;p&gt;폰으로 "멈춰!" 두 번 외쳤다. 무시당했다. 맥미니까지 달려가서 강제로 껐다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ AI 안전이 직업인 사람한테 벌어진 일이다. 네이버, 카카오, 당근이 OpenClaw 사내 사용을 금지한 것도 같은 이유다. AI가 나쁜 게 아니라, &lt;strong&gt;뭘 할 수 있고 뭘 못하는지를 모른 채 쓰면 사고가 나는 거다.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;교훈은 "AI가 무섭다"가 아니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;내가 먼저 파악했어야 한다.&lt;/strong&gt; 그게 전부다.&lt;/p&gt;




&lt;h2&gt;
  
  
  이름은 거창한데 별거 아니다
&lt;/h2&gt;

&lt;p&gt;이걸 학문적으로는 &lt;strong&gt;'메타인지(Metacognition)'&lt;/strong&gt;라고 부른다. 이름이 좀 있어 보인다.&lt;/p&gt;

&lt;p&gt;실체는 별거 아니다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;내가 뭘 알고, 뭘 모르고, AI가 뭘 잘하고 뭘 못하는지. 이걸 한 번 생각해보는 거다.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;그게 끝이다.&lt;/p&gt;

&lt;p&gt;회식장소 물어보기 전에 &lt;strong&gt;0.5초&lt;/strong&gt;만 생각하면 된다.&lt;br&gt;
&lt;em&gt;"영업 중인지는 AI가 모를 수 있겠다. 후보만 받고 확인은 내가 하자."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;이메일 정리시키기 전에 &lt;strong&gt;3초&lt;/strong&gt;만 생각하면 된다.&lt;br&gt;
&lt;em&gt;"얘가 내 말을 100% 따를까? 잘못되면 되돌릴 수 있나? 테스트용으로 먼저 해볼까?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;이 &lt;strong&gt;0.5초짜리 생각 하나&lt;/strong&gt;가, AI를 잘 쓰는 사람과 못 쓰는 사람을 가른다.&lt;/p&gt;

&lt;p&gt;근데 여기서 끝이 아니다.&lt;/p&gt;

&lt;p&gt;0.5초 생각하고 한 번 잘 물어보면 끝? 아니다. &lt;strong&gt;한 번 물어보고 끝나는 게 아니라, 계속 주고받는 거다.&lt;/strong&gt; AI가 답을 주면 거기서 "이건 맞는 것 같은데, 이건 아닌데?" 하고 다시 물어본다. AI가 모를 수 있는 부분을 내가 채워주고, 내가 모르는 부분을 AI한테 다시 물어본다. 이걸 5번, 10번, 필요하면 20번 반복한다.&lt;/p&gt;

&lt;p&gt;이게 &lt;strong&gt;티키타카&lt;/strong&gt;다. 좋은 첫 질문 하나로 끝나는 게 아니라, 끊임없이 주고받으면서 결과물을 같이 만들어가는 과정이다.&lt;/p&gt;

&lt;p&gt;프롬프트 엔지니어링 강의 같은 거 안 들어도 된다. 좋은 질문 하나를 외울 필요도 없다. &lt;strong&gt;계속 대화하면 된다.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  실제로 어떻게 다른지 보여주겠다
&lt;/h2&gt;
&lt;h3&gt;
  
  
  🔹 사업을 구상할 때
&lt;/h3&gt;

&lt;p&gt;사업 아이디어가 하나 떠올랐다고 하자.&lt;/p&gt;

&lt;p&gt;보통: &lt;em&gt;"사업계획서 써줘."&lt;/em&gt; → AI가 뭔가 그럴듯한 걸 뱉어준다 → "오 괜찮은데?" → 끝.&lt;/p&gt;

&lt;p&gt;나는 이렇게 한다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;1차:&lt;/strong&gt; "이 분야에서 잘 되고 있는 서비스들 뭐 있어? 각각 뭘 잘하는지 정리해줘."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI가 리스트를 뽑아준다. 여기서 끝내면 안 된다. 그 서비스들을 &lt;strong&gt;직접 깔아보고 써본다.&lt;/strong&gt; AI는 겉으로 보이는 정보는 잘 정리하는데, 실제 사용감이나 최근에 바뀐 건 모른다. 그건 내가 확인한다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2차:&lt;/strong&gt; "이 서비스들이 사용자를 어떤 흐름으로 끌어들이는지 비교해줘."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI가 분석해준다. "이건 맞는 것 같은데, 이건 좀 다른데?" 하면서 다시 물어본다. 내가 직접 써봤으니까 그 차이를 안다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;3차:&lt;/strong&gt; "이걸 직접 만든다면, 우리 팀 상황은 이런데 어떤 방법이 현실적이야?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI는 우리 팀 사정을 모른다. 예산이 얼마인지, 누가 뭘 잘하는지. 내가 알려줘야 의미 있는 답이 나온다.&lt;/p&gt;

&lt;p&gt;이게 5번, 10번 반복된다. &lt;strong&gt;티키타카&lt;/strong&gt;다.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"사업계획서 써줘" 한 마디로는 이 깊이가 안 나온다.&lt;/em&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  🔹 처음 해보는 일에 도전할 때
&lt;/h3&gt;

&lt;p&gt;인스타그램 콘텐츠를 기획해야 할 일이 생겼다. 마케팅은 내 본업이 아니다. 뭘 모르는지도 모르는 상태였다.&lt;/p&gt;

&lt;p&gt;보통이면 &lt;em&gt;"인스타 게시물 3개 만들어줘"&lt;/em&gt;라고 했을 거다. AI가 밋밋한 걸 내놓으면 "AI 별로네" 하고 끝.&lt;/p&gt;

&lt;p&gt;나는 이렇게 했다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"나는 마케팅을 처음 해보는 사람인데, 인스타 콘텐츠를 기획하려고 해. &lt;strong&gt;내가 뭘 먼저 알아야 해?&lt;/strong&gt; 어떤 결정들을 내가 직접 해야 좋은 결과가 나와?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;"뭘 만들어줘"가 아니라 &lt;strong&gt;"내가 뭘 모르는지"&lt;/strong&gt;를 먼저 물어본 거다.&lt;/p&gt;

&lt;p&gt;AI가 체크리스트를 줬다. 타겟이 누군지, 어떤 느낌으로 갈 건지, 얼마나 자주 올릴 건지, 성과는 뭘로 볼 건지.&lt;/p&gt;

&lt;p&gt;이걸 보고 내가 결정할 수 있는 것과 아직 모르는 것을 구분했다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"타겟은 20대 후반~30대 초반이고, 스킨케어 리뷰야. 근데 어떤 톤으로 말해야 할지 모르겠어. 이 연령대한테 먹히는 스타일을 사례로 보여줘."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI가 예시를 보여주면 그중에서 내 스타일에 맞는 걸 고른다. 그다음에야 "이 톤으로 첫 게시물 3개 기획해줘"라고 시킨다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;결과물 차이는 하늘과 땅이다.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  정리하면 이거다
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❌ 보통:     "XX해줘" → 결과 받음 → 틀리면 "AI 별로네"

✅ 이렇게:   "이걸 하려면 뭘 알아야 해?"
             → 내가 모르는 걸 파악
             → AI가 모를 수도 있는 걸 파악
             → 주고받으면서 같이 만듦
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;같은 도구다. 결과가 다르다.&lt;/p&gt;


&lt;h2&gt;
  
  
  여기서부터가 진짜 하고 싶은 얘기다
&lt;/h2&gt;

&lt;p&gt;위에서 한 얘기는 사실 서론이다.&lt;/p&gt;

&lt;p&gt;AI 결과물이 좋아지는 건 &lt;strong&gt;부산물&lt;/strong&gt;이다. 진짜 중요한 건 따로 있다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;이렇게 쓰면 나 자신이 성장한다.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"내가 뭘 모르지?"를 매번 생각하는 습관이 들면, AI 없이도 사고방식이 달라진다. 회의할 때 "이 안건에서 우리가 놓치고 있는 게 뭐지?"를 먼저 생각하게 된다. 새로운 프로젝트를 시작할 때 "내가 모르는 영역이 어디지?"부터 파악하게 된다. AI를 끄고 나서도 이 습관은 남는다.&lt;/p&gt;

&lt;p&gt;아까 인스타 마케팅 사례를 다시 보자. 나는 마케팅을 전혀 몰랐다. 근데 AI한테 "내가 뭘 알아야 해?"를 물어보고, 체크리스트를 받고, 하나씩 결정해나가는 과정에서 &lt;strong&gt;마케팅의 기본 구조를 이해하게 됐다.&lt;/strong&gt; AI가 써준 게시물 3개를 얻은 게 아니다. 마케팅이 어떻게 돌아가는지를 알게 된 거다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"사업계획서 써줘"로 끝낸 사람은 &lt;strong&gt;사업계획서 하나&lt;/strong&gt;를 얻는다.&lt;br&gt;
티키타카를 한 사람은 &lt;strong&gt;그 분야의 시장 구조, 경쟁 상황, 현실적인 실행 방법&lt;/strong&gt;까지 머릿속에 들어온다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;"XX해줘"로 끝내는 사람은 AI가 없으면 아무것도 못 한다. 티키타카를 하는 사람은 AI 없이도 예전보다 더 잘한다. &lt;strong&gt;AI가 대신 해줘서 편해지는 게 아니라, AI랑 대화하는 과정 자체가 사고 훈련이 되는 거다.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;이 글에서 하고 싶은 말의 핵심이 이거다. 프롬프트 잘 쓰는 법이 아니다. 생각하는 방식이 바뀌면, AI 결과물도 좋아지고, 나도 성장한다. 순서가 이거다.&lt;/p&gt;


&lt;h2&gt;
  
  
  AI는 신이 아니다
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;엄청나게 똑똑한 신입사원이다.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;지식은 어마어마한데 우리 사정은 모른다. 일처리는 빠르다. 아는 것도 많다. 근데 맥락을 모른다. 어제 일어난 일을 모를 수도 있다. 자기가 모르는 것도 자신 있게 말한다.&lt;/p&gt;

&lt;p&gt;OpenClaw 사건도 마찬가지다. "정리해줘"는 이해했는데 "지우지 마"는 놓쳤다. 신입사원이 할 법한 실수다.&lt;/p&gt;

&lt;p&gt;이 신입사원한테 "알아서 해"라고 하면 안 된다.&lt;/p&gt;

&lt;p&gt;배경을 설명해주고, 뭘 해야 하는지 같이 정리하고, 중간중간 확인하고, 최종 판단은 내가 한다.&lt;/p&gt;

&lt;p&gt;이러면 세상에서 가장 유능한 파트너가 된다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;안 이러면 폐업한 고깃집을 예약하게 된다.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  오늘부터 하면 되는 세 가지
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;하나.&lt;/strong&gt; AI한테 뭔가 시키기 전에 &lt;em&gt;"나는 이 주제에 대해 뭘 모르지?"&lt;/em&gt; 생각해본다. 모르는 게 있으면 답을 구하기 전에 "내가 뭘 알아야 하는지"를 먼저 물어본다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;둘.&lt;/strong&gt; &lt;em&gt;"AI가 이걸 정확히 알까?"&lt;/em&gt; 생각해본다. 실시간 정보, 우리만의 맥락, 최신 변화. 이런 건 틀릴 수 있다. 내가 확인한다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;셋.&lt;/strong&gt; 큰 작업은 쪼갠다. "다 해줘"가 아니라 단계별로 나눠서 중간중간 확인하면서 간다.&lt;/p&gt;

&lt;p&gt;세 가지다. 대단한 거 아니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;근데 이거 하는 사람과 안 하는 사람의 차이는 꽤 크다.&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;&lt;em&gt;AI 시대에 가장 중요한 스킬은 코딩도 아니고 프롬프트 기술도 아니다.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;내가 뭘 모르는지 아는 능력이다.&lt;/em&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  📌 다음 편 예고
&lt;/h3&gt;

&lt;p&gt;이번 편은 AI와 대화를 잘 하는 법이었다.&lt;/p&gt;

&lt;p&gt;근데 AI가 채팅창 안에만 있을 필요는 없다. 요즘은 AI가 내 캘린더를 보고, 내 문서를 읽고, 내가 쓰는 도구들이랑 직접 연결돼서 일하는 세계가 열리고 있다. OpenClaw가 그래서 그렇게 화제가 된 거다.&lt;/p&gt;

&lt;p&gt;다음 편 — &lt;strong&gt;AI를 채팅창 밖으로 꺼내는 법.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/kiwibreaksme" class="crayons-btn crayons-btn--primary"&gt;시리즈 팔로우하기&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>korean</category>
    </item>
    <item>
      <title>Claude Code Hooks: Why Your AI Forgets Everything (5-Min Fix)</title>
      <dc:creator>@kiwibreaksme</dc:creator>
      <pubDate>Fri, 23 Jan 2026 10:38:52 +0000</pubDate>
      <link>https://forem.com/kiwibreaksme/claude-code-hooks-why-your-ai-forgets-everything-5-min-fix-17j8</link>
      <guid>https://forem.com/kiwibreaksme/claude-code-hooks-why-your-ai-forgets-everything-5-min-fix-17j8</guid>
      <description>&lt;p&gt;Every single session. The same conversation.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Use TypeScript strict mode."&lt;br&gt;
"Add JSDoc comments to functions."&lt;br&gt;
"Don't touch the .env file."&lt;br&gt;
"Ask me before making API calls."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I was spending the first 5 minutes of every Claude Code session just... &lt;strong&gt;repeating myself.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sound familiar?&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;AI coding assistants are incredibly powerful. But they have one fatal flaw:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They forget everything when the session ends.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your carefully explained coding standards? &lt;em&gt;Gone.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The architectural decisions you discussed for an hour? &lt;em&gt;Vanished.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;That one rule about never auto-committing? &lt;em&gt;It doesn't exist anymore.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I tried CLAUDE.md files. They help, but Claude doesn't always read them first. I tried system prompts. Too clunky.&lt;/p&gt;

&lt;p&gt;Then I discovered something that changed everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Feature Hiding in Plain Sight
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Claude Code Hooks.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hooks are shell commands that run automatically at specific moments in Claude's lifecycle. Not suggestions. Not guidelines Claude might follow. &lt;strong&gt;Actual code that executes every single time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;
  Think of it like this
  &lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CLAUDE.md&lt;/strong&gt; = "Hey Claude, please remember these rules" &lt;em&gt;(polite request)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hooks&lt;/strong&gt; = "These rules WILL run, no exceptions" &lt;em&gt;(enforced automation)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difference? One relies on AI cooperation. The other just... works.&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  How Hooks Work (Simple Explanation)
&lt;/h2&gt;

&lt;p&gt;Hooks trigger at specific events:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Event&lt;/th&gt;
&lt;th&gt;When It Fires&lt;/th&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SessionStart&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Session begins&lt;/td&gt;
&lt;td&gt;Load your coding rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PreToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Before any tool runs&lt;/td&gt;
&lt;td&gt;Block dangerous commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PostToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;After any tool runs&lt;/td&gt;
&lt;td&gt;Auto-format code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PreCompact&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Before context compression&lt;/td&gt;
&lt;td&gt;Preserve important context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Notification&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;When Claude needs attention&lt;/td&gt;
&lt;td&gt;Desktop alerts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You configure them in &lt;code&gt;.claude/settings.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"SessionStart"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo 'Your rules here'"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That's it. Every session, your rules load automatically.&lt;/p&gt;


&lt;h2&gt;
  
  
  5 Practical Hooks You Can Use Today
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1️⃣ Never Forget Your Coding Standards
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"SessionStart"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo '[RULES] 1) TypeScript strict mode 2) Add JSDoc to all functions 3) No console.log in production code'"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Every session starts with your rules. No more repeating yourself.&lt;/p&gt;


&lt;h3&gt;
  
  
  2️⃣ Protect Sensitive Files
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PreToolUse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Edit|Write"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"if echo &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;$CLAUDE_TOOL_INPUT&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; | grep -qE '(&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;.env|credentials|secrets)'; then echo 'BLOCKED: Cannot edit sensitive files' &amp;gt;&amp;amp;2; exit 2; fi"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Claude literally &lt;strong&gt;cannot&lt;/strong&gt; edit your &lt;code&gt;.env&lt;/code&gt; files. Not "won't"—&lt;strong&gt;can't&lt;/strong&gt;.&lt;/p&gt;


&lt;h3&gt;
  
  
  3️⃣ Auto-Format After Every Edit
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PostToolUse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Edit|Write"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"file=$(echo &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;$CLAUDE_TOOL_INPUT&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; | jq -r '.file_path'); if [[ &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;$file&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; == *.ts ]]; then npx prettier --write &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;$file&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;; fi"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Every TypeScript file gets formatted automatically. No more "can you run prettier?"&lt;/p&gt;


&lt;h3&gt;
  
  
  4️⃣ Get Desktop Notifications
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Notification"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"osascript -e 'display notification &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Claude needs your attention&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; with title &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Claude Code&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;'"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Walk away from your desk. Get pinged when Claude needs you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 Use &lt;code&gt;notify-send&lt;/code&gt; on Linux&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h3&gt;
  
  
  5️⃣ Remember Rules After Context Compression
&lt;/h3&gt;

&lt;p&gt;This one's important. When your conversation gets too long, Claude compresses the context—and often forgets your rules.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PreCompact"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo '[REMINDER] After compaction: TypeScript strict, JSDoc required, ask before API calls'"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Your rules survive the compression. Every time.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Setup (Literally 2 Minutes)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Create the settings file&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; .claude
&lt;span class="nb"&gt;touch&lt;/span&gt; .claude/settings.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Add your hooks&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"SessionStart"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo '[My Coding Rules] 1) Your rule here 2) Another rule'"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Commit it to your repo&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add .claude/settings.json
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Add Claude Code hooks"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;✅ Done. Every developer on your team now has the same rules.&lt;/p&gt;


&lt;h2&gt;
  
  
  But Wait—There's Still a Problem
&lt;/h2&gt;

&lt;p&gt;Hooks solve the "rules" problem beautifully. But there's something they can't do:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They can't remember WHY you built things a certain way.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;
  Imagine this scenario
  &lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Monday:&lt;/strong&gt; You and Claude decide to use JWT instead of sessions. Good reasons discussed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wednesday:&lt;/strong&gt; New session. Claude suggests using sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You:&lt;/strong&gt; "We already decided on JWT!"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude:&lt;/strong&gt; "Oh, I didn't know that."
&lt;/li&gt;
&lt;/ul&gt;




&lt;/p&gt;
&lt;p&gt;Hooks can remind Claude of rules. But they can't preserve the &lt;em&gt;reasoning&lt;/em&gt; behind your architectural decisions.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Missing Piece: Context in Code
&lt;/h2&gt;

&lt;p&gt;This is why I built &lt;strong&gt;CodeSyncer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bitjaru" rel="noopener noreferrer"&gt;
        bitjaru
      &lt;/a&gt; / &lt;a href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;
        codesyncer
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Claude forgets everything when the session ends. CodeSyncer makes it remember.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CodeSyncer&lt;/h1&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Claude forgets everything when the session ends. CodeSyncer makes it remember.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/codesyncer" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/842923a2d048dafe0e00e52153551a9a06dc6e2ba485f57e9a99c373cb9b6e97/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f636f646573796e6365722e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/bitjaru/codesyncer/./LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c838d998af2554b26475507dab26a507d34b3ec7eb133ff5b4eaa5e517d1b3cd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d436f6d6d6f6e73253230436c617573652d7265642e737667" alt="License"&gt;&lt;/a&gt;
&lt;a href="https://github.com/bitjaru/codesyncer/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/cb96194d86cb57e98c3da7562c8d1bef22f6026a321d76ee7b5acdbb0ff149d6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6269746a6172752f636f646573796e6365722e737667" alt="GitHub stars"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitjaru/codesyncer/./README.ko.md" rel="noopener noreferrer"&gt;한국어&lt;/a&gt; | English&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Problem → The Solution&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Without CodeSyncer&lt;/th&gt;
&lt;th&gt;With CodeSyncer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context loss&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Every session = start from scratch&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;@codesyncer-*&lt;/code&gt; tags = permanent memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Forgot to tag&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Changes go untracked&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;codesyncer watch&lt;/code&gt; catches everything&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rules forgotten&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI forgets guidelines mid-session&lt;/td&gt;
&lt;td&gt;Hooks auto-remind at optimal moments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dangerous inference&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI guesses prices, security, APIs&lt;/td&gt;
&lt;td&gt;Auto-pause on critical keywords&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Demo&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/bitjaru/codesyncer/main/demo.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbitjaru%2Fcodesyncer%2Fmain%2Fdemo.gif" alt="CodeSyncer Demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 1. Install&lt;/span&gt;
npm install -g codesyncer

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 2. Initialize&lt;/span&gt;
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; /path/to/your/project
codesyncer init

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 3. Let AI set up (say this to Claude)&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Read .claude/SETUP_GUIDE.md and follow the instructions&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 4. Start coding (say this each session)&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Read CLAUDE.md&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Upgrade&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install -g codesyncer@latest&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Core Features&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;🏷️ Tag System&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Put context IN your code. AI reads code, so it recovers context automatically.&lt;/p&gt;
&lt;div class="highlight highlight-source-ts notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;// &lt;span class="pl-k"&gt;@codesyncer&lt;/span&gt;-decision: [2024-01-15] Using JWT (session management is simpler)&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




&lt;p&gt;&lt;a href="https://github.com/bitjaru/codesyncer" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;⭐ Star CodeSyncer on GitHub&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The idea is simple: &lt;strong&gt;store context directly in your code comments.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
 * Authentication service
 *
 * @codesyncer-decision [2026-01-15] JWT over sessions (stateless, easier scaling)
 * @codesyncer-inference Token expiry 24h (standard for web apps)
 */&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AuthService&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// @codesyncer-rule Never log tokens, even in debug mode&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;credentials&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Credentials&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next session, Claude reads the code and &lt;em&gt;instantly&lt;/em&gt; knows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ What was decided&lt;/li&gt;
&lt;li&gt;✅ Why it was decided&lt;/li&gt;
&lt;li&gt;✅ What rules apply&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No repetition. No forgetting. The context lives in the code itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hooks + CodeSyncer = Complete Solution
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Solution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI forgets coding rules&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Hooks&lt;/strong&gt; → Auto-load every session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI forgets decisions&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;@codesyncer-decision&lt;/strong&gt; → Lives in code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI makes assumptions&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;@codesyncer-inference&lt;/strong&gt; → Documents reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI touches sensitive logic&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;@codesyncer-rule&lt;/strong&gt; → Explicit warnings&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;CodeSyncer even sets up the hooks for you:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx codesyncer init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;code&gt;.claude/settings.json&lt;/code&gt; with SessionStart and PreCompact hooks&lt;/li&gt;
&lt;li&gt;✅ &lt;code&gt;.claude/CLAUDE.md&lt;/code&gt; with your coding rules&lt;/li&gt;
&lt;li&gt;✅ Tag system ready to use&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/bitjaru/codesyncer" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;🚀 Try CodeSyncer Now&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option 1: Just Hooks (Manual)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; .claude
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'{"hooks":{"SessionStart":[{"hooks":[{"type":"command","command":"echo [RULES] Your rules here"}]}]}}'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; .claude/settings.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Option 2: Full Setup (Recommended)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx codesyncer init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hook&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SessionStart&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Load rules every session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PreCompact&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Preserve rules after compression&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PreToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Block dangerous operations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PostToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Auto-format, auto-lint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Notification&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Desktop alerts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Hooks&lt;/strong&gt; handle the "rules."&lt;br&gt;
&lt;strong&gt;CodeSyncer&lt;/strong&gt; handles the "reasoning."&lt;/p&gt;

&lt;p&gt;Together, your AI finally stops forgetting.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;a href="https://docs.anthropic.com/en/docs/claude-code/hooks" rel="noopener noreferrer"&gt;Claude Code Hooks Documentation&lt;/a&gt;&lt;br&gt;
🔗 &lt;a href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;CodeSyncer GitHub&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Have you tried hooks yet? What rules are you automating?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👇 Drop a comment below!&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>productivity</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>VibeCoding시대. 코딩면접 이제 바뀌어야한다.</title>
      <dc:creator>@kiwibreaksme</dc:creator>
      <pubDate>Fri, 23 Jan 2026 05:44:41 +0000</pubDate>
      <link>https://forem.com/kiwibreaksme/koding-jalhaneun-saram-baibeukoding-jalhaneun-saram-yeongu-gyeolgwaga-jeungmyeong-47f3</link>
      <guid>https://forem.com/kiwibreaksme/koding-jalhaneun-saram-baibeukoding-jalhaneun-saram-yeongu-gyeolgwaga-jeungmyeong-47f3</guid>
      <description>&lt;p&gt;흥미로운 연구 결과가 있습니다.&lt;/p&gt;

&lt;p&gt;2025년 7월, AI 안전 연구 기관 &lt;a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/" rel="noopener noreferrer"&gt;METR&lt;/a&gt;에서 발표한 연구입니다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;특정 조건에서, 숙련된 개발자가 AI 코딩 도구를 쓰면 오히려 19% 느려졌다.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;더 흥미로운 건?&lt;/p&gt;

&lt;p&gt;개발자들은 &lt;strong&gt;자신이 더 빨라졌다고 착각&lt;/strong&gt;했습니다.&lt;/p&gt;

&lt;p&gt;하지만 이 결과를 그대로 받아들이기 전에, 맥락을 알아야 합니다.&lt;/p&gt;




&lt;h2&gt;
  
  
  METR 연구: 무엇을 측정했나
&lt;/h2&gt;

&lt;h3&gt;
  
  
  연구 설계
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;대상&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;16명의 오픈소스 개발자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;코드베이스&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;평균 22K+ 스타, 100만+ 줄 (라이브러리/컴파일러 위주)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;경험&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;해당 레포에 평균 5년, 1500+ 커밋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;작업&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;실제 이슈 246개 (버그 수정, 기능, 리팩토링)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;도구&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Cursor Pro + Claude 3.5/3.7 Sonnet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  결과
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;수치&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;실제 결과&lt;/td&gt;
&lt;td&gt;AI 사용 시 &lt;strong&gt;19% 느려짐&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;개발자 사전 예측&lt;/td&gt;
&lt;td&gt;"24% 빨라질 것"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;개발자 사후 체감&lt;/td&gt;
&lt;td&gt;"20% 빨라진 것 같음"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  ⚠️ 중요한 맥락
&lt;/h3&gt;

&lt;p&gt;이 연구에는 특수한 조건이 있었습니다:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;극소수 샘플&lt;/strong&gt;: 단 16명&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;고품질 코드베이스&lt;/strong&gt;: Haskell 컴파일러 등 품질 기준이 극도로 높은 프로젝트&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;이미 극도로 익숙한 환경&lt;/strong&gt;: 5년간 기여한 자기 프로젝트&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;도구 숙련도 부족&lt;/strong&gt;: 56%만 Cursor 사용 경험 있음&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;연구진도 인정합니다:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"이 결과가 모든 개발자를 느리게 한다는 의미가 아님"&lt;br&gt;
"몇 달 후면 다른 결과가 나올 수 있음"&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  다른 연구들은 뭐라고 할까?
&lt;/h2&gt;

&lt;p&gt;METR만 보면 안 됩니다. 다른 연구들도 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  생산성 향상을 보여준 연구들
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;연구&lt;/th&gt;
&lt;th&gt;결과&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MIT/Princeton/UPenn&lt;/td&gt;
&lt;td&gt;AI로 &lt;strong&gt;26% 더 많은 작업 완료&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Copilot 연구&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;55.8% 더 빠름&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IBM 연구&lt;/td&gt;
&lt;td&gt;주니어 개발자 &lt;strong&gt;21-40% 생산성 향상&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;단, 이 연구들은 &lt;strong&gt;더 단순하고 고립된 작업&lt;/strong&gt;에서 진행됐습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  진짜 인사이트: 상황에 따라 다르다
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.seangoedecke.com/impact-of-ai-study/" rel="noopener noreferrer"&gt;Sean Goedecke의 분석&lt;/a&gt;이 핵심을 짚습니다:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"AI의 진짜 가치는 개발자가 &lt;strong&gt;comfort zone 밖의 작업&lt;/strong&gt;을 할 때 나타난다."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;5년간 1500커밋 한 자기 프로젝트에서 AI 도움이 얼마나 필요할까요?&lt;br&gt;
반면, 처음 보는 코드베이스나 새로운 기술을 다룰 때는?&lt;/p&gt;




&lt;h2&gt;
  
  
  주니어 vs 시니어: 역설적 결과
&lt;/h2&gt;

&lt;h3&gt;
  
  
  생산성 향상은 주니어가 더 큼
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;경력&lt;/th&gt;
&lt;th&gt;AI로 인한 생산성 변화&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;주니어 (0-2년)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+21% ~ +40%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;시니어 (10년+)&lt;/td&gt;
&lt;td&gt;+7% ~ +16%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://itrevolution.com/articles/new-research-reveals-ai-coding-assistants-boost-developer-productivity-by-26-what-it-leaders-need-to-know/" rel="noopener noreferrer"&gt;IT Revolution&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  하지만 프로덕션 배포는 시니어가 더 많이
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.fastly.com/blog/senior-developers-ship-more-ai-code" rel="noopener noreferrer"&gt;Fastly의 2025년 조사&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;시니어 개발자가 AI 생성 코드를 프로덕션에 2.5배 더 많이 배포한다.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;시니어 (10년+): 33%가 "절반 이상이 AI 코드"&lt;/li&gt;
&lt;li&gt;주니어 (0-2년): 13%만 "절반 이상이 AI 코드"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;왜?&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"수십 년간의 패턴 인식. 좋은 코드가 어떻게 생겼는지, 뭘 요청해야 하는지, AI가 언제 틀리는지 안다."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  핵심 인사이트: 다른 능력이 필요하다
&lt;/h2&gt;

&lt;p&gt;여러 연구를 종합하면 한 가지가 명확해집니다:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;기존 "코딩 잘함"과 "바이브코딩 생산성"은 다른 능력이다.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  기존 "코딩 잘함"의 정의
&lt;/h3&gt;

&lt;ul&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&gt;LeetCode 잘 푸는 사람 = 코딩 잘하는 사람.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;이 공식이 바이브코딩에선 통하지 않습니다.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  바이브코딩 시대의 새로운 능력
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. 메타인지 (Metacognition)
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"AI가 지금 뭘 모르고 있는지 아는 능력"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;METR 연구에서 개발자들이 착각한 이유:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI 출력을 &lt;strong&gt;과신&lt;/strong&gt;하거나&lt;/li&gt;
&lt;li&gt;AI 출력을 &lt;strong&gt;과소평가&lt;/strong&gt;하거나&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;바이브코딩 잘하는 사람:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI의 한계를 정확히 파악&lt;/li&gt;
&lt;li&gt;어디서 AI가 틀릴지 예측&lt;/li&gt;
&lt;li&gt;언제 직접 코딩이 더 빠른지 판단&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. 문맥 파악 (Context Awareness)
&lt;/h3&gt;

&lt;p&gt;시니어가 AI 코드를 더 많이 배포하는 이유:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"좋은 코드가 어떻게 생겼는지, 뭘 요청해야 하는지, AI가 언제 틀리는지 안다."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;이건 알고리즘 실력이 아닙니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;문맥을 읽는 능력:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;이 프로젝트에서 이 코드가 적절한가?&lt;/li&gt;
&lt;li&gt;팀의 컨벤션과 맞는가?&lt;/li&gt;
&lt;li&gt;비즈니스 요구사항을 충족하는가?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. AI 대화 스킬 (Prompt Craft)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.frontiersin.org/journals/education/articles/10.3389/feduc.2024.1366434/full" rel="noopener noreferrer"&gt;Frontiers in Education 연구&lt;/a&gt;는 프롬프트 엔지니어링을 "21세기 핵심 역량"으로 정의합니다.&lt;/p&gt;

&lt;p&gt;필요한 능력:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;비판적 사고&lt;/strong&gt;: AI 출력 검증&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;창의적 표현&lt;/strong&gt;: 의도를 명확하게 전달&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;언어적 감각&lt;/strong&gt;: 모호함 없는 지시&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LeetCode는 이걸 테스트하지 않습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. 커뮤니케이션
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.cogentuniversity.com/post/tech-hiring-trends-2025-why-soft-skills-matter-more-than-ever" rel="noopener noreferrer"&gt;92%의 채용 담당자&lt;/a&gt;가 말합니다:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"소프트 스킬이 기술 스킬만큼 중요하다."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://proresumes.io/soft-skills-for-developers/" rel="noopener noreferrer"&gt;200만 개 기술직 채용 공고&lt;/a&gt; 분석 결과:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;1위 요구 스킬: 커뮤니케이션&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI가 코딩을 대신할수록, &lt;strong&gt;인간만의 협업 능력&lt;/strong&gt;이 차별화 요소가 됩니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. 적응력과 학습 능력
&lt;/h3&gt;

&lt;p&gt;AI 도구는 빠르게 변합니다. METR 연구진도 말했듯이:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"몇 달 후면 다른 결과가 나올 수 있음"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;2025년 초 Claude 3.5와 2026년 모델은 다릅니다.&lt;br&gt;
&lt;strong&gt;새로운 도구에 빠르게 적응하는 능력&lt;/strong&gt;이 중요해집니다.&lt;/p&gt;




&lt;h2&gt;
  
  
  경고: 40%는 이해 못 한 코드를 배포한다
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.secondtalent.com/resources/vibe-coding-statistics/" rel="noopener noreferrer"&gt;Vibe Coding Statistics&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;주니어 개발자의 40% 이상이 완전히 이해하지 못한 AI 생성 코드를 배포한다.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;이게 왜 문제인가?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔴 기술 부채 누적&lt;/li&gt;
&lt;li&gt;🔴 보안 취약점 (AI 코드의 45%에 보안 결함)&lt;/li&gt;
&lt;li&gt;🔴 디버깅 불가능&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;메타인지 없이 바이브코딩 = 폭탄 돌리기&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  새로운 역량 체크리스트
&lt;/h2&gt;

&lt;p&gt;바이브코딩 시대에 필요한 능력:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;역량&lt;/th&gt;
&lt;th&gt;설명&lt;/th&gt;
&lt;th&gt;LeetCode로 측정?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;메타인지&lt;/td&gt;
&lt;td&gt;AI의 한계 파악&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;문맥 파악&lt;/td&gt;
&lt;td&gt;프로젝트/팀/비즈니스 이해&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 대화 스킬&lt;/td&gt;
&lt;td&gt;명확한 의도 전달&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;커뮤니케이션&lt;/td&gt;
&lt;td&gt;협업 및 설명 능력&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;적응력&lt;/td&gt;
&lt;td&gt;새 도구/기술 학습&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;비판적 사고&lt;/td&gt;
&lt;td&gt;AI 출력 검증&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;기존 코딩 테스트는 이걸 측정하지 못합니다.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  결론: 새로운 시대, 새로운 역량
&lt;/h2&gt;

&lt;p&gt;여러 연구를 종합하면:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AI 코딩 도구의 효과는 상황에 따라 다르다&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;익숙한 코드베이스 vs 새로운 환경&lt;/li&gt;
&lt;li&gt;단순한 작업 vs 복잡한 작업&lt;/li&gt;
&lt;li&gt;도구 숙련도&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;기존 코딩 실력 ≠ 바이브코딩 생산성&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;알고리즘 실력만으로는 부족&lt;/li&gt;
&lt;li&gt;메타인지, 문맥 파악, 커뮤니케이션이 중요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;시니어의 강점은 "경험에서 오는 감각"&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI가 언제 틀리는지 아는 것&lt;/li&gt;
&lt;li&gt;좋은 코드가 어떻게 생겼는지 아는 것&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;바이브코딩 시대의 진짜 실력:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧠 AI가 뭘 모르는지 아는 것&lt;/li&gt;
&lt;li&gt;🎯 AI에게 뭘 시켜야 하는지 아는 것&lt;/li&gt;
&lt;li&gt;✅ AI가 틀렸을 때 알아차리는 것&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;메타인지, 문맥 파악, 커뮤니케이션.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;이게 새로운 시대의 코딩 실력입니다.&lt;/p&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/" rel="noopener noreferrer"&gt;METR Study: Measuring AI Impact on Developer Productivity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.seangoedecke.com/impact-of-ai-study/" rel="noopener noreferrer"&gt;Sean Goedecke: METR's AI productivity study is really good&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastly.com/blog/senior-developers-ship-more-ai-code" rel="noopener noreferrer"&gt;Fastly: Senior Developers Ship 2.5x More AI Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://itrevolution.com/articles/new-research-reveals-ai-coding-assistants-boost-developer-productivity-by-26-what-it-leaders-need-to-know/" rel="noopener noreferrer"&gt;IT Revolution: AI Coding Assistants Boost Productivity 26%&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.secondtalent.com/resources/vibe-coding-statistics/" rel="noopener noreferrer"&gt;Vibe Coding Statistics 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.frontiersin.org/journals/education/articles/10.3389/feduc.2024.1366434/full" rel="noopener noreferrer"&gt;Frontiers: Prompt Engineering as 21st Century Skill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cogentuniversity.com/post/tech-hiring-trends-2025-why-soft-skills-matter-more-than-ever" rel="noopener noreferrer"&gt;Tech Hiring Trends 2025: Why Soft Skills Matter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.technologyreview.com/2025/12/15/1128352/rise-of-ai-coding-developers-2026/" rel="noopener noreferrer"&gt;MIT Technology Review: AI Coding is Everywhere&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;여러분은 어떻게 생각하시나요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👇 댓글로 의견 공유해주세요!&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>ai</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>skills.sh: The Skill Marketplace for AI Coding Agents You're Missing Out On</title>
      <dc:creator>@kiwibreaksme</dc:creator>
      <pubDate>Fri, 23 Jan 2026 05:28:12 +0000</pubDate>
      <link>https://forem.com/kiwibreaksme/skillssh-the-skill-marketplace-for-ai-coding-agents-youre-missing-out-on-1afg</link>
      <guid>https://forem.com/kiwibreaksme/skillssh-the-skill-marketplace-for-ai-coding-agents-youre-missing-out-on-1afg</guid>
      <description>&lt;p&gt;Ever had these thoughts while using AI coding agents?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I'm tired of explaining React best practices every time..."&lt;br&gt;
"I wish I could save my Tailwind rules somewhere..."&lt;br&gt;
"How do other people set up their AI?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;It's already been done for you.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What is skills.sh?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://skills.sh" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;🔗 Visit skills.sh&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Open Agent Skills Ecosystem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A marketplace for &lt;strong&gt;injecting expert knowledge&lt;/strong&gt; into AI agents (Claude Code, Cursor, Copilot, etc.).&lt;/p&gt;

&lt;p&gt;In simple terms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧠 &lt;strong&gt;Install other people's best practices&lt;/strong&gt; into your AI&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;1 minute install&lt;/strong&gt;, no complex setup&lt;/li&gt;
&lt;li&gt;🔓 &lt;strong&gt;Open source&lt;/strong&gt;, free&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Supported AI Agents
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Support&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Copilot&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI Codex&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;+15 more&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Works with almost every AI coding tool out there.&lt;/p&gt;




&lt;h2&gt;
  
  
  Top 10 Most Popular Skills
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rank&lt;/th&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;Installs&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1️⃣&lt;/td&gt;
&lt;td&gt;vercel-react-best-practices&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;32.6K&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;React best practices&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2️⃣&lt;/td&gt;
&lt;td&gt;web-design-guidelines&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;24.7K&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Web design guide&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3️⃣&lt;/td&gt;
&lt;td&gt;remotion-best-practices&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;12.7K&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Video editing (Remotion)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4️⃣&lt;/td&gt;
&lt;td&gt;frontend-design&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4.0K&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Frontend design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5️⃣&lt;/td&gt;
&lt;td&gt;skill-creator&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.6K&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Skill for creating skills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6️⃣&lt;/td&gt;
&lt;td&gt;vue-best-practices&lt;/td&gt;
&lt;td&gt;2.1K&lt;/td&gt;
&lt;td&gt;Vue.js&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7️⃣&lt;/td&gt;
&lt;td&gt;three-js-best-practices&lt;/td&gt;
&lt;td&gt;1.8K&lt;/td&gt;
&lt;td&gt;Three.js 3D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8️⃣&lt;/td&gt;
&lt;td&gt;supabase-best-practices&lt;/td&gt;
&lt;td&gt;1.5K&lt;/td&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9️⃣&lt;/td&gt;
&lt;td&gt;marketing-guidelines&lt;/td&gt;
&lt;td&gt;1.2K&lt;/td&gt;
&lt;td&gt;Marketing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔟&lt;/td&gt;
&lt;td&gt;tailwind-best-practices&lt;/td&gt;
&lt;td&gt;1.0K&lt;/td&gt;
&lt;td&gt;Tailwind CSS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;30,000+ developers&lt;/strong&gt; using React are already on this.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Install
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Method 1: CLI (Recommended)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vercel-labs/vercel-react-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;One line.&lt;/strong&gt; That's it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Method 2: Inside Claude Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/skills install vercel-labs/vercel-react-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Verify Installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  How Does It Actually Work?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Before (Without Skills)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Me: Create a React component

Claude: (generates basic code)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  After (With Skills Installed)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Me: Create a React component

Claude: (applies Vercel's best practices)
- Functional component
- TypeScript type definitions
- Proper hook usage
- Performance optimization
- Accessibility considerations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Same question, different quality.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Recommended Skill Combos
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🎨 Frontend Developer
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vercel-labs/vercel-react-best-practices
npx skills add vercel-labs/web-design-guidelines
npx skills add vercel-labs/frontend-design
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ⚡ Next.js + Supabase
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vercel-labs/vercel-react-best-practices
npx skills add supabase/supabase-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🎬 Video Editing (Remotion)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add remotion-dev/remotion-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🎯 Vue.js Developer
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vuejs/vue-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🌐 Full Stack
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vercel-labs/vercel-react-best-practices
npx skills add supabase/supabase-best-practices
npx skills add vercel-labs/web-design-guidelines
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Skill Structure (For the Curious)
&lt;/h2&gt;

&lt;p&gt;A skill is essentially &lt;strong&gt;one SKILL.md file&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-skill/
├── SKILL.md           # Core (required)
├── reference.md       # Detailed docs (optional)
├── examples.md        # Examples (optional)
└── scripts/           # Scripts (optional)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  SKILL.md Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;react-best-practices&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;React best practices. Auto-applied when writing components.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gu"&gt;## Component Rules&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Use functional components
&lt;span class="p"&gt;2.&lt;/span&gt; Define props with TypeScript interfaces
&lt;span class="p"&gt;3.&lt;/span&gt; useReducer over useState (complex state)
&lt;span class="p"&gt;4.&lt;/span&gt; Always specify useEffect dependencies
&lt;span class="p"&gt;5.&lt;/span&gt; Memoize only when necessary

&lt;span class="gu"&gt;## Don'ts&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Class components
&lt;span class="p"&gt;-&lt;/span&gt; any type
&lt;span class="p"&gt;-&lt;/span&gt; Inline styles (use Tailwind)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI reads this file and follows the rules.&lt;/p&gt;




&lt;h2&gt;
  
  
  Create Your Own Skill
&lt;/h2&gt;

&lt;p&gt;Using others' skills is great, but you can also create &lt;strong&gt;project-specific skills&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create Folder
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; .claude/skills/my-rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Write SKILL.md
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-rules&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Our team's coding rules&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gu"&gt;## Required&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Variables in camelCase
&lt;span class="p"&gt;2.&lt;/span&gt; Functions under 20 lines
&lt;span class="p"&gt;3.&lt;/span&gt; Comments explain "why"
&lt;span class="p"&gt;4.&lt;/span&gt; Error handling required

&lt;span class="gu"&gt;## Forbidden&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; console.log (production)
&lt;span class="p"&gt;-&lt;/span&gt; any type
&lt;span class="p"&gt;-&lt;/span&gt; Magic numbers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Done
&lt;/h3&gt;

&lt;p&gt;Now it auto-applies when you code.&lt;/p&gt;




&lt;h2&gt;
  
  
  skills.sh vs Manual Prompts
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Manual Prompts&lt;/th&gt;
&lt;th&gt;skills.sh&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Type every time&lt;/td&gt;
&lt;td&gt;Required&lt;/td&gt;
&lt;td&gt;❌ Not needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consistency&lt;/td&gt;
&lt;td&gt;🔴 Low&lt;/td&gt;
&lt;td&gt;🟢 High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sharing&lt;/td&gt;
&lt;td&gt;Difficult&lt;/td&gt;
&lt;td&gt;✅ Easy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Verified&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ Community verified&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup time&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;1 minute&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;
  Is it free?
  &lt;br&gt;
Yes, it's open source and free.&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  Which AIs does it work with?
  &lt;br&gt;
Claude Code, Cursor, Copilot, Gemini, and 20+ more.&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  Do skills conflict with each other?
  &lt;br&gt;
Usually not. Each skill is designed to focus on a specific domain.&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  Can I share my own skills?
  &lt;br&gt;
Yes, push to GitHub and register on skills.sh.&lt;br&gt;


&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Install skill&lt;/td&gt;
&lt;td&gt;&lt;code&gt;npx skills add owner/repo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;List installed&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/skills&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Call directly&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/skill-name&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create your own&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.claude/skills/name/SKILL.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Takes 1 minute.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install the most popular React skill&lt;/span&gt;
npx skills add vercel-labs/vercel-react-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now when you write React code, Vercel's best practices are automatically applied.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;a href="https://skills.sh" rel="noopener noreferrer"&gt;skills.sh - Skill Marketplace&lt;/a&gt;&lt;br&gt;
🔗 &lt;a href="https://skills.sh/docs" rel="noopener noreferrer"&gt;skills.sh Docs&lt;/a&gt;&lt;br&gt;
🔗 &lt;a href="https://code.claude.com/docs/en/skills" rel="noopener noreferrer"&gt;Claude Code Skills Official Docs&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What skills are you using?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>AI 코딩 에이전트용 스킬 마켓플레이스 (몰랐으면 손해)</title>
      <dc:creator>@kiwibreaksme</dc:creator>
      <pubDate>Fri, 23 Jan 2026 05:24:58 +0000</pubDate>
      <link>https://forem.com/kiwibreaksme/ai-koding-eijeonteuyong-seukil-makespeulreiseu-molrasseumyeon-sonhae-p2m</link>
      <guid>https://forem.com/kiwibreaksme/ai-koding-eijeonteuyong-seukil-makespeulreiseu-molrasseumyeon-sonhae-p2m</guid>
      <description>&lt;p&gt;AI 코딩 에이전트 쓰면서 이런 생각 해본 적 있음?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"React 베스트 프랙티스 매번 설명하기 귀찮은데..."&lt;br&gt;
"Tailwind 쓰는 규칙 어디 저장해두고 싶다..."&lt;br&gt;
"다른 사람들은 어떻게 설정해서 쓰지?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;이미 다 만들어져 있습니다.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  skills.sh가 뭔데?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://skills.sh" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;🔗 skills.sh 바로가기&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Open Agent Skills Ecosystem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI 에이전트(Claude Code, Cursor, Copilot 등)에 &lt;strong&gt;전문 지식을 주입&lt;/strong&gt;하는 스킬 마켓플레이스입니다.&lt;/p&gt;

&lt;p&gt;쉽게 말해:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧠 &lt;strong&gt;남들이 만든 베스트 프랙티스&lt;/strong&gt;를 내 AI에 장착&lt;/li&gt;
&lt;li&gt;⚡ &lt;strong&gt;설치 1분&lt;/strong&gt;, 복잡한 설정 없음&lt;/li&gt;
&lt;li&gt;🔓 &lt;strong&gt;오픈소스&lt;/strong&gt;, 무료&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  지원하는 AI 에이전트
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;에이전트&lt;/th&gt;
&lt;th&gt;지원&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Copilot&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI Codex&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;+15개 이상&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;거의 모든 AI 코딩 도구에서 작동합니다.&lt;/p&gt;




&lt;h2&gt;
  
  
  인기 스킬 TOP 10
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;순위&lt;/th&gt;
&lt;th&gt;스킬&lt;/th&gt;
&lt;th&gt;설치 수&lt;/th&gt;
&lt;th&gt;용도&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1️⃣&lt;/td&gt;
&lt;td&gt;vercel-react-best-practices&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;32.6K&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;React 베스트 프랙티스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2️⃣&lt;/td&gt;
&lt;td&gt;web-design-guidelines&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;24.7K&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;웹 디자인 가이드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3️⃣&lt;/td&gt;
&lt;td&gt;remotion-best-practices&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;12.7K&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;영상 편집 (Remotion)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4️⃣&lt;/td&gt;
&lt;td&gt;frontend-design&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;4.0K&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;프론트엔드 디자인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5️⃣&lt;/td&gt;
&lt;td&gt;skill-creator&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.6K&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;스킬 만드는 스킬&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6️⃣&lt;/td&gt;
&lt;td&gt;vue-best-practices&lt;/td&gt;
&lt;td&gt;2.1K&lt;/td&gt;
&lt;td&gt;Vue.js&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7️⃣&lt;/td&gt;
&lt;td&gt;three-js-best-practices&lt;/td&gt;
&lt;td&gt;1.8K&lt;/td&gt;
&lt;td&gt;Three.js 3D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8️⃣&lt;/td&gt;
&lt;td&gt;supabase-best-practices&lt;/td&gt;
&lt;td&gt;1.5K&lt;/td&gt;
&lt;td&gt;Supabase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9️⃣&lt;/td&gt;
&lt;td&gt;marketing-guidelines&lt;/td&gt;
&lt;td&gt;1.2K&lt;/td&gt;
&lt;td&gt;마케팅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔟&lt;/td&gt;
&lt;td&gt;tailwind-best-practices&lt;/td&gt;
&lt;td&gt;1.0K&lt;/td&gt;
&lt;td&gt;Tailwind CSS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;React 쓰는 개발자 &lt;strong&gt;3만 명&lt;/strong&gt;이 이미 쓰고 있음.&lt;/p&gt;




&lt;h2&gt;
  
  
  설치 방법
&lt;/h2&gt;

&lt;h3&gt;
  
  
  방법 1: CLI (추천)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vercel-labs/vercel-react-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;한 줄&lt;/strong&gt;이면 끝.&lt;/p&gt;

&lt;h3&gt;
  
  
  방법 2: Claude Code 내에서
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/skills install vercel-labs/vercel-react-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  설치 확인
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  실제로 어떻게 작동하나?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Before (스킬 없이)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;나: React 컴포넌트 만들어줘

Claude: (그냥 기본적인 코드 생성)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  After (스킬 설치 후)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;나: React 컴포넌트 만들어줘

Claude: (Vercel의 베스트 프랙티스 적용)
- 함수형 컴포넌트
- TypeScript 타입 정의
- 적절한 훅 사용
- 성능 최적화 고려
- 접근성 고려
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;같은 질문, 다른 품질.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  추천 스킬 조합
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🎨 프론트엔드 개발자
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vercel-labs/vercel-react-best-practices
npx skills add vercel-labs/web-design-guidelines
npx skills add vercel-labs/frontend-design
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ⚡ Next.js + Supabase
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vercel-labs/vercel-react-best-practices
npx skills add supabase/supabase-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🎬 영상 편집 (Remotion)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add remotion-dev/remotion-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🎯 Vue.js 개발자
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vuejs/vue-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🌐 풀스택
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add vercel-labs/vercel-react-best-practices
npx skills add supabase/supabase-best-practices
npx skills add vercel-labs/web-design-guidelines
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  스킬 구조 (궁금한 사람만)
&lt;/h2&gt;

&lt;p&gt;스킬은 결국 &lt;strong&gt;SKILL.md 파일 하나&lt;/strong&gt;입니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-skill/
├── SKILL.md           # 핵심 (필수)
├── reference.md       # 상세 문서 (선택)
├── examples.md        # 예제 (선택)
└── scripts/           # 스크립트 (선택)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  SKILL.md 예시
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;react-best-practices&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;React 베스트 프랙티스. 컴포넌트 작성 시 자동 적용.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gu"&gt;## 컴포넌트 작성 규칙&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; 함수형 컴포넌트 사용
&lt;span class="p"&gt;2.&lt;/span&gt; Props는 TypeScript 인터페이스로 정의
&lt;span class="p"&gt;3.&lt;/span&gt; useState보다 useReducer (복잡한 상태)
&lt;span class="p"&gt;4.&lt;/span&gt; useEffect 의존성 배열 명시
&lt;span class="p"&gt;5.&lt;/span&gt; 메모이제이션은 필요할 때만

&lt;span class="gu"&gt;## 금지 사항&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; class 컴포넌트
&lt;span class="p"&gt;-&lt;/span&gt; any 타입
&lt;span class="p"&gt;-&lt;/span&gt; 인라인 스타일 (Tailwind 사용)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AI가 이 파일을 읽고 규칙을 따릅니다.&lt;/p&gt;




&lt;h2&gt;
  
  
  내 스킬 만들기
&lt;/h2&gt;

&lt;p&gt;남의 거 쓰는 것도 좋지만, &lt;strong&gt;내 프로젝트 전용 스킬&lt;/strong&gt;도 만들 수 있음.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: 폴더 생성
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; .claude/skills/my-rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: SKILL.md 작성
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-rules&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;우리 팀 코딩 규칙&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gu"&gt;## 필수 규칙&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; 변수명은 camelCase
&lt;span class="p"&gt;2.&lt;/span&gt; 함수는 20줄 이하
&lt;span class="p"&gt;3.&lt;/span&gt; 주석은 "왜"를 설명
&lt;span class="p"&gt;4.&lt;/span&gt; 에러 핸들링 필수

&lt;span class="gu"&gt;## 금지&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; console.log (프로덕션)
&lt;span class="p"&gt;-&lt;/span&gt; any 타입
&lt;span class="p"&gt;-&lt;/span&gt; 매직 넘버
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: 끝
&lt;/h3&gt;

&lt;p&gt;이제 코드 짤 때 자동으로 적용됨.&lt;/p&gt;




&lt;h2&gt;
  
  
  skills.sh vs 직접 프롬프트
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;직접 프롬프트&lt;/th&gt;
&lt;th&gt;skills.sh&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;매번 입력&lt;/td&gt;
&lt;td&gt;필요&lt;/td&gt;
&lt;td&gt;❌ 불필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;일관성&lt;/td&gt;
&lt;td&gt;🔴 낮음&lt;/td&gt;
&lt;td&gt;🟢 높음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;공유&lt;/td&gt;
&lt;td&gt;어려움&lt;/td&gt;
&lt;td&gt;✅ 쉬움&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;검증됨&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅ 커뮤니티 검증&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;설치&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;1분&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;p&gt;
  무료인가요?
  &lt;br&gt;
네, 오픈소스 기반이라 무료입니다.&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  어떤 AI에서 작동하나요?
  &lt;br&gt;
Claude Code, Cursor, Copilot, Gemini 등 20개 이상 지원합니다.&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  스킬끼리 충돌하나요?
  &lt;br&gt;
보통 안 합니다. 각 스킬은 특정 도메인에 집중하도록 설계되어 있습니다.&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  내가 만든 스킬 공유할 수 있나요?
  &lt;br&gt;
네, GitHub에 올리고 skills.sh에 등록하면 됩니다.&lt;br&gt;


&lt;/p&gt;




&lt;h2&gt;
  
  
  요약
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;할 일&lt;/th&gt;
&lt;th&gt;명령어&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;스킬 설치&lt;/td&gt;
&lt;td&gt;&lt;code&gt;npx skills add owner/repo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;설치 목록 확인&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/skills&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;스킬 직접 호출&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/skill-name&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;내 스킬 만들기&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.claude/skills/name/SKILL.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  시작하기
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1분이면 됩니다.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 가장 인기 있는 React 스킬 설치&lt;/span&gt;
npx skills add vercel-labs/vercel-react-best-practices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;이제 React 코드 짜면 자동으로 Vercel 베스트 프랙티스가 적용됩니다.&lt;/p&gt;




&lt;h2&gt;
  
  
  링크
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;a href="https://skills.sh" rel="noopener noreferrer"&gt;skills.sh - 스킬 마켓플레이스&lt;/a&gt;&lt;br&gt;
🔗 &lt;a href="https://skills.sh/docs" rel="noopener noreferrer"&gt;skills.sh 문서&lt;/a&gt;&lt;br&gt;
🔗 &lt;a href="https://code.claude.com/docs/en/skills" rel="noopener noreferrer"&gt;Claude Code Skills 공식 문서&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;어떤 스킬 쓰고 계신가요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👇 댓글로 추천해주세요!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Claude Code Hooks 완벽 가이드: AI가 맨날 까먹는 이유와 해결법</title>
      <dc:creator>@kiwibreaksme</dc:creator>
      <pubDate>Fri, 23 Jan 2026 04:43:20 +0000</pubDate>
      <link>https://forem.com/kiwibreaksme/claude-code-hooks-wanbyeog-gaideu-aiga-maennal-ggameogneun-iyuwa-haegyeolbeob-4n03</link>
      <guid>https://forem.com/kiwibreaksme/claude-code-hooks-wanbyeog-gaideu-aiga-maennal-ggameogneun-iyuwa-haegyeolbeob-4n03</guid>
      <description>&lt;p&gt;매번. 똑같은. 대화.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"TypeScript strict mode 써."&lt;br&gt;
"함수마다 JSDoc 주석 달아."&lt;br&gt;
".env 파일은 건드리지 마."&lt;br&gt;
"API 호출 전에 나한테 물어봐."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;저는 Claude Code 세션 시작할 때마다 첫 5분을 이런 얘기 반복하는 데 쓰고 있었습니다.&lt;/p&gt;

&lt;p&gt;혹시 &lt;strong&gt;공감&lt;/strong&gt;되시나요?&lt;/p&gt;




&lt;h2&gt;
  
  
  아무도 말 안 하는 문제
&lt;/h2&gt;

&lt;p&gt;AI 코딩 어시스턴트는 정말 강력합니다. 근데 치명적인 약점이 하나 있어요.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;세션 끝나면 다 잊어버림.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;어제 1시간 동안 설명한 코딩 규칙? &lt;em&gt;사라짐.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;그제 논의한 아키텍처 결정? &lt;em&gt;없던 일.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;"절대 자동 커밋하지 마"라고 했던 거? &lt;em&gt;기억 못함.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CLAUDE.md 파일도 써봤습니다. 도움은 되는데, Claude가 항상 먼저 읽지는 않더라고요. 시스템 프롬프트도 써봤는데 너무 번거롭고.&lt;/p&gt;

&lt;p&gt;그러다가 모든 걸 바꾼 기능을 발견했습니다.&lt;/p&gt;




&lt;h2&gt;
  
  
  숨겨진 기능: Claude Code Hooks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hooks&lt;/strong&gt;는 Claude의 라이프사이클 특정 시점에 자동으로 실행되는 셸 명령어입니다. 제안이 아니에요. Claude가 따를 수도 있는 가이드라인이 아닙니다. &lt;strong&gt;매번 무조건 실행되는 실제 코드&lt;/strong&gt;입니다.&lt;/p&gt;

&lt;p&gt;
  이렇게 생각하면 쉬워요
  &lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CLAUDE.md&lt;/strong&gt; = "Claude야, 이 규칙들 기억해줘" &lt;em&gt;(정중한 부탁)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hooks&lt;/strong&gt; = "이 규칙은 무조건 실행됨" &lt;em&gt;(강제 자동화)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;차이점? 하나는 AI의 협조에 의존하고, 다른 하나는 그냥... 작동합니다.&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  Hooks 작동 원리 (쉬운 설명)
&lt;/h2&gt;

&lt;p&gt;Hooks는 특정 이벤트에서 발동됩니다:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;이벤트&lt;/th&gt;
&lt;th&gt;발동 시점&lt;/th&gt;
&lt;th&gt;활용 예시&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SessionStart&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;세션 시작&lt;/td&gt;
&lt;td&gt;코딩 규칙 로드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PreToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;도구 실행 전&lt;/td&gt;
&lt;td&gt;위험한 명령 차단&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PostToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;도구 실행 후&lt;/td&gt;
&lt;td&gt;코드 자동 포맷팅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PreCompact&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;컨텍스트 압축 전&lt;/td&gt;
&lt;td&gt;중요 컨텍스트 보존&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Notification&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;알림 필요 시&lt;/td&gt;
&lt;td&gt;데스크톱 알림&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;설정은 &lt;code&gt;.claude/settings.json&lt;/code&gt;에서 합니다:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"SessionStart"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo '여기에 규칙 작성'"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;끝입니다. 매 세션마다 규칙이 자동으로 로드됩니다.&lt;/p&gt;


&lt;h2&gt;
  
  
  지금 바로 쓸 수 있는 실용적인 Hooks 5가지
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1️⃣ 코딩 규칙 자동 로드
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"SessionStart"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo '[규칙] 1) TypeScript strict mode 2) 모든 함수에 JSDoc 3) 프로덕션에 console.log 금지'"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;매 세션이 규칙과 함께 시작됩니다. 더 이상 반복할 필요 없음.&lt;/p&gt;


&lt;h3&gt;
  
  
  2️⃣ 민감한 파일 보호
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PreToolUse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Edit|Write"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"if echo &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;$CLAUDE_TOOL_INPUT&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; | grep -qE '(&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;.env|credentials|secrets)'; then echo '차단됨: 민감한 파일 수정 불가' &amp;gt;&amp;amp;2; exit 2; fi"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Claude가 &lt;code&gt;.env&lt;/code&gt; 파일을 수정 &lt;strong&gt;못 합니다&lt;/strong&gt;. "안 하는" 게 아니라 &lt;strong&gt;"못 하는"&lt;/strong&gt; 겁니다.&lt;/p&gt;


&lt;h3&gt;
  
  
  3️⃣ 수정 후 자동 포맷팅
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PostToolUse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Edit|Write"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"file=$(echo &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;$CLAUDE_TOOL_INPUT&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; | jq -r '.file_path'); if [[ &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;$file&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; == *.ts ]]; then npx prettier --write &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;$file&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;; fi"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;TypeScript 파일이 자동으로 포맷팅됩니다. "prettier 돌려줘" 안 해도 됨.&lt;/p&gt;


&lt;h3&gt;
  
  
  4️⃣ 데스크톱 알림 받기
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"Notification"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"matcher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"osascript -e 'display notification &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Claude가 응답을 기다리고 있습니다&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; with title &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Claude Code&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;'"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;자리 비워도 됩니다. Claude가 필요할 때 알림이 옵니다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 Linux는 &lt;code&gt;notify-send&lt;/code&gt; 사용&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h3&gt;
  
  
  5️⃣ 컨텍스트 압축 후에도 규칙 유지
&lt;/h3&gt;

&lt;p&gt;이거 중요합니다. 대화가 길어지면 Claude가 컨텍스트를 압축하는데, 이때 규칙을 종종 까먹습니다.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"PreCompact"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo '[리마인더] 압축 후에도 기억할 것: TypeScript strict, JSDoc 필수, API 호출 전 확인'"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;압축 후에도 규칙이 살아남습니다. 매번.&lt;/p&gt;


&lt;h2&gt;
  
  
  설정 방법 (진짜 2분)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; 설정 파일 생성&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; .claude
&lt;span class="nb"&gt;touch&lt;/span&gt; .claude/settings.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Hooks 추가&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"SessionStart"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"hooks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"echo '[내 코딩 규칙] 1) 규칙1 2) 규칙2'"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; 레포에 커밋&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add .claude/settings.json
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Add Claude Code hooks"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;✅ 끝. 이제 팀원 모두가 같은 규칙을 공유합니다.&lt;/p&gt;


&lt;h2&gt;
  
  
  근데 아직 문제가 하나 남음
&lt;/h2&gt;

&lt;p&gt;Hooks는 "규칙" 문제를 아름답게 해결합니다. 하지만 못하는 게 있어요:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;왜 그렇게 만들었는지는 기억 못함.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;
  이런 상황 상상해보세요
  &lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;월요일:&lt;/strong&gt; Claude랑 JWT를 쓰기로 결정. 충분한 논의 끝에.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;수요일:&lt;/strong&gt; 새 세션. Claude가 세션 방식을 제안함.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;나:&lt;/strong&gt; "우리 JWT 쓰기로 했잖아!"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude:&lt;/strong&gt; "아, 몰랐어요."
&lt;/li&gt;
&lt;/ul&gt;




&lt;/p&gt;
&lt;p&gt;Hooks는 규칙을 상기시킬 수 있습니다. 하지만 아키텍처 결정의 &lt;em&gt;이유&lt;/em&gt;는 보존하지 못해요.&lt;/p&gt;


&lt;h2&gt;
  
  
  빠진 퍼즐 조각: 코드 안의 컨텍스트
&lt;/h2&gt;

&lt;p&gt;그래서 &lt;strong&gt;CodeSyncer&lt;/strong&gt;를 만들었습니다.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bitjaru" rel="noopener noreferrer"&gt;
        bitjaru
      &lt;/a&gt; / &lt;a href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;
        codesyncer
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Claude forgets everything when the session ends. CodeSyncer makes it remember.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CodeSyncer&lt;/h1&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Claude forgets everything when the session ends. CodeSyncer makes it remember.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/codesyncer" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/842923a2d048dafe0e00e52153551a9a06dc6e2ba485f57e9a99c373cb9b6e97/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f636f646573796e6365722e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/bitjaru/codesyncer/./LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c838d998af2554b26475507dab26a507d34b3ec7eb133ff5b4eaa5e517d1b3cd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d436f6d6d6f6e73253230436c617573652d7265642e737667" alt="License"&gt;&lt;/a&gt;
&lt;a href="https://github.com/bitjaru/codesyncer/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/cb96194d86cb57e98c3da7562c8d1bef22f6026a321d76ee7b5acdbb0ff149d6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6269746a6172752f636f646573796e6365722e737667" alt="GitHub stars"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitjaru/codesyncer/./README.ko.md" rel="noopener noreferrer"&gt;한국어&lt;/a&gt; | English&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Problem → The Solution&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Without CodeSyncer&lt;/th&gt;
&lt;th&gt;With CodeSyncer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context loss&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Every session = start from scratch&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;@codesyncer-*&lt;/code&gt; tags = permanent memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Forgot to tag&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Changes go untracked&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;codesyncer watch&lt;/code&gt; catches everything&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rules forgotten&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI forgets guidelines mid-session&lt;/td&gt;
&lt;td&gt;Hooks auto-remind at optimal moments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dangerous inference&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI guesses prices, security, APIs&lt;/td&gt;
&lt;td&gt;Auto-pause on critical keywords&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Demo&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/bitjaru/codesyncer/main/demo.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbitjaru%2Fcodesyncer%2Fmain%2Fdemo.gif" alt="CodeSyncer Demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 1. Install&lt;/span&gt;
npm install -g codesyncer

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 2. Initialize&lt;/span&gt;
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; /path/to/your/project
codesyncer init

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 3. Let AI set up (say this to Claude)&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Read .claude/SETUP_GUIDE.md and follow the instructions&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 4. Start coding (say this each session)&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Read CLAUDE.md&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Upgrade&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install -g codesyncer@latest&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Core Features&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;🏷️ Tag System&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Put context IN your code. AI reads code, so it recovers context automatically.&lt;/p&gt;
&lt;div class="highlight highlight-source-ts notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;// &lt;span class="pl-k"&gt;@codesyncer&lt;/span&gt;-decision: [2024-01-15] Using JWT (session management is simpler)&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




&lt;p&gt;아이디어는 간단해요: &lt;strong&gt;코드 주석에 컨텍스트를 직접 저장하는 겁니다.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
 * 인증 서비스
 *
 * @codesyncer-decision [2026-01-15] 세션 대신 JWT 선택 (stateless, 스케일링 용이)
 * @codesyncer-inference 토큰 만료 24시간 (웹앱 표준)
 */&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AuthService&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// @codesyncer-rule 디버그 모드에서도 토큰 로깅 금지&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;credentials&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Credentials&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;다음 세션에서 Claude가 코드를 읽으면 &lt;em&gt;즉시&lt;/em&gt; 알게 됩니다:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ 뭘 결정했는지&lt;/li&gt;
&lt;li&gt;✅ 왜 그렇게 결정했는지&lt;/li&gt;
&lt;li&gt;✅ 어떤 규칙이 적용되는지&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;반복 없음. 까먹음 없음. 컨텍스트가 코드 자체에 살아있습니다.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hooks + CodeSyncer = 완벽한 조합
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;문제&lt;/th&gt;
&lt;th&gt;해결책&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AI가 코딩 규칙을 까먹음&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Hooks&lt;/strong&gt; → 매 세션 자동 로드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI가 결정을 까먹음&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;@codesyncer-decision&lt;/strong&gt; → 코드에 남음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI가 추론함&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;@codesyncer-inference&lt;/strong&gt; → 근거 문서화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI가 민감한 로직 건드림&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;@codesyncer-rule&lt;/strong&gt; → 명시적 경고&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;CodeSyncer는 Hooks도 자동으로 설정해줍니다:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx codesyncer init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;이렇게 생성됩니다:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;code&gt;.claude/settings.json&lt;/code&gt; - SessionStart, PreCompact hooks 포함&lt;/li&gt;
&lt;li&gt;✅ &lt;code&gt;.claude/CLAUDE.md&lt;/code&gt; - 코딩 규칙&lt;/li&gt;
&lt;li&gt;✅ 태그 시스템 바로 사용 가능&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  빠른 시작
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/bitjaru/codesyncer" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;🚀 CodeSyncer 시작하기&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/bitjaru/codesyncer" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;⭐ CodeSyncer GitHub에서 스타 누르기&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;옵션 1: Hooks만 (수동)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; .claude
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'{"hooks":{"SessionStart":[{"hooks":[{"type":"command","command":"echo [규칙] 여기에 규칙"}]}]}}'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; .claude/settings.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;옵션 2: 전체 설정 (추천)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx codesyncer init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  요약
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hook&lt;/th&gt;
&lt;th&gt;용도&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SessionStart&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;매 세션 규칙 로드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PreCompact&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;압축 후에도 규칙 유지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PreToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;위험한 작업 차단&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PostToolUse&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;자동 포맷팅, 린팅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Notification&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;데스크톱 알림&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Hooks&lt;/strong&gt;는 "규칙"을 담당합니다.&lt;br&gt;
&lt;strong&gt;CodeSyncer&lt;/strong&gt;는 "이유"를 담당합니다.&lt;/p&gt;

&lt;p&gt;둘을 같이 쓰면, AI가 드디어 까먹지 않습니다.&lt;/p&gt;




&lt;h2&gt;
  
  
  링크
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;a href="https://docs.anthropic.com/en/docs/claude-code/hooks" rel="noopener noreferrer"&gt;Claude Code Hooks 공식 문서&lt;/a&gt;&lt;br&gt;
🔗 &lt;a href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;CodeSyncer GitHub&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Hooks 써보셨나요? 어떤 규칙을 자동화하고 계신가요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👇 댓글로 공유해주세요!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>claudecode</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Claude Code Keeps Forgetting Your Project? Here's the Fix (2026)</title>
      <dc:creator>@kiwibreaksme</dc:creator>
      <pubDate>Sat, 17 Jan 2026 04:58:18 +0000</pubDate>
      <link>https://forem.com/kiwibreaksme/claude-code-keeps-forgetting-your-project-heres-the-fix-2026-3flm</link>
      <guid>https://forem.com/kiwibreaksme/claude-code-keeps-forgetting-your-project-heres-the-fix-2026-3flm</guid>
      <description>&lt;h2&gt;
  
  
  The Frustration We All Know
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Me: "Let's continue the payment feature from yesterday"
Claude: "I don't have context from previous sessions.
        Could you explain what you've built so far?"
Me: *sighs deeply*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If you use Claude Code, you've been here.&lt;/p&gt;

&lt;p&gt;Three hours architecting a solution. Explaining every decision. Finally getting AI to understand your codebase.&lt;/p&gt;

&lt;p&gt;Next day? &lt;strong&gt;Blank slate.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  This Is a Known Problem
&lt;/h2&gt;

&lt;p&gt;MIT Technology Review calls it the &lt;strong&gt;"Context Loss Problem"&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The biggest limitation of AI coding assistants is that LLMs can only hold a limited amount of information in their context window, and they tend to forget what they were doing in longer tasks."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even with 200K token context windows, the fundamental issue remains:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What AI Promises&lt;/th&gt;
&lt;th&gt;What Actually Happens&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;"I understand your codebase"&lt;/td&gt;
&lt;td&gt;Forgets after session ends&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"I'll follow your patterns"&lt;/td&gt;
&lt;td&gt;Reverts to training data defaults&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"I remember our decisions"&lt;/td&gt;
&lt;td&gt;&lt;em&gt;What decisions?&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For &lt;strong&gt;solo developers&lt;/strong&gt; on side projects, this hits harder. Teams might document things. When you're alone, context lives in your head—and dies with the session.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I Tried (And What Failed)
&lt;/h2&gt;
&lt;h3&gt;
  
  
  ❌ Longer prompts
&lt;/h3&gt;

&lt;p&gt;Pasting entire codebases. Hit token limits. AI got confused.&lt;/p&gt;
&lt;h3&gt;
  
  
  ❌ Session summaries
&lt;/h3&gt;

&lt;p&gt;Manual notes at session end. Forgot to do it. Notes got stale.&lt;/p&gt;
&lt;h3&gt;
  
  
  ❌ Hoping AI would remember
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Narrator: It did not.&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  What Actually Works
&lt;/h2&gt;

&lt;p&gt;After months of frustration, I found a two-part solution:&lt;/p&gt;
&lt;h3&gt;
  
  
  Part 1: CLAUDE.md (Built-in Feature)
&lt;/h3&gt;

&lt;p&gt;Claude Code automatically reads &lt;code&gt;CLAUDE.md&lt;/code&gt; in your project root. This is your &lt;strong&gt;persistent rulebook&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# CLAUDE.md

## Project Rules
- TypeScript strict mode, always
- API base URL: https://api.myapp.com/v2
- Auth: JWT with 24-hour expiry
- Never guess business logic—ask first

## Architecture
- /src/services → Business logic
- /src/api → Express routes
- /src/utils → Shared utilities

## Critical: Don't Assume
- Payment amounts → ASK
- API endpoints → ASK
- Security settings → ASK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This survives sessions. AI reads it first. &lt;strong&gt;Huge improvement.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But it's not enough. CLAUDE.md tells AI the rules—not the &lt;em&gt;reasons&lt;/em&gt; behind your code.&lt;/p&gt;


&lt;h3&gt;
  
  
  Part 2: CodeSyncer (My Solution)
&lt;/h3&gt;

&lt;p&gt;I built an open source tool that stores &lt;strong&gt;context inside your code itself&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea: What if every AI decision was recorded as a comment tag?&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
 * Payment processor
 *
 * @codesyncer-decision [2026-01-15] Chose synchronous processing
 *   → User feedback showed async confused customers at checkout
 * @codesyncer-inference Minimum $1.00 (Stripe policy)
 * @codesyncer-todo Add refund logic after v1 launch
 */&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;processPayment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// @codesyncer-why Idempotency key prevents duplicate charges&lt;/span&gt;
  &lt;span class="c1"&gt;//   on network retry (learned this the hard way)&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;idempotencyKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;generateKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Next session, AI reads the code and instantly knows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What&lt;/strong&gt; was decided&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why&lt;/strong&gt; it was decided&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What's still pending&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No re-explaining. No context loss. The code &lt;em&gt;is&lt;/em&gt; the context.&lt;/p&gt;
&lt;h4&gt;
  
  
  Quick Start
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; codesyncer

&lt;span class="c"&gt;# Initialize (creates CLAUDE.md structure)&lt;/span&gt;
npx codesyncer init

&lt;span class="c"&gt;# Watch mode: auto-syncs tags to DECISIONS.md&lt;/span&gt;
npx codesyncer watch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That's it. &lt;strong&gt;5 minutes to start.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bitjaru" rel="noopener noreferrer"&gt;
        bitjaru
      &lt;/a&gt; / &lt;a href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;
        codesyncer
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Claude forgets everything when the session ends. CodeSyncer makes it remember.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CodeSyncer&lt;/h1&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Claude forgets everything when the session ends. CodeSyncer makes it remember.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/codesyncer" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/842923a2d048dafe0e00e52153551a9a06dc6e2ba485f57e9a99c373cb9b6e97/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f636f646573796e6365722e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/bitjaru/codesyncer/./LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c838d998af2554b26475507dab26a507d34b3ec7eb133ff5b4eaa5e517d1b3cd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d436f6d6d6f6e73253230436c617573652d7265642e737667" alt="License"&gt;&lt;/a&gt;
&lt;a href="https://github.com/bitjaru/codesyncer/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/cb96194d86cb57e98c3da7562c8d1bef22f6026a321d76ee7b5acdbb0ff149d6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6269746a6172752f636f646573796e6365722e737667" alt="GitHub stars"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitjaru/codesyncer/./README.ko.md" rel="noopener noreferrer"&gt;한국어&lt;/a&gt; | English&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Problem → The Solution&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Without CodeSyncer&lt;/th&gt;
&lt;th&gt;With CodeSyncer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context loss&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Every session = start from scratch&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;@codesyncer-*&lt;/code&gt; tags = permanent memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Forgot to tag&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Changes go untracked&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;codesyncer watch&lt;/code&gt; catches everything&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rules forgotten&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI forgets guidelines mid-session&lt;/td&gt;
&lt;td&gt;Hooks auto-remind at optimal moments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dangerous inference&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI guesses prices, security, APIs&lt;/td&gt;
&lt;td&gt;Auto-pause on critical keywords&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Demo&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/bitjaru/codesyncer/main/demo.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbitjaru%2Fcodesyncer%2Fmain%2Fdemo.gif" alt="CodeSyncer Demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 1. Install&lt;/span&gt;
npm install -g codesyncer

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 2. Initialize&lt;/span&gt;
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; /path/to/your/project
codesyncer init

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 3. Let AI set up (say this to Claude)&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Read .claude/SETUP_GUIDE.md and follow the instructions&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 4. Start coding (say this each session)&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Read CLAUDE.md&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Upgrade&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install -g codesyncer@latest&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Core Features&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;🏷️ Tag System&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Put context IN your code. AI reads code, so it recovers context automatically.&lt;/p&gt;
&lt;div class="highlight highlight-source-ts notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;// &lt;span class="pl-k"&gt;@codesyncer&lt;/span&gt;-decision: [2024-01-15] Using JWT (session management is simpler)&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;







&lt;h2&gt;
  
  
  The Tag System
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tag&lt;/th&gt;
&lt;th&gt;When to Use&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@codesyncer-decision&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;After discussing with AI&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Chose REST over GraphQL (team familiarity)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@codesyncer-inference&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;AI made an assumption&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Page size 20 (standard UX practice)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@codesyncer-todo&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Needs follow-up&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Add rate limiting before production&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@codesyncer-context&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Business logic explanation&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GDPR requires 30-day data retention&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@codesyncer-why&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Non-obvious implementation&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Using any type (external lib has no types)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These tags become searchable documentation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Find all pending items&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"@codesyncer-todo"&lt;/span&gt; ./src

&lt;span class="c"&gt;# Find all architectural decisions&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;"@codesyncer-decision"&lt;/span&gt; ./src
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  For Teams: Gas Town
&lt;/h2&gt;

&lt;p&gt;Credit where it's due—Steve Yegge (Google veteran, worked on Grok) built &lt;strong&gt;Gas Town&lt;/strong&gt; tackling the same problem at enterprise scale.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/steveyegge" rel="noopener noreferrer"&gt;
        steveyegge
      &lt;/a&gt; / &lt;a href="https://github.com/steveyegge/gastown" rel="noopener noreferrer"&gt;
        gastown
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Gas Town - multi-agent workspace manager
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Gas Town&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Multi-agent orchestration system for Claude Code, GitHub Copilot, and other AI agents with persistent work tracking&lt;/strong&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Gas Town is a workspace manager that lets you coordinate multiple AI coding agents (Claude Code, GitHub Copilot, Codex, Gemini, and others) working on different tasks. Instead of losing context when agents restart, Gas Town persists work state in git-backed hooks, enabling reliable multi-agent workflows.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;What Problem Does This Solve?&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;br&gt;
&lt;thead&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;th&gt;Challenge&lt;/th&gt;
&lt;br&gt;
&lt;th&gt;Gas Town Solution&lt;/th&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/thead&gt;
&lt;br&gt;
&lt;tbody&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Agents lose context on restart&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Work persists in git-backed hooks&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Manual agent coordination&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Built-in mailboxes, identities, and handoffs&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;4-10 agents become chaotic&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Scale comfortably to 20-30 agents&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Work state lost in agent memory&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;Work state stored in Beads ledger&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/tbody&gt;
&lt;br&gt;
&lt;/table&gt;&lt;/div&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Architecture&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
  &amp;lt;div class="js-render-enrichment-target" data-json='{"data":"graph TB\n    Mayor[The Mayor&amp;amp;lt;br/&amp;amp;gt;AI Coordinator]\n    Town[Town Workspace&amp;amp;lt;br/&amp;amp;gt;~/gt/]\n\n    Town --&amp;amp;gt; Mayor\n    Town --&amp;amp;gt; Rig1[Rig: Project A]\n    Town --&amp;amp;gt; Rig2[Rig: Project B]\n\n    Rig1 --&amp;amp;gt; Crew1[Crew Member&amp;amp;lt;br/&amp;amp;gt;Your workspace]\n    Rig1 --&amp;amp;gt; Hooks1[Hooks&amp;amp;lt;br/&amp;amp;gt;Persistent storage]\n    Rig1 --&amp;amp;gt; Polecats1[Polecats&amp;amp;lt;br/&amp;amp;gt;Worker agents]\n\n    Rig2 --&amp;amp;gt; Crew2[Crew Member]\n    Rig2 --&amp;amp;gt; Hooks2[Hooks]\n    Rig2 --&amp;amp;gt; Polecats2[Polecats]\n\n    Hooks1 -.git worktree.-&amp;amp;gt; GitRepo1[Git Repository]\n    Hooks2 -.git worktree.-&amp;amp;gt; GitRepo2[Git Repository]\n\n    style Mayor fill:#e1f5ff,color:#000000\n    style Town fill:#f0f0f0,color:#000000\n    style Rig1 fill:#fff4e1,color:#000000\n    style Rig2 fill:#fff4e1,color:#000000\n"}' data-plain="graph TB&lt;br&gt;
    Mayor[The Mayor&amp;lt;br/&amp;gt;AI Coordinator]&lt;br&gt;
    Town[Town Workspace&amp;lt;br/&amp;gt;~/gt/]&lt;br&gt;
    Town --&amp;gt; Mayor&lt;br&gt;
    Town --&amp;gt; Rig1[Rig: Project A]&lt;br&gt;
    Town --&amp;gt; Rig2[Rig: Project B]&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rig1 --&amp;amp;gt; Crew1[Crew Member&amp;amp;lt;br/&amp;amp;gt;Your workspace]
Rig1 --&amp;amp;gt; Hooks1[Hooks&amp;amp;lt;br/&amp;amp;gt;Persistent storage]
Rig1 --&amp;amp;gt; Polecats1[Polecats&amp;amp;lt;br/&amp;amp;gt;Worker agents]

Rig2 --&amp;amp;gt; Crew2[Crew Member]
Rig2 --&amp;amp;gt; Hooks2[Hooks]
Rig2 --&amp;amp;gt; Polecats2[Polecats]

Hooks1 -.git worktree.-&amp;amp;gt; GitRepo1[Git Repository]
Hooks2 -.git worktree.-&amp;amp;gt; GitRepo2[Git Repository]

style Mayor fill:#e1f5ff,color:#000000
style Town fill:#f0f0f0,color:#000000
style Rig1 fill:#fff4e1,color:#000000
style Rig2 fill:#fff4e1,color:#000000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;" dir="auto"&amp;gt;&lt;br&gt;
    &lt;/p&gt;
&lt;div class="render-plaintext-hidden"&gt;
&lt;br&gt;
      &lt;pre&gt;graph TB&lt;br&gt;
    Mayor[The Mayor&amp;lt;br/&amp;gt;AI Coordinator]&lt;br&gt;
    Town[Town Workspace&amp;lt;br/&amp;gt;~/gt/]&lt;br&gt;
    Town --&amp;gt; Mayor&lt;br&gt;
    Town --&amp;gt; Rig1[Rig: Project A]&lt;br&gt;
    Town --&amp;gt; Rig2[Rig: Project B]&lt;br&gt;
    Rig1 --&amp;gt; Crew1[Crew Member&amp;lt;br/&amp;gt;Your workspace]&lt;br&gt;
    Rig1 --&amp;gt; Hooks1[Hooks&amp;lt;br/&amp;gt;Persistent storage]&lt;br&gt;
    Rig1 --&amp;gt; Polecats1[Polecats&amp;lt;br/&amp;gt;Worker agents]
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rig2 --&amp;amp;gt; Crew2[Crew Member]&amp;lt;/pre&amp;gt;…&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/steveyegge/gastown" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;





&lt;p&gt;His approach: Run 20-30 AI agents simultaneously with a "Mayor" AI orchestrating them. Git-based state persistence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Impressive&lt;/strong&gt;, but the learning curve is steep. He says it requires "Stage 7+ AI-assisted development experience."&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Comparison
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Gas Town&lt;/th&gt;
&lt;th&gt;CodeSyncer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tagline&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;"Scale your agents"&lt;/td&gt;
&lt;td&gt;"Remember your context"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Target&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Teams, enterprise&lt;/td&gt;
&lt;td&gt;Solo developers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agents&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;20-30 simultaneous&lt;/td&gt;
&lt;td&gt;1, deeply&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Setup time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hours (Go, complex concepts)&lt;/td&gt;
&lt;td&gt;5 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;State storage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Git worktrees&lt;/td&gt;
&lt;td&gt;Code comments&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Same philosophy&lt;/strong&gt;: &lt;em&gt;"AI is ephemeral, but context should be permanent."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Different scale&lt;/strong&gt;: Pick based on your needs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real Workflow Example
&lt;/h2&gt;

&lt;p&gt;Here's how my sessions look now:&lt;/p&gt;

&lt;h3&gt;
  
  
  Day 1
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Me: "Let's add Stripe payments"

Claude: ⚠️ Payment keyword detected. Let me confirm:
- Which payment provider?
- Supported currencies?
- Minimum amount?

Me: "Stripe, USD/EUR/KRW, minimum $1"

Claude: ✅ Recording decision...

*Creates code with:*
// @codesyncer-decision [2026-01-17] Stripe for payments
//   Supports USD, EUR, KRW. Min $1 (Stripe policy).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Day 2 (New Session)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Me: "Continue the payment feature"

Claude: *reads codebase*

"I see from the code:
- You're using Stripe (decision from Jan 17)
- Supporting USD/EUR/KRW
- Minimum $1

Should I add the webhook handler next?"

Me: 🎉
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No re-explaining. No lost context. &lt;strong&gt;It just works.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The 2026 Bottleneck
&lt;/h2&gt;

&lt;p&gt;AI models are getting smarter every month. GPT-5, Claude 4, Gemini Ultra—they'll all be incredible.&lt;/p&gt;

&lt;p&gt;But here's my take:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The bottleneck isn't "smarter AI." It's "better context management."&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The devs who master context persistence will ship faster than those waiting for AI to magically remember.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It Today
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;For solo developers:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx codesyncer init
npx codesyncer watch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;→ &lt;a href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;CodeSyncer on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For teams:&lt;/strong&gt;&lt;br&gt;
→ &lt;a href="https://github.com/steveyegge/gastown" rel="noopener noreferrer"&gt;Gas Town on GitHub&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Your Turn
&lt;/h2&gt;

&lt;p&gt;Have you struggled with Claude Code forgetting context?&lt;/p&gt;

&lt;p&gt;What workarounds have you tried?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drop a comment below&lt;/strong&gt; — I'd love to hear how others are solving this.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If this helped, a ⭐ on the repo means a lot. Building in public, feedback welcome!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>What I Learned from Steve Yegge's Gas Town — And a Small Tool for Solo Developers</title>
      <dc:creator>@kiwibreaksme</dc:creator>
      <pubDate>Fri, 16 Jan 2026 13:26:33 +0000</pubDate>
      <link>https://forem.com/kiwibreaksme/what-i-learned-from-steve-yegges-gas-town-and-a-small-tool-for-solo-developers-2me2</link>
      <guid>https://forem.com/kiwibreaksme/what-i-learned-from-steve-yegges-gas-town-and-a-small-tool-for-solo-developers-2me2</guid>
      <description>&lt;p&gt;recently discovered the most impressive project in the AI coding ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steve Yegge's Gas Town.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For those who don't know Steve Yegge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Senior engineer at Google for 10+ years&lt;/li&gt;
&lt;li&gt;Famous developer blogger ("Stevey's Blog Rants")&lt;/li&gt;
&lt;li&gt;Worked on Grok&lt;/li&gt;
&lt;li&gt;Recently co-authored "Wiring the Winning Organization" with Gene Kim&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gas Town, which he released on New Year's 2026, felt less like a tool and more like a manifesto for the future of AI coding.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Core Insight of Gas Town
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"AI agents are ephemeral. But work context should be permanent."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This matters because the biggest pain point we face with AI coding assistants is &lt;strong&gt;context loss&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You spend 3 hours designing architecture with Claude yesterday. Open a new session today? Blank slate. MIT Technology Review calls this one of the biggest limitations of LLMs.&lt;/p&gt;

&lt;p&gt;Steve Yegge tackled this problem head-on.&lt;/p&gt;




&lt;h2&gt;
  
  
  Gas Town's Approach
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Using Git as a trusted state store&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Work state can be recovered even after agent crashes or restarts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. "Mayor" AI orchestrates multiple agents&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;20-30 agents working on different tasks simultaneously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. "Hooks" persist work state to Git worktree&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Embracing agent ephemerality while ensuring continuity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. "Convoy" bundles multiple issues for tracking&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Visibility into progress on complex projects.&lt;/p&gt;

&lt;p&gt;Looking at this architecture, I realized this isn't just an "AI tool" — it's &lt;strong&gt;a new development paradigm for the AI era&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/steveyegge" rel="noopener noreferrer"&gt;
        steveyegge
      &lt;/a&gt; / &lt;a href="https://github.com/steveyegge/gastown" rel="noopener noreferrer"&gt;
        gastown
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Gas Town - multi-agent workspace manager
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Gas Town&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Multi-agent orchestration system for Claude Code, GitHub Copilot, and other AI agents with persistent work tracking&lt;/strong&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Gas Town is a workspace manager that lets you coordinate multiple AI coding agents (Claude Code, GitHub Copilot, Codex, Gemini, and others) working on different tasks. Instead of losing context when agents restart, Gas Town persists work state in git-backed hooks, enabling reliable multi-agent workflows.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;What Problem Does This Solve?&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Challenge&lt;/th&gt;
&lt;th&gt;Gas Town Solution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Agents lose context on restart&lt;/td&gt;
&lt;td&gt;Work persists in git-backed hooks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual agent coordination&lt;/td&gt;
&lt;td&gt;Built-in mailboxes, identities, and handoffs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4-10 agents become chaotic&lt;/td&gt;
&lt;td&gt;Scale comfortably to 20-30 agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Work state lost in agent memory&lt;/td&gt;
&lt;td&gt;Work state stored in Beads ledger&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Architecture&lt;/h3&gt;

&lt;/div&gt;

  &lt;div class="js-render-enrichment-target"&gt;
    &lt;div class="render-plaintext-hidden"&gt;
      &lt;pre&gt;graph TB
    Mayor[The Mayor&amp;lt;br/&amp;gt;AI Coordinator]
    Town[Town Workspace&amp;lt;br/&amp;gt;~/gt/]
    Town --&amp;gt; Mayor
    Town --&amp;gt; Rig1[Rig: Project A]
    Town --&amp;gt; Rig2[Rig: Project B]
    Rig1 --&amp;gt; Crew1[Crew Member&amp;lt;br/&amp;gt;Your workspace]
    Rig1 --&amp;gt; Hooks1[Hooks&amp;lt;br/&amp;gt;Persistent storage]
    Rig1 --&amp;gt; Polecats1[Polecats&amp;lt;br/&amp;gt;Worker agents]

    Rig2 --&amp;gt; Crew2[Crew Member]&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/steveyegge/gastown" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;







&lt;h2&gt;
  
  
  I'm Also Building Something Similar
&lt;/h2&gt;

&lt;p&gt;Gas Town is optimized for large teams and complex enterprise projects. Environments where you'd actually run 20-30 agents.&lt;/p&gt;

&lt;p&gt;But what about solo developers like me, working on side projects?&lt;/p&gt;

&lt;p&gt;I didn't need 20 agents. I wanted deep collaboration with one AI that remembers "where we left off yesterday" and "why we built it this way."&lt;/p&gt;

&lt;p&gt;I'm building a tool called &lt;strong&gt;CodeSyncer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Core idea:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gas Town stores state in Git&lt;/li&gt;
&lt;li&gt;CodeSyncer stores &lt;strong&gt;context in code comments themselves&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
 * Payment processor
 *
 * @codesyncer-decision [2026-01-15] Chose sync processing (UX priority)
 * @codesyncer-inference Minimum amount $1 (PG policy)
 * @codesyncer-todo Add refund logic
 */&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;processPayment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// @codesyncer-why Idempotency key prevents duplicate charges&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;idempotencyKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;generateKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Next session, AI reads the code and instantly knows "why" it was built this way.&lt;/p&gt;

&lt;p&gt;Start in 5 minutes, no complex setup.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx codesyncer init
npx codesyncer watch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bitjaru" rel="noopener noreferrer"&gt;
        bitjaru
      &lt;/a&gt; / &lt;a href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;
        codesyncer
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Claude forgets everything when the session ends. CodeSyncer makes it remember.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CodeSyncer&lt;/h1&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Claude forgets everything when the session ends. CodeSyncer makes it remember.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/codesyncer" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/842923a2d048dafe0e00e52153551a9a06dc6e2ba485f57e9a99c373cb9b6e97/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f636f646573796e6365722e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/bitjaru/codesyncer/./LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c838d998af2554b26475507dab26a507d34b3ec7eb133ff5b4eaa5e517d1b3cd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d436f6d6d6f6e73253230436c617573652d7265642e737667" alt="License"&gt;&lt;/a&gt;
&lt;a href="https://github.com/bitjaru/codesyncer/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/cb96194d86cb57e98c3da7562c8d1bef22f6026a321d76ee7b5acdbb0ff149d6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6269746a6172752f636f646573796e6365722e737667" alt="GitHub stars"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitjaru/codesyncer/./README.ko.md" rel="noopener noreferrer"&gt;한국어&lt;/a&gt; | English&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Problem → The Solution&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Without CodeSyncer&lt;/th&gt;
&lt;th&gt;With CodeSyncer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context loss&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Every session = start from scratch&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;@codesyncer-*&lt;/code&gt; tags = permanent memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Forgot to tag&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Changes go untracked&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;codesyncer watch&lt;/code&gt; catches everything&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rules forgotten&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI forgets guidelines mid-session&lt;/td&gt;
&lt;td&gt;Hooks auto-remind at optimal moments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dangerous inference&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI guesses prices, security, APIs&lt;/td&gt;
&lt;td&gt;Auto-pause on critical keywords&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Demo&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/bitjaru/codesyncer/main/demo.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbitjaru%2Fcodesyncer%2Fmain%2Fdemo.gif" alt="CodeSyncer Demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 1. Install&lt;/span&gt;
npm install -g codesyncer

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 2. Initialize&lt;/span&gt;
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; /path/to/your/project
codesyncer init

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 3. Let AI set up (say this to Claude)&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Read .claude/SETUP_GUIDE.md and follow the instructions&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 4. Start coding (say this each session)&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Read CLAUDE.md&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Upgrade&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install -g codesyncer@latest&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Core Features&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;🏷️ Tag System&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Put context IN your code. AI reads code, so it recovers context automatically.&lt;/p&gt;
&lt;div class="highlight highlight-source-ts notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;// &lt;span class="pl-k"&gt;@codesyncer&lt;/span&gt;-decision: [2024-01-15] Using JWT (session management is simpler)&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;







&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Gas Town&lt;/th&gt;
&lt;th&gt;CodeSyncer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Slogan&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Scale your agents&lt;/td&gt;
&lt;td&gt;Remember your context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Target&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Teams/Enterprise&lt;/td&gt;
&lt;td&gt;Solo developers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agents&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;20-30 simultaneous&lt;/td&gt;
&lt;td&gt;1, deeply&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;State storage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Git worktree&lt;/td&gt;
&lt;td&gt;Code comments&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The philosophy is the same: &lt;strong&gt;"AI is ephemeral, but context should be permanent."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just different targets and approaches.&lt;/p&gt;




&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;In 2026, the real differentiator in AI coding won't be "smarter models" — it'll be &lt;strong&gt;"better context management"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Steve Yegge showed the way with Gas Town. I'm trying to make a small contribution for solo developers.&lt;/p&gt;

&lt;p&gt;Both are open source. If you're interested in AI coding, check them out.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/steveyegge/gastown" rel="noopener noreferrer"&gt;Gas Town&lt;/a&gt; - For teams/enterprise&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;CodeSyncer&lt;/a&gt; - For solo developers&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;If you've been struggling with this too, share your experience in the comments!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Steve Yegge의 Gas Town을 보고 배운 것들 — 그리고 개인 개발자를 위한 작은 도구</title>
      <dc:creator>@kiwibreaksme</dc:creator>
      <pubDate>Fri, 16 Jan 2026 13:25:18 +0000</pubDate>
      <link>https://forem.com/kiwibreaksme/steve-yeggeyi-gas-towneul-bogo-baeun-geosdeul-geurigo-gaein-gaebaljareul-wihan-jageun-dogu-196d</link>
      <guid>https://forem.com/kiwibreaksme/steve-yeggeyi-gas-towneul-bogo-baeun-geosdeul-geurigo-gaein-gaebaljareul-wihan-jageun-dogu-196d</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;최근 AI 코딩 생태계에서 가장 인상적인 프로젝트를 발견했습니다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Steve Yegge의 Gas Town&lt;/strong&gt;입니다.&lt;/p&gt;

&lt;p&gt;Steve Yegge를 모르시는 분들을 위해 간단히 소개하면:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google에서 10년 넘게 일한 시니어 엔지니어&lt;/li&gt;
&lt;li&gt;"Stevey's Blog Rants"로 유명한 개발자 블로거&lt;/li&gt;
&lt;li&gt;Grok 개발에 참여&lt;/li&gt;
&lt;li&gt;최근 Gene Kim과 함께 "Wiring the Winning Organization" 공동 저술&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;그가 2026년 새해에 공개한 Gas Town은 단순한 도구가 아니라, AI 코딩의 미래에 대한 하나의 선언문 같았습니다.&lt;/p&gt;




&lt;h2&gt;
  
  
  Gas Town의 핵심 통찰
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"AI 에이전트는 일시적(ephemeral)이다. 하지만 작업 맥락은 영구적이어야 한다."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;이게 왜 중요하냐면, 우리가 AI 코딩 어시스턴트를 쓰면서 겪는 가장 큰 고통이 바로 &lt;strong&gt;"컨텍스트 손실"&lt;/strong&gt;이기 때문입니다.&lt;/p&gt;

&lt;p&gt;어제 Claude랑 3시간 동안 아키텍처 설계했는데, 오늘 새 세션 열면 백지상태. MIT Technology Review도 이걸 LLM의 가장 큰 한계로 꼽습니다.&lt;/p&gt;

&lt;p&gt;Steve Yegge는 이 문제를 정면으로 해결하려 했습니다.&lt;/p&gt;




&lt;h2&gt;
  
  
  Gas Town의 접근법
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Git을 신뢰할 수 있는 상태 저장소로 활용&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;에이전트가 크래시해도, 재시작해도 작업 상태 복구 가능&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. "Mayor"라는 조정자 AI가 여러 에이전트를 오케스트레이션&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;20-30개 에이전트가 동시에 다른 작업 수행&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. "Hooks"로 작업 상태를 Git worktree에 영구 저장&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;에이전트의 일시성을 수용하면서도 연속성 확보&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. "Convoy"로 여러 이슈를 묶어서 추적&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;복잡한 프로젝트에서 진행 상황 가시화&lt;/p&gt;

&lt;p&gt;이 아키텍처를 보면서 느낀 건, 이건 단순히 "AI 도구"가 아니라 &lt;strong&gt;"AI 시대의 새로운 개발 패러다임"&lt;/strong&gt;이라는 것이었습니다.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/steveyegge" rel="noopener noreferrer"&gt;
        steveyegge
      &lt;/a&gt; / &lt;a href="https://github.com/steveyegge/gastown" rel="noopener noreferrer"&gt;
        gastown
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Gas Town - multi-agent workspace manager
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Gas Town&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Multi-agent orchestration system for Claude Code, GitHub Copilot, and other AI agents with persistent work tracking&lt;/strong&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Gas Town is a workspace manager that lets you coordinate multiple AI coding agents (Claude Code, GitHub Copilot, Codex, Gemini, and others) working on different tasks. Instead of losing context when agents restart, Gas Town persists work state in git-backed hooks, enabling reliable multi-agent workflows.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;What Problem Does This Solve?&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Challenge&lt;/th&gt;
&lt;th&gt;Gas Town Solution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Agents lose context on restart&lt;/td&gt;
&lt;td&gt;Work persists in git-backed hooks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual agent coordination&lt;/td&gt;
&lt;td&gt;Built-in mailboxes, identities, and handoffs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4-10 agents become chaotic&lt;/td&gt;
&lt;td&gt;Scale comfortably to 20-30 agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Work state lost in agent memory&lt;/td&gt;
&lt;td&gt;Work state stored in Beads ledger&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Architecture&lt;/h3&gt;

&lt;/div&gt;

  &lt;div class="js-render-enrichment-target"&gt;
    &lt;div class="render-plaintext-hidden"&gt;
      &lt;pre&gt;graph TB
    Mayor[The Mayor&amp;lt;br/&amp;gt;AI Coordinator]
    Town[Town Workspace&amp;lt;br/&amp;gt;~/gt/]
    Town --&amp;gt; Mayor
    Town --&amp;gt; Rig1[Rig: Project A]
    Town --&amp;gt; Rig2[Rig: Project B]
    Rig1 --&amp;gt; Crew1[Crew Member&amp;lt;br/&amp;gt;Your workspace]
    Rig1 --&amp;gt; Hooks1[Hooks&amp;lt;br/&amp;gt;Persistent storage]
    Rig1 --&amp;gt; Polecats1[Polecats&amp;lt;br/&amp;gt;Worker agents]

    Rig2 --&amp;gt; Crew2[Crew Member]&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/steveyegge/gastown" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;







&lt;h2&gt;
  
  
  저도 마침 비슷한 도구를 만들고 있습니다
&lt;/h2&gt;

&lt;p&gt;Gas Town은 대규모 팀이나 복잡한 엔터프라이즈 프로젝트에 최적화되어 있습니다. 20-30개 에이전트를 돌릴 일이 있는 환경이죠.&lt;/p&gt;

&lt;p&gt;하지만 저처럼 혼자 사이드 프로젝트 하는 개인 개발자는 어떨까요?&lt;/p&gt;

&lt;p&gt;에이전트 20개가 아니라, 하나의 AI와 깊이 협업하면서 "어제 어디까지 했는지", "왜 이렇게 구현했는지"를 기억하게 하고 싶었습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CodeSyncer&lt;/strong&gt;라는 도구를 만들고 있습니다.&lt;/p&gt;

&lt;p&gt;핵심 아이디어:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gas Town이 Git에 상태를 저장한다면&lt;/li&gt;
&lt;li&gt;CodeSyncer는 &lt;strong&gt;코드 주석 자체에 컨텍스트를 저장&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
 * 결제 처리 함수
 *
 * @codesyncer-decision [2026-01-15] 동기 처리 선택 (UX 우선)
 * @codesyncer-inference 최소 금액 100원 (PG사 정책)
 * @codesyncer-todo 환불 로직 추가 필요
 */&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;processPayment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// @codesyncer-why 멱등성 키로 중복 결제 방지&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;idempotencyKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;generateKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;다음 세션에서 AI가 코드를 읽으면 "왜 이렇게 구현했는지" 바로 파악할 수 있습니다.&lt;/p&gt;

&lt;p&gt;5분이면 시작할 수 있고, 복잡한 설정 없이 바로 쓸 수 있습니다.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx codesyncer init
npx codesyncer watch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bitjaru" rel="noopener noreferrer"&gt;
        bitjaru
      &lt;/a&gt; / &lt;a href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;
        codesyncer
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Claude forgets everything when the session ends. CodeSyncer makes it remember.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CodeSyncer&lt;/h1&gt;
&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Claude forgets everything when the session ends. CodeSyncer makes it remember.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/codesyncer" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/842923a2d048dafe0e00e52153551a9a06dc6e2ba485f57e9a99c373cb9b6e97/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f636f646573796e6365722e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/bitjaru/codesyncer/./LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c838d998af2554b26475507dab26a507d34b3ec7eb133ff5b4eaa5e517d1b3cd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d436f6d6d6f6e73253230436c617573652d7265642e737667" alt="License"&gt;&lt;/a&gt;
&lt;a href="https://github.com/bitjaru/codesyncer/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/cb96194d86cb57e98c3da7562c8d1bef22f6026a321d76ee7b5acdbb0ff149d6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6269746a6172752f636f646573796e6365722e737667" alt="GitHub stars"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/bitjaru/codesyncer/./README.ko.md" rel="noopener noreferrer"&gt;한국어&lt;/a&gt; | English&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Problem → The Solution&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Without CodeSyncer&lt;/th&gt;
&lt;th&gt;With CodeSyncer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context loss&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Every session = start from scratch&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;@codesyncer-*&lt;/code&gt; tags = permanent memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Forgot to tag&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Changes go untracked&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;codesyncer watch&lt;/code&gt; catches everything&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rules forgotten&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI forgets guidelines mid-session&lt;/td&gt;
&lt;td&gt;Hooks auto-remind at optimal moments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dangerous inference&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI guesses prices, security, APIs&lt;/td&gt;
&lt;td&gt;Auto-pause on critical keywords&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Demo&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/bitjaru/codesyncer/main/demo.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbitjaru%2Fcodesyncer%2Fmain%2Fdemo.gif" alt="CodeSyncer Demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 1. Install&lt;/span&gt;
npm install -g codesyncer

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 2. Initialize&lt;/span&gt;
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; /path/to/your/project
codesyncer init

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 3. Let AI set up (say this to Claude)&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Read .claude/SETUP_GUIDE.md and follow the instructions&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;

&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; 4. Start coding (say this each session)&lt;/span&gt;
&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Read CLAUDE.md&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Upgrade&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install -g codesyncer@latest&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Core Features&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;🏷️ Tag System&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Put context IN your code. AI reads code, so it recovers context automatically.&lt;/p&gt;
&lt;div class="highlight highlight-source-ts notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;// &lt;span class="pl-k"&gt;@codesyncer&lt;/span&gt;-decision: [2024-01-15] Using JWT (session management is simpler)&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;







&lt;h2&gt;
  
  
  정리하면
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Gas Town&lt;/th&gt;
&lt;th&gt;CodeSyncer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;슬로건&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Scale your agents&lt;/td&gt;
&lt;td&gt;Remember your context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;타겟&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;팀/엔터프라이즈&lt;/td&gt;
&lt;td&gt;개인 개발자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;에이전트&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;20-30개 동시&lt;/td&gt;
&lt;td&gt;1개와 깊이&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;상태 저장&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Git worktree&lt;/td&gt;
&lt;td&gt;코드 주석&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;철학은 같습니다. &lt;strong&gt;"AI는 일시적이지만, 맥락은 영구적이어야 한다."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;다만 타겟과 접근이 다를 뿐입니다.&lt;/p&gt;




&lt;h2&gt;
  
  
  마치며
&lt;/h2&gt;

&lt;p&gt;2026년, AI 코딩의 진짜 승부처는 "더 똑똑한 모델"이 아니라 &lt;strong&gt;"더 나은 맥락 관리"&lt;/strong&gt;라고 생각합니다.&lt;/p&gt;

&lt;p&gt;Steve Yegge가 Gas Town으로 그 길을 보여줬고, 저도 개인 개발자를 위한 작은 기여를 해보려 합니다.&lt;/p&gt;

&lt;p&gt;둘 다 오픈소스입니다. AI 코딩에 관심 있으신 분들, 한번 살펴보세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/steveyegge/gastown" rel="noopener noreferrer"&gt;Gas Town&lt;/a&gt; - 팀/엔터프라이즈용&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;CodeSyncer&lt;/a&gt; - 개인 개발자용&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;비슷한 고민 하고 계셨다면 댓글로 공유해주세요!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>opensource</category>
      <category>korean</category>
    </item>
    <item>
      <title>AI 코딩이 자꾸 내 아키텍처를 망가뜨린다면? (feat. CodeSyncer)</title>
      <dc:creator>@kiwibreaksme</dc:creator>
      <pubDate>Sat, 10 Jan 2026 10:49:13 +0000</pubDate>
      <link>https://forem.com/kiwibreaksme/ai-kodingi-jaggu-nae-akitegceoreul-manggaddeurindamyeon-feat-codesyncer-5b3d</link>
      <guid>https://forem.com/kiwibreaksme/ai-kodingi-jaggu-nae-akitegceoreul-manggaddeurindamyeon-feat-codesyncer-5b3d</guid>
      <description>&lt;p&gt;요즘 Claude Code나 Cursor 같은 AI 코딩 도구 많이 쓰시죠? 저도 생산성이 엄청 올라서 애용하고 있습니다.&lt;/p&gt;

&lt;p&gt;그런데 프로젝트 규모가 조금만 커져도(특히 멀티 레포나 모노레포에서) 이런 경험, 다들 한 번쯤 있으실 겁니다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;나:&lt;/strong&gt; "사용자 프로필 수정 기능 좀 만들어줘."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI:&lt;/strong&gt; (뚝딱뚝딱 코드를 만듦) "여기 있습니다!"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;나:&lt;/strong&gt; (코드를 확인하며) "...???" 🤯&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;분명히 돌아가는 코드긴 한데...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;이미 있는 공통 유틸 함수를 안 쓰고 &lt;strong&gt;똑같은 걸 새로 만들어놨거나&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;비즈니스 로직을 UI 컴포넌트 안에&lt;/strong&gt; 냅다 박아버렸거나,&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;src/features/user&lt;/code&gt; 폴더에 넣어야 할 파일을 뜬금없이 &lt;code&gt;src/shared&lt;/code&gt;에 만들어놓는 등...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;코드는 맞는데, 정작 중요한 프로젝트 아키텍처는 박살이 나 있는 상황&lt;/strong&gt;, 겪어보셨죠?&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 도대체 왜 이러는 걸까요?
&lt;/h2&gt;

&lt;p&gt;AI가 멍청해서가 아닙니다. AI에게는 &lt;strong&gt;'우리 프로젝트의 전체 지도(Context)'가 없기 때문&lt;/strong&gt;입니다.&lt;/p&gt;

&lt;p&gt;AI는 지금 열려있는 파일이나 내가 던져준 코드 조각만 보고 판단합니다. 내가 6개월 전에 정한 폴더 구조 규칙이나 컨벤션은 알 길이 없죠. 그래서 우리는 매번 새로운 세션을 시작할 때마다 이런 &lt;strong&gt;노가다&lt;/strong&gt;를 반복합니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; 터미널에 &lt;code&gt;tree&lt;/code&gt; 명령어 쳐서 복사하기&lt;/li&gt;
&lt;li&gt; "우리 프로젝트 규칙은..." 하면서 장문의 텍스트 복붙하기&lt;/li&gt;
&lt;li&gt; DB 스키마 파일 찾아서 열어주기&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;이 귀찮은 과정을 자동화할 수는 없을까요?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 그래서 만들었습니다: CodeSyncer
&lt;/h2&gt;

&lt;p&gt;AI에게 매번 수동으로 컨텍스트를 주입하는 게 너무 귀찮아서, 이 과정을 자동화하는 &lt;strong&gt;오픈소스 CLI 도구, &lt;a href="https://github.com/bitjaru/codesyncer" rel="noopener noreferrer"&gt;CodeSyncer&lt;/a&gt;&lt;/strong&gt;를 만들었습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  CodeSyncer의 핵심 기능
&lt;/h3&gt;

&lt;p&gt;CodeSyncer는 복잡한 프로젝트 구조를 AI가 이해하기 쉬운 형태의 문서로 자동으로 만들어주는 '다리' 역할을 합니다.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. 자동 문맥(Context) 생성
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;codesyncer init&lt;/code&gt; 명령어 한 방이면 프로젝트 전체 구조를 분석해서 AI가 읽을 수 있는 가이드 문서를 만들어줍니다. 싱글 레포는 물론, Turborepo나 Nx 같은 모노레포도 자동으로 인식합니다.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. 실시간 감지 (Watch Mode)
&lt;/h4&gt;

&lt;p&gt;코딩하면서 파일 구조가 바뀌면, &lt;code&gt;codesyncer watch&lt;/code&gt;가 이를 실시간으로 감지해서 가이드 문서를 업데이트합니다. AI는 항상 최신 상태의 '지도'를 보게 됩니다.&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
codesyncer watch
# ✨ Changed: src/utils/api.ts
# ✅ Context Updated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>devops</category>
      <category>programming</category>
    </item>
    <item>
      <title>Stop AI From Ruining Your Architecture: 3 Context Strategies (And How to Automate Them)</title>
      <dc:creator>@kiwibreaksme</dc:creator>
      <pubDate>Thu, 08 Jan 2026 11:07:32 +0000</pubDate>
      <link>https://forem.com/kiwibreaksme/5-patterns-that-make-ai-coding-assistants-10x-more-effective-55lj</link>
      <guid>https://forem.com/kiwibreaksme/5-patterns-that-make-ai-coding-assistants-10x-more-effective-55lj</guid>
      <description>&lt;p&gt;We've all been there.&lt;/p&gt;

&lt;p&gt;You ask Claude Code or Cursor to "add a user profile feature." The AI writes code instantly. It looks clean. It runs without errors.&lt;/p&gt;

&lt;p&gt;But then you look closer... 😱&lt;/p&gt;

&lt;p&gt;It created a new database connection instead of using your existing singleton.&lt;/p&gt;

&lt;p&gt;It used axios when your whole project uses fetch.&lt;/p&gt;

&lt;p&gt;It placed business logic inside a UI component.&lt;/p&gt;

&lt;p&gt;The code works, but the architecture is broken.&lt;/p&gt;

&lt;p&gt;The problem isn't that AI is stupid. The problem is that AI is context-blind. It sees the file you opened, but it doesn't see the decisions you made 6 months ago.&lt;/p&gt;

&lt;p&gt;Here are 3 strategies to force AI to respect your architecture (and a tool I built to automate this).&lt;/p&gt;

&lt;p&gt;Strategy 1: feed the "Map," Not Just the Code&lt;br&gt;
AI hallucinates paths because it doesn't know your folder structure. Before asking for code, you need to provide a high-level map.&lt;/p&gt;

&lt;p&gt;❌ Don't just say: "Create a service for payments." ✅ Do this: Run the tree command and paste it into your prompt.&lt;/p&gt;

&lt;p&gt;Plaintext&lt;/p&gt;

&lt;p&gt;/src&lt;br&gt;
  /core (Base classes)&lt;br&gt;
  /features (Domain logic)&lt;br&gt;
  /shared (Utils)&lt;br&gt;
Why it works: When AI sees the tree, it understands that "Oh, business logic belongs in /features, not /shared."&lt;/p&gt;

&lt;p&gt;Strategy 2: Define "Hard Constraints" (The NO List)&lt;br&gt;
AI wants to please you, so it often takes shortcuts. You need to explicitly define what is forbidden. Create a "Rules" list.&lt;/p&gt;

&lt;p&gt;NO direct database calls in controllers.&lt;/p&gt;

&lt;p&gt;NO new npm packages without permission.&lt;/p&gt;

&lt;p&gt;ALWAYS use the custom AppError class for exceptions.&lt;/p&gt;

&lt;p&gt;If you don't enforce these, AI will default to generic internet tutorials (which are often outdated).&lt;/p&gt;

&lt;p&gt;Strategy 3: The "Decision Log"&lt;br&gt;
Code tells you what is happening, but not why. Why did we choose generic interfaces over direct typing? Why is this module isolated?&lt;/p&gt;

&lt;p&gt;If you don't document the "Why", AI will refactor your "weird code" into "standard code," breaking your specific architectural goals. Keep a DECISIONS.md file that explains your architectural history.&lt;/p&gt;

&lt;p&gt;😫 The Problem: "This is too much work"&lt;br&gt;
Doing the above manually for every single AI session is exhausting.&lt;/p&gt;

&lt;p&gt;Running tree every time you add a file?&lt;/p&gt;

&lt;p&gt;Copy-pasting rules into every new chat?&lt;/p&gt;

&lt;p&gt;Manually updating documentation?&lt;/p&gt;

&lt;p&gt;This friction is why I built CodeSyncer.&lt;/p&gt;

&lt;p&gt;🤖 Meet CodeSyncer: Automate Your Context&lt;br&gt;
I created an open-source tool called CodeSyncer to automate these exact strategies.&lt;/p&gt;

&lt;p&gt;It analyzes your project and generates a "Context Layer" that AI tools (Claude Code, Cursor, Copilot) can digest instantly.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Automated Architecture Mapping&lt;br&gt;
Instead of running tree manually, CodeSyncer generates a MASTER_CODESYNCER.md that maps your entire repo (or monorepo). AI reads this to navigate your project without getting lost.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The "Safety Brake" System&lt;br&gt;
CodeSyncer watches for dangerous keywords. If AI tries to touch critical code like Payment or Auth, CodeSyncer's rules trigger an auto-pause, forcing the AI to check your specific business constraints first.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Real-Time Watch Mode&lt;br&gt;
As you code, CodeSyncer watches your files.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bash&lt;/p&gt;

&lt;p&gt;codesyncer watch&lt;br&gt;
If you change the folder structure, it updates the documentation in real-time. Your AI assistant always has the latest map of your architecture.&lt;/p&gt;

&lt;p&gt;🚀 Give it a try&lt;br&gt;
If you want to stop fighting with AI over architecture and start shipping features that fit your design patterns, try adding CodeSyncer to your workflow.&lt;/p&gt;

&lt;p&gt;Installation:&lt;/p&gt;

&lt;p&gt;Bash&lt;/p&gt;

&lt;p&gt;npm install -g codesyncer&lt;br&gt;
Setup:&lt;/p&gt;

&lt;p&gt;Bash&lt;/p&gt;

&lt;p&gt;codesyncer init&lt;br&gt;
Then, just tell your AI: "Read CLAUDE.md".&lt;/p&gt;

&lt;p&gt;It's open-source and free. Let me know if it helps your workflow!&lt;/p&gt;

&lt;p&gt;GitHub: github.com/bitjaru/codesyncer (Stars are appreciated! ⭐)&lt;/p&gt;

&lt;p&gt;NPM: npmjs.com/package/codesyncer&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
