실전 후기

  • GitHub AI 에이전트 7개 다 봤는데 하나도 안 깐 이유

    GitHub AI 에이전트 7개 다 봤는데 하나도 안 깐 이유

    소셜 미디어에서 뭔가를 보면 일단 저장부터 한다. 나중에 쓸 것 같아서. 근데 나중이 오는 경우는 드물다.

    이번엔 달랐다. 인스타그램 어딘가에서 AI 에이전트 도구 소개 카드를 봤고, 그냥 넘기지 않았다. 스크린샷을 찍어서 Claude Code한테 바로 물어봤다.

    AI 에이전트 도구 7개, 먼저 검증했던 이유

    처음엔 3개였다. claude-mem, find-skills, VibeSec. 캡처한 카드를 Claude Code에 던지면서 물었다.

    “지금 설치돼 있어? 설치하면 나한테 좋아? 아니면 없어도 돼?”

    그냥 좋아 보인다고 깔면 안 된다는 걸 안다. 도구는 내 상황에 맞아야 쓸 수 있다. 맞지 않는 도구는 설치하는 순간부터 짐이 된다. 그래서 먼저 확인했다.

    확인 과정에서 ponytail, graphify, Ruflo, OmniRoute까지 추가로 검토하게 됐다. 결국 7개를 다 들여다봤다.

    이미 깔려있던 도구들 (claude-mem, find-skills, ponytail, graphify)

    결과부터 말하면, 4개는 이미 있었다.

    claude-mem은 8월 28일부터 설치돼 있었다. find-skills도 이미 스킬로 등록된 상태였다. 몰랐다. 쓰고 있었는데 쓰고 있는 줄 몰랐던 거다.

    ponytail은 좀 달랐다. 설치돼 있는 수준이 아니었다. 그 대화를 하는 내내 실제로 켜져서 작동하고 있었다. 이걸 확인하면서 뭔가 이해됐다. Claude Code가 항상 최소한의 코드로 답하던 게 이상하다고 생각한 적 있었는데, 그게 ponytail 때문이었다. 도구가 조용히 일하고 있었던 거다.

    graphify도 전역 설정(어떤 프로젝트에서도 공통으로 적용되는 설정)에 등록돼 있어서 언제든 쓸 수 있는 상태였다. fire-your-seo-agency 스킬을 블로그 4개에 자동 적용했을 때도 비슷한 걸 느꼈다 — 이미 깔린 걸 제대로 아는 게, 새로 까는 것보다 먼저다.

    AI 에이전트 도구 claude-mem, find-skills, VibeSec, ponytail 설치 여부를 실제 명령어로 확인한 터미널 화면

    이 네 개는 새로 깔 필요가 없었다. 이미 있으니까.

    VibeSec을 안 깐 이유: 내 프로젝트 구조와 안 맞았다

    VibeSec은 웹 취약점(XSS, SQL 인젝션 같은 것)을 잡아주는 보안 도구다.

    XSS(Cross-Site Scripting)는 악성 스크립트를 웹페이지에 심는 공격이고, SQL 인젝션은 데이터베이스 쿼리를 조작하는 공격이다. 로그인 폼, 검색창, 결제 입력칸 같은 데서 주로 생긴다.

    내 프로젝트엔 그런 게 없다. 지금 만드는 건 블로그 자동 생성 스크립트들이다. 사용자 입력을 받는 곳이 없다. 로그인도 없고 결제도 없다. 워드프레스 인증은 앱 비밀번호를 .env.local 파일(환경 변수를 저장하는 파일, 코드에 직접 비밀번호를 적지 않기 위해 사용)에 넣어서 쓰는 정도다.

    VibeSec이 잡아줄 취약점 자체가 생길 구조가 아니었다. 좋은 도구지만 내 상황엔 맞지 않는다. 그래서 안 깔았다.

    Ruflo, OmniRoute가 과했던 이유

    Ruflo는 스웜 오케스트레이션(swarm orchestration, 여러 AI 에이전트를 동시에 무리 지어 운영하는 방식) 프레임워크다.

    근데 확인해보니 사실 claude-flow라는 기존 프로젝트를 이름만 바꾼 거였다. 버전이 385개나 찍혀 있었다. 60개 넘는 에이전트를 동시에 굴리는 구조인데, 내 작업은 프로젝트마다 4~5개 역할이 정해진 순서대로 도는 방식이다. Ruflo가 필요한 상황이 아니었다. 이름을 바꿨다고 다른 도구가 되는 건 아니다.

    OmniRoute는 다른 방향에서 과했다. 여러 AI 제공사(OpenAI, 앤트로픽 같은 곳)를 하나로 묶어서 무료 할당량을 다 쓰면 자동으로 다른 모델로 넘어가는 게이트웨이(gateway, 여러 서비스를 하나로 연결하는 중간 통로)다.

    아이디어는 나쁘지 않다. 하지만 내 파이프라인 전체가 Claude 하나 기준으로 맞춰져 있다. 말투 스킬도, AI 패턴 차단 규칙도 전부 Claude 기준이다. 여기에 다른 모델을 섞으면 그동안 다듬어온 것들이 다 어긋날 수 있다. 거기다 요청이 게이트웨이를 하나 더 거치게 된다는 것도 마음에 걸렸다. 중간에 거치는 단계가 하나 늘어날 때마다 뭔가 꼬일 가능성도 하나씩 늘어난다.

    13만 개 별을 의심하고 다시 확인한 검증 과정

    ponytail 별(star, GitHub에서 사용자들이 좋은 프로젝트에 누르는 즐겨찾기 같은 것)이 13만 개, graphify가 11만 개라고 나왔다.

    이 숫자가 이상했다. 13만 개면 엄청난 숫자다. 유명한 오픈소스 프로젝트 수준이다. AI가 그냥 그럴듯하게 숫자를 지어냈을 수 있다고 생각했다. AI가 할루시네이션을 일으키는 건 알려진 사실이다.

    그래서 GitHub API(Application Programming Interface, 프로그램끼리 데이터를 주고받는 통로)로 직접 다시 확인해달라고 했다. 결과는 같은 숫자였다. 진짜였다.

    AI 에이전트 도구 ponytail과 graphify 별점을 GitHub API로 재검증한 터미널 화면, stargazers_count 값이 동일하게 확인됨

    의심했다. 확인했다. 믿었다. 이 순서가 맞다. 실제로 ponytail 저장소에 들어가면 지금도 그 별점을 직접 확인할 수 있다.

    AI가 말하는 숫자나 사실은 한 번쯤 다시 확인해야 한다. 귀찮더라도 그렇게 해야 한다. 이번엔 맞았지만, 다음에도 맞다는 보장은 없다.

    하나도 안 깐 게 오히려 정답인 이유

    7개를 다 봤다. 하나도 안 깔았다.

    처음엔 뭔가 하나쯤은 새로 깔아야 할 것 같았다. 7개를 다 확인해봤는데 결과물이 없으면 시간 낭비처럼 느껴질 것 같았다. 근데 하나씩 따져보면서 생각이 바뀌었다.

    이미 있는 건 이미 있는 거다. 없는 건 지금 내 상황에 안 맞았다. 새로 깐 게 없다는 게 실패가 아니라, 지금 쓰는 구조가 이미 내 상황에 맞게 다듬어져 있다는 확인이었다.

    뭔가를 안 하기로 결정하는 것도 결정이다. 그리고 그 결정을 내리려면 일단 확인은 해봐야 한다. 소개 카드만 보고 “좋아 보이네” 하고 깔았으면 지금 내 환경에 안 맞는 도구들이 3~4개쯤 더 쌓여 있었을 거다.

    다음엔 지금 이미 깔려 있는 도구들을 제대로 들여다볼 생각이다. ponytail이 그 대화 내내 켜져 있었다는 걸 이번에 처음 알았다. 모르고 쓰고 있는 게 또 있을 거다.

    버전이 안 맞아서 CLI가 아예 안 됐던 사례는 데몬 버전 불일치로 CLI가 안 됐던 이야기 (v1.8.7→1.8.8)에 정리했다.

  • Claude Code 스킬 정리 후기, 죽은 폴더를 가리키던 스킬 1개와 메모리 4개

    Claude Code 스킬 정리 후기, 죽은 폴더를 가리키던 스킬 1개와 메모리 4개

    블로그 예약 발행 작업을 다 끝내고 나서 문득 이런 생각이 들었다. 계속 추가만 했지, 한 번도 정리를 안 했다는 걸. 그래서 Claude Code 스킬 정리를 처음으로 해봤다.

    Claude Code 스킬 정리를 해야겠다고 생각한 이유

    Claude Code에는 스킬(skill)과 메모리(memory)라는 개념이 있다. 스킬은 “블로그 포스팅해줘”처럼 특정 말을 하면 자동으로 실행되는 루틴이다. 메모리는 Claude가 작업할 때 참고하는 기록 파일들이다. 둘 다 쓸수록 쌓인다.

    나는 작업할 때마다 스킬을 추가하고, 메모리를 저장하고, 그걸 다시 꺼내 쓰는 방식으로 Claude를 활용해왔다. 근데 돌이켜보니 한 번도 뒤를 돌아본 적이 없었다. 쌓기만 했다.

    그래서 물어봤다. “지금 메모리랑 스킬 중에 삭제해도 무관한 거 있어?”

    오래 안 쓴 것을 찾는 대신 ‘없는 것’을 찾기로 한 결정

    처음 접근은 단순했다. 마지막으로 쓴 날짜 순으로 정렬해서 오래된 것부터 지우면 될 거라고 생각했다.

    근데 그게 안 됐다.

    세션(session, 한 번의 작업 대화 기록) 기록이 3주치밖에 남아 있지 않았고, 그 안에서 스킬이 실제로 호출된 횟수는 전부 합쳐서 20번이었다. 이 데이터를 기준으로 “안 쓴 것”을 추리면 멀쩡하게 살아 있는 스킬까지 다 걸린다. 판단 기준으로 쓸 수가 없었다.

    그래서 기준을 바꿨다. Claude Code 스킬 정리의 기준을 “오래 안 쓴 것”이 아니라 “없는 걸 가리키는 것”으로 잡았다. 존재하지 않는 폴더나 폐기된 프로젝트를 참조하고 있는 항목을 찾는 거다. 이건 기간 데이터가 없어도 확인할 수 있다.

    가장 자주 쓰는 말에 걸린 죽은 스킬 발견

    첫 번째로 나온 게 blog-automation이라는 스킬이었다.

    이 스킬의 트리거(trigger, 스킬을 작동시키는 특정 말이나 조건)는 “블로그 포스팅해줘”, “포스트 만들어줘” 같은 말이었다. 내가 가장 자주 쓰는 말이다. 그런데 이 스킬이 라우팅하는 대상이 blog-generator 폴더였고, 그 폴더는 이미 삭제된 지 오래였다. ai-blog-generator도 마찬가지였다. 폐기된 프로젝트였다.

    즉, “블로그 포스팅해줘”라고 하면 없는 폴더로 cd(폴더 이동 명령어) 하는 명령이 나올 수 있는 상태였다.

    언제부터 이랬는지는 모른다. 이 스킬을 만든 건 4월이고, 프로젝트가 폐기됐다고 기록해둔 건 8월 말이다. 그사이 어디쯤에서 깨졌을 텐데 정확한 시점을 알 방법이 없다. 깨진 걸 아무도 기록하지 않았으니까.

    조금 놀랐다. 그리고 열받았다. “왜 지금까지 나한테 말을 안 해줬을까”라는 생각이 먼저 들었는데, 내가 물어본 적이 없으니 말을 안 한 거다. 틀린 말도 아니다. 그게 더 답답했다.

    지금까지 Claude와 함께 만든 것들이 — 서브에이전트 7개로 만든 블로그 파이프라인 같은 것들이 , 이 스킬을 거쳐갔다면, 쏟아부은 노력에 구멍이 있었던 거다. 멀쩡히 작동하는 것처럼 보였을 뿐이고.

    메모리 파일에서 나온 4개의 좀비 참조들

    좀비 참조란 이미 삭제되거나 폐기된 대상을 가리키는 기록을 말한다. 실제로 없는데 있다고 믿고 있는 항목들이다.

    메모리 쪽에서는 네 개가 나왔다.

    • 폐기한 tech-blog-generator의 스킬 자동 업데이트 규칙
    • 폐기한 블로그의 글자 수 기준
    • 삭제된 blog-generator의 에이전트 구성 문서
    • 색인에 아예 등록되지 않은 고아 파일 하나

    전부 존재하지 않는 것을 가리키고 있었다.

    그중 세 번째가 특히 웃겼다. 삭제된 blog-generator의 에이전트 구성 문서는 그날 만든 거였다. 몇 시간 전에 세션 정리하면서 저장한 문서인데, 그 프로젝트가 이미 폐기됐다는 걸 모르고 저장한 거다. 만든 지 반나절도 안 된 메모리가 벌써 죽어 있었다.

    쌓이는 속도보다 썩는 속도가 더 빠를 수 있다는 걸 이때 처음 실감했다.

    Claude Code 스킬 정리 후 blog-automation 스킬 삭제, 메모리 57개→53개, MEMORY.md 끊긴 링크 0건을 터미널에서 직접 확인한 화면

    정리를 다 끝내고 나서 직접 확인한 화면이다. blog-automation은 더 이상 없고, 메모리는 53개로 줄었고, MEMORY.md 안에서 실제 파일을 못 찾는 링크는 하나도 없다.

    Claude Code 스킬 정리 결과와, 지우지 않은 것들

    정리 결과는 이렇다.

    항목 정리 전 정리 후
    메모리 파일 57개 53개
    색인 파일 줄 수 125줄 113줄
    스킬 blog-automation 포함 blog-automation 삭제

    고아 파일 하나는 지우지 않았다. 내용 자체는 쓸 만했기 때문에, 이미 있던 자율 처리 규칙 안으로 합쳤다. 내용은 버리지 않고 위치만 바꾼 거다.

    요즘 안 쓰는 스킬도 몇 개 더 있었는데, 그것들은 건드리지 않았다. 이유는 단순하다. 프로젝트 폴더가 다 살아 있었다. 깨진 게 아니라 지금 당장 안 하는 일일 뿐이다. “오래 안 썼다”는 이유 하나로 지우는 건 근거가 약하다. 지우지 않았다.

    앞으로 이런 문제를 줄이려면 어떻게 해야 할까

    Claude Code 스킬 정리를 매번 내가 물어봐서 하는 게 아니라, 이런 참조 오류를 수시로 체크해서 먼저 알려주는 Claude를 만들고 싶다. 근데 내 마음대로 안 된다. 그게 답답하다.

    한편으로는 나 자신이 문제였다는 것도 안다. 원하는 결과가 나오면 거기서 멈추는 습관. 더 이상 손대지 않으려 하는 것. 정리 같은 건 생각도 안 하는 것. 이번에 발견한 구멍은 그 습관이 만든 거다.

    당장 할 수 있는 건 하나다. 프로젝트를 폐기할 때 관련된 스킬과 메모리를 같이 정리하는 것. 지금은 추가할 때만 신경 쓰고 삭제할 때는 아무것도 안 한다. 그러니까 blog-automation처럼 언제 죽었는지도 모르는 스킬이 생기는 거다.

    폴더를 지울 때 그 폴더를 참조하는 스킬과 메모리도 같이 확인해야 한다. Claude Code 스킬 정리는 그때 같이 끝내는 게 맞다. 순서가 그래야 한다. 추가할 때 꼼꼼한 것보다, 삭제할 때 꼼꼼한 게 더 중요하다는 걸 이번에 배웠다.

    다음번에 또 이런 걸 발견하면, 그때도 내가 물어봐서 찾을 거다. 그게 지금은 좀 불만이지만, 적어도 묻는 습관은 들었다.

    CLAUDE.md 쪽에서 비슷하게 발견한 중복 지침은 CLAUDE.md 정리하다 발견한 중복 지침에 정리했다.