본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 21. 22:13

Claude Code에게 스스로 스킬을 작성하게 하여 키우기 ― 자기 증식하는 에이전트 환경

요약

Claude Code가 작업 중 발견한 재사용 가능한 절차를 스스로 '스킬(Skill)'로 기록하고 관리하는 자기 증식형 에이전트 환경 구축 방법을 소개합니다. 세션 중 생성과 야간 배치 생성을 분리하고, Curator를 통해 스킬의 품질을 유지하는 메커니즘을 다룹니다.

핵심 포인트

  • Claude Code가 스스로 절차를 찾아 스킬로 기록하는 자동화 설계
  • 세션 중 즉시 생성과 야간 배치(cron)를 통한 2단계 스킬 생성 구조
  • 스킬 난발 방지를 위한 트리거 제한 및 중복 체크 로직
  • Curator를 활용한 스킬 정리 및 격리된 네임스페이스 관리

지난번에는 Claude Code의 기억을 4개의 층으로 나눈 이야기에 대해 썼습니다. 이번에는 그 후속편으로, Claude Code 스스로 '재사용 가능한 절차'를 찾아내어 스킬(Skill)로 기록해 나가는 메커니즘에 대해 이야기하고자 합니다.

수개월간 운용한 결과, 현재 ~/.claude/skills/auto/에는 자동 생성된 스킬이 64개 쌓여 있습니다. 이 기사에서는 그 자기 증식의 설계, 난발(亂造)을 방지하는 장치, 그리고 운용하며 알게 된 생성 곡선에 대해 기술합니다.

Claude Code는 우수하지만, 세션이 바뀌면 "이전에 이 에러를 어떻게 회피했는지"를 잊어버립니다. launchd의 exit 78 해결 방법, png-to-ico로 favicon을 만드는 절차, Next.js의 RSC 페이로드(Payload)를 줄이는 방법 ―― 이런 한 번 해결했을 법한 절차를 매번 처음부터 다시 구성하곤 했습니다.

CLAUDE.md에 직접 손으로 써넣는 방법도 있지만, 그렇게 하면 "깨달은 내가 직접 작성한다"는 운영 방식이 되어 지속하기 어렵습니다. 그래서 발상을 바꾸어, 절차를 찾아내는 작업 자체를 Claude에게 맡기기로 했습니다.

스킬 생성은 두 가지 층으로 나누어져 있습니다.

타이밍비용담당
세션 중 생성작업 도중 수시로무료·즉시CLAUDE.md의 지시에 따르는 Claude 본체
야간 배치 생성매일 3:30 cronMax 프레임 소비skill-harvest.sh (claude -p 헤드리스)

그리고 쌓인 스킬을 정기적으로 정리하는 Curator (skill-curate.sh)가 주 단위로 실행됩니다. 생성과 정리를 별도의 프로세스로 분리하는 것이 포인트입니다.

CLAUDE.md에는 다음과 같이 적혀 있습니다 (발췌).

## 스킬 자기 생성 (auto-skills)
작업 중에서 재사용 가치가 있는 절차를 발견하면, 요청받지 않아도 스스로 스킬화한다.
단, 난발하지는 않는다.
...

핵심은 "단, 난발하지는 않는다"라고 명시하고, 트리거를 4개로 제한한 것입니다. 이를 적지 않으면 Claude는 무엇이든 스킬화하여 금방 노이즈로 가득 차게 됩니다.

세션 중에 미처 적지 못한 절차를 야간 배치가 대화 로그에서 찾아냅니다. skill-harvest.sh의 파이프라인은 다음과 같습니다.

  • .harvest-watermark (이전 처리 위치)를 읽음
  • 대화 로그 (raw/conversations/*.md)에서 watermark 이후의 차분을 추출
  • claude -p 헤드리스로 빈번한 패턴을 추출 (출현 횟수 5회 초과인 것만 채택)
  • 기존 스킬 64개 전체와 kebab-name으로 중복 체크
  • cost-guard hook으로 토큰 사용량을 모니터링하며, 임계값 초과 시 중단(abort)
  • 신규 후보를 <name>/SKILL.mdfrontmatter + Procedure / Pitfalls / Verification의 3개 섹션으로 작성
  • 마지막에 Curator를 트리거하여 오래된 스킬을 퇴피(evacuate)
  • watermark를 업데이트하고 로그에 추가

claude -p는 지난 기사에서 언급한 헤드리스(Headless) 기동입니다. Max 프레임으로 실행되므로 API 키 과금은 제로입니다.

자동 생성된 스킬은 수동 작성 스킬이나 플러그인 포함 스킬과 같은 장소에 두지 않습니다. ~/.claude/skills/auto/라는 격리된 네임스페이스에 몰아넣었습니다. 이유는 두 가지입니다.

  • npx skills update -g가 관리하는 것은 lock에 등록된 스킬뿐입니다. auto/에 있는 것은 lock에 넣지 않으므로 → 일일 업데이트 시 삭제되지 않습니다.
  • Curator는 "auto/ 하위에 있고 author: auto인 것"만을 대상으로 합니다 → 수동 작성 스킬이나 번들 스킬에는 절대 손대지 않습니다.

author: auto가 Curator의 대상 판정 키이며, frontmatter에 필수 항목으로 지정되어 있습니다.

---
name: <kebab-case>
description: <발화 조건을 구체적으로>
...

생성만 해두면 스킬은 부패합니다. Curator가 주 단위로 다음과 같이 동작합니다.

  • 실행 전 .snapshots/로 tar.gz 스냅샷 생성
  • 30일 미사용 → status: stale로 강등
  • 90일 미사용 → .archive/로 이동

로 대피 (실제 삭제는 하지 않음 · 명령어로 복구 가능) - 중복 및 저품질 항목의 통합은 .curator-proposals.md제안만 작성 (자동 적용하지 않음)

Curator가 자동으로 삭제하게 만들지 않는 것이 안전 설계의 핵심입니다. "30일 동안 만지지 않았다"는 것이 반드시 스킬의 품질이 나쁘다는 뜻은 아닙니다 (단지 그 작업을 하지 않았을 뿐일 수 있습니다). 따라서 강등과 대피 단계에 머물게 하여, 최종 판단은 인간의 몫으로 남겨둡니다.

created: 분포를 보면, 도입 직후 3일(5/28~30) 동안 28개가 한꺼번에 언어화되었고, 그 이후에는 하루에 몇 개 수준으로 떨어졌습니다. 이는 직관과 일치합니다. 과거에 쌓여 있던 "언어화되지 않은 절차"가 초기에 방출되고, 그 이후에는 새로 접한 절차만 추가되기 때문입니다.

12 created: 2026-05-30
9 created: 2026-05-29
7 created: 2026-06-09
...

오늘 아침의 harvest 로그가 이것입니다.

대화 로그를 정밀 조사한 결과, 다음의 이유로 해당 사항 없음.
- Codex CLI 설정 → codex-cli-setup이 이미 존재함
- /insights를 CLAUDE.md에 반영 → insights-to-claude-md가 이미 존재함
...

created=0.
기존 스킬과의 중복을 걸러내고, 개인적인 사정으로 인한 일회성 내용도 걸러내어, 0개 생성으로 정상 종료되었습니다. 무분별하게 생성하지 않는 설계가, 헛스윙을 "올바른 헛스윙"으로 처리하고 있다는 증거입니다. 여기서 무턱대고 생성해 버리면 64개가 금방 200개로 불어나 노이즈가 됩니다.

실제 스킬의 Pitfalls (함정) 섹션에서 효과적이었던 내용들입니다.

  • claude -p가 시스템 프롬프트(system prompt) 전체를 로드하여 토큰 제한(token cap)에 걸림 → MAX_THINKING_TOKENS=10000으로 억제
  • 워터마크(watermark)를 전진시키는 것을 잊어 동일한 로그를 중복 추출 → 로그의 last completed offset을 반드시 확인
  • kebab-name의 grep만으로는 퍼지 중복(fuzzy duplicate)을 놓침 → description embedding 비교가 개선 여지(미구현)
  • launchd가 3:30에 실행되지만 Mac이 sleep 상태일 때는 작업이 스킵됨pmset의 wake on schedule 권장
  • 헤드리스(headless) 환경에서 MCP server를 모두 로드하면 기동이 느림 → harvest 전용의 minimal config를 별도 경로로 관리

전체 파이프라인은 필요 없습니다. CLAUDE.md에 한 블록을 추가하는 것만으로 1단계(Layer 1)는 작동합니다.

  • ~/.claude/skills/auto/ 디렉토리를 생성
  • CLAUDE.md에 "재사용 가치가 있는 절차를 발견하면 스스로 스킬화한다. 단, 무분별하게 생성하지 않는다" + 4가지 트리거 조건을 작성
  • frontmatter에 author: auto를 필수화 (나중에 정리할 때의 표식)

이것만으로도 작업을 할 때마다 스킬이 조금씩 늘어납니다. 야간 배치(nightly batch)와 Curator는 스킬이 쌓여서 "정리하고 싶다"고 느껴질 때 추가해도 늦지 않습니다.

  • 스킬 생성을 세션 중(무료)과 야간 배치(누락분 회수)의 2층 구조로 분리
  • 무분별하게 생성하지 말 것을 프롬프트에 명시하고 트리거를 제한. 0개 생성(헛스윙)은 정상
  • 자동 생성은 auto/에 격리하고, author: auto를 Curator의 대상 키로 지정
  • Curator는 삭제하지 않음 · 강등과 대피 및 제안만 수행. 최종 판단은 인간이 수행
  • 우선은 CLAUDE.md에 한 블록부터 시작

다음에는, 이 스킬이 너무 많아져서 Claude Code 자체가 무거워진 이야기 ―― **컨텍스트 주입(context injection)을 228KB에서 48KB로 줄인 감사(audit)**에 대해 쓰겠습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0