Product Updates
Self Evolving Agents

November 11, 2026

View in English查看中文版

EvoSkill v2는 일상 업무에 무엇을 해줄 수 있을까? 실습 가이드

EvoSkill v2와 Claude Code로 이메일 작성 스킬을 훈련하고, 캠페인을 실행하며, 오픈율과 클릭률을 비교하는 실습 가이드.

EvoSkill v2는 일상 업무에 무엇을 해줄 수 있을까? 실습 가이드

Share Article:

이 글은 EvoSkill v2를 사용해 콜드 이메일 마케팅용 AI 스킬을 자동으로 만들고 개선하는 방법을 단계별로 안내합니다. 목표 지표는 오픈율과 클릭률입니다. 이 가이드의 모든 내용은 무료이며 GitHub에 공개되어 있어서, 직접 진행하는 캠페인에 그대로 가져다 쓰실 수 있습니다.

1단계: EvoSkill 설치

1. 터미널을 열고 새 폴더를 만듭니다.

필요한 파일이 모두 모일 메인 폴더입니다. 저는 Mac의 /Documents 디렉터리에 evoskill이라는 새 폴더를 만들어 사용합니다.

mkdir ~/Documents/evoskill
cd ~/Documents/evoskill

2. 다음으로 Command Line Tools가 없다면 설치합니다.

이 도구가 있으면 새 폴더 안에서 GitHub 저장소를 바로 가져올 수 있습니다. 아래를 실행하세요:

git --version

Git 최신 버전이 설치되어 있으므로 이 단계는 건너뛰어도 됩니다. 최신 버전이 없다면 다운로드하라는 안내가 표시됩니다.

3. Git에 사용자 정보를 알려줍니다.

EvoSkill은 스킬의 모든 버전을 Git으로 저장하므로, Git에 이름과 이메일이 필요합니다:

git config --global user.name "Your Name"
git config --global user.email "you@example.com"

4. EvoSkill 설치 프로그램을 실행합니다.

cd ~/Documents/evoskill
curl -fsSL https://raw.githubusercontent.com/sentient-agi/EvoSkill/main/install.sh | bash

EvoSkill이라는 폴더에 EvoSkill을 내려받고, 필요한 나머지(Python 3.12, uv, 의존성 패키지)를 자동으로 설치합니다.

5. evoskill 명령어를 어디서든 쓸 수 있게 설정합니다.

echo 'export PATH="$HOME/Documents/evoskill/EvoSkill/.venv/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

6. 이제 사용할 AI 에이전트를 설정합니다.

EvoSkill은 Claude Code, Codex CLI, OpenCode, OpenHands, Goose, Harbor 등 다양한 에이전트와 함께 작동합니다. 저는 Claude Code를 사용하겠습니다. API 키를 쓰거나 터미널에서 계정으로 로그인하면 되고, 처음 열 때 로그인 안내가 나옵니다. 저는 이미 설정해 두었기 때문에 바로 에이전트에게 인사해 보겠습니다.

claude

EvoSkill을 실행하려면 Anthropic API 키도 필요합니다. 키는 EvoSkill을 실행하는 터미널 창에서만 설정하세요:

export ANTHROPIC_API_KEY=your-key-here

키를 ~/.zshrc에 저장하지 마세요. 거기에 저장해 두면 로그인한 상태에서도 Claude Code가 구독 대신 그 키를 사용하고, 토큰당 요금이 청구됩니다. Claude Code 안에서 /status를 입력하면 어느 쪽을 쓰고 있는지 확인할 수 있습니다.

7. 이제 작동하는지 확인합니다.

evoskill --help

명령어 목록이 보이면 준비가 끝난 것입니다.

2단계: 프로젝트 설정

2~4단계는 학습 단계입니다. Claude는 다른 회사들의 출시 사례로 연습하고, 그 회사들의 실제 이메일과 비교해 채점받습니다. 먼저 Claude가 이메일을 전반적으로 더 잘 쓰게 만드는 스킬 세트를 만듭니다. 개인화와 캠페인 세부 내용은 5단계에서 다룹니다.

Claude에게 줄 브리프를 준비하고, 마음에 드는 이메일 예시를 공유하면 Claude가 이를 바탕으로 이메일 초안을 씁니다. 그러면 또 다른 Claude 에이전트가 그 초안을, 같은 브리프로 쓰인 실제 이메일과 비교해 채점합니다. 비교 대상은 제가 레퍼런스로 삼은 이메일 템플릿이고, OpenAI, Anthropic, Mistral, DeepSeek, Proton 등의 이메일일 수 있습니다.

EvoSkill v2는 채점 점수가 오를 때까지 Claude의 스킬을 계속 다시 작성합니다. 즉 시뮬레이션된 독자를 기준으로 이메일이 충분히 좋고 더 높은 오픈율과 클릭률에 맞게 최적화될 때까지 반복합니다.

이 단계가 끝나면 폴더 구조는 다음과 같이 됩니다:

~/Documents/evoskill/
    EvoSkill/            the tool from Step 1
    email-campaigns/     your project (Claude can see this)
        knowledge/       advice/references for Claude
    answer-key/          Claude never sees this
        examples/        real emails from top companies, my examples
        emails.csv       your dataset

1. 폴더 만들기

cd ~/Documents/evoskill
mkdir -p email-campaigns/knowledge answer-key/examples
cd email-campaigns
git init

참고: 정답 데이터(answer key)는 프로젝트 폴더 밖에 있어야 합니다. Claude는 프로젝트 안의 모든 파일을 읽을 수 있습니다. 실제 이메일이 안에 있으면 그대로 베껴서 아무것도 배우지 않고 만점을 받게 됩니다.

2. 지식 라이브러리 만들기

Claude가 글을 쓰기 전에 읽는 YC와 a16z의 조언 모음입니다. 프로젝트 폴더 안에서 Claude Code를 엽니다:

claude

그다음 아래 프롬프트를 붙여넣습니다. :

Save each of these pages as a markdown file in the knowledge/ folder. Put the source URL at the top of each file and keep the full text.

- https://paulgraham.com/simply.html
- https://paulgraham.com/talk.html
- https://paulgraham.com/useful.html
- https://blog.ycombinator.com/how-to-email-early-stage-investors/
- https://blog.ycombinator.com/startup-school-week-4-recap-kat-manalac-and-gustaf-alstromer/
- [add your own links here]

Then search the web for:
1. A transcript of YC's talk "How to Convert Customers With Cold Emails" by Aaron Epstein.
2. The best articles on marketing, messaging and email from a16z (a16z.com and Andrew Chen's blog).
Save the 5 best results as markdown files in knowledge/ the same way.

작업이 끝나면 /exit를 입력해 Claude Code를 닫습니다.

저는 콜드 이메일에 대한 제 노트도 마크다운 파일로 추가합니다. 직접 쓴 노트가 있다면 같은 방식으로 폴더에 복사하세요:

cp ~/Downloads/cold-email-principles.md knowledge/

3. 예시 이메일 수집하기

이제 상위 기업들의 실제 이메일이 필요합니다. 정답 폴더에 접근할 수 있도록 한 단계 위 폴더에서 Claude Code를 엽니다:

cd ~/Documents/evoskill
claude

아래 프롬프트를 붙여넣습니다. :

Find real marketing emails from these companies: OpenAI, Anthropic, Mistral AI, Proton, Linear, Stripe, Notion and Vercel.

Search email galleries like reallygoodemails.com, milled.com and emaillove.com. Example of the kind of page to look for:
https://reallygoodemails.com/emails/welcome-to-the-claude-developer-platform

Pick the 5 best emails per company: product launches, announcements, onboarding and newsletters. Save each email's text as a .txt file in answer-key/examples/, named company-short-title.txt, with the subject line on the first line. Skip any email whose text you can't read.

4. 이메일을 데이터셋으로 바꾸기

같은 Claude Code 세션에서 아래를 붙여넣습니다. :

For each file in answer-key/examples/, write a short campaign brief: company, product, audience and the goal of the email, in 2-3 sentences, without copying its wording.

Save answer-key/emails.csv with three columns:
- question: the brief
- ground_truth: the full email text
- category: the company name

Use proper CSV quoting, then tell me how many rows it has.

보시는 것처럼 이 작업을 처리하려고 서브 에이전트 8개가 생성됐습니다.

작업이 끝나면 /exit를 입력합니다.

5. EvoSkill 초기화

cd ~/Documents/evoskill/email-campaigns
evoskill init

EvoSkill이 몇 가지를 질문합니다. 제가 답한 내용은 다음과 같습니다. :

Which agent runtime? › claude
Dataset source? › CSV
Absolute path to dataset CSV? › /Users/dims/Documents/evoskill/answer-key/emails.csv
Question/input column name? › question
Answer column name? › ground_truth
Category column name? › category
Additional data directories? › (leave blank)
How do you want to run EvoSkill? › Local

이렇게 하면 두 파일이 만들어집니다. .evoskill/config.toml.(설정)과 .evoskill/task.md (작업 설명)입니다.

6. 채점 설정

설정 파일을 엽니다:

open -e .evoskill/config.toml

두 가지를 수정합니다. 먼저 [dataset]] 아래의 두 줄을 찾아 숫자를 바꿉니다. 기본값은 예시의 30%만 사용하기 때문입니다.

train_ratio = 0.6
val_ratio = 0.4

두 번째로, 맨 아래의 [scorer] 섹션을 아래 내용으로 교체합니다. 이렇게 하면 Claude가 정확히 일치하는지 찾는 대신 루브릭(채점 기준표)으로 각 이메일을 채점합니다. :

[scorer]
type = "llm"
rubric = "The expected answer is a real email written for the same brief. Use it as a quality bar, not wording to copy. Score 1.0 if the new email is as good or better: strong subject line, one clear message, a specific benefit for the reader, one clear call to action, concise and on-brand. Score 0.5 if it is usable but generic or too long. Score 0.0 if it misses the brief."

저장하고 파일을 닫습니다. TextEdit이 따옴표를 곡선 따옴표로 바꾸면 편집 → 대치 → 스마트 따옴표를 끄고 다시 붙여넣으세요.

7. 작업 설명하기

open -e .evoskill/task.md

파일의 내용을 모두 지우고 아래를 붙여넣습니다. :

# Task

You write an email marketing copy. You'll get a campaign brief with the company, product, audience and goal. Before writing, read the guides in the knowledge/ folder and apply them.

## Output format
Subject: ...
Preview text: ...
Body: ...

---

# Constraints

- Write original copy. Don't search the web for existing emails.

저장하고 파일을 닫습니다.

8. 설정 저장하기

git add .
git commit -m "Set up EvoSkill project"

Claude가 Proton과 Mistral의 이메일 예시는 가져오지 못했지만, 다른 회사들의 예시는 충분히 모았습니다. 이제 프로젝트는 3단계의 첫 실행을 위한 준비가 끝났습니다.

3단계: EvoSkill 실행

EvoSkill은 Claude가 브리프에 맞춰 이메일을 쓰게 하고, 채점한 뒤, 약한 부분을 고치도록 Claude의 스킬을 다시 쓰는 과정을 라운드마다 반복합니다. 제 데이터셋에는 예시 이메일이 26개 있고, 예산은 30~100달러, 실행 시간은 몇 시간으로 잡았습니다.

1. 지출 한도 설정하기

Anthropic 콘솔에서 API 계정의 월 지출 한도를 설정합니다. 저는 100달러로 설정했습니다. 실행이 예상보다 오래 이어질 때를 대비한 강제 중단 장치입니다.

2. 실행할 라운드 수 정하기

설정 파일을 엽니다:

cd ~/Documents/evoskill/email-campaigns
open -e .evoskill/config.toml

[evolution]아래에서 라운드 수를 7에서 10으로 바꿉니다:

iterations = 10

10라운드는 몇 시간 안에 끝나고 제 예산 안에 들어옵니다. 또한 5라운드 연속으로 개선이 없으면 EvoSkill이 알아서 멈춥니다. 파일을 저장하고 닫은 뒤, 변경 사항을 Git에 저장합니다:

git commit -am "Run 10 iterations"

3. API 키 추가하기

같은 터미널 창에서 API 키를 설정합니다. 그러면 이번 실행 비용이 Claude 구독 요금제가 아니라 API 계정으로 청구됩니다:

export ANTHROPIC_API_KEY=your-key-here

이 키는 이 창 안에서만 유지됩니다. 실행이 끝나면 창을 닫으세요. 그러면 평소의 Claude Code는 계속 구독 요금제를 사용합니다.

4. 실행 시작하기

caffeinate -i evoskill run

caffeinate -i는 실행되는 동안 Mac이 절전 모드로 들어가지 않게 합니다. 전원을 연결하고 노트북 덮개는 열어 두세요.

참고: 처음 evoskill run을 실행했을 때는 오류가 났습니다. 텍스트 편집기가 설정 파일의 직선 따옴표를 곡선 따옴표로 바꿨기 때문입니다. 이를 고치고 evoskill run을 다시 실행했더니 이번에는 시작됐습니다. 몇 시간 동안 돌려 보면서 무엇을 학습하는지 지켜보겠습니다.

5. 진행 상황 확인하기

EvoSkill은 라운드가 끝날 때마다 갱신되는 표를 출력합니다.

Accuracy(정확도)는 Claude가 받은 평균 점수입니다. “New best”는 새 스킬이 이메일을 개선해서 유지됐다는 뜻이고, “Discarded”는 개선되지 않았다는 뜻입니다. 이 경우 EvoSkill은 그 스킬을 폐기합니다. 라운드가 끝날 때마다 해당 라운드에 든 비용과 누적 비용도 출력하므로, 예산 대비 현재 위치를 항상 알 수 있습니다.

4단계: 무엇을 학습했는지 확인하기

Claude가 과연 나아졌을까요? 그리고 에이전트는 정확히 무엇을 배웠을까요?

1. 최종 결과 읽기

실행이 끝나면 EvoSkill이 상세한 리포트를 출력합니다. 제 결과는 다음과 같습니다. :

초기 기준선(baseline)보다 나았던 것은 3라운드뿐이었습니다. 나머지 라운드도 변경을 시도했지만 모두 모호했고, EvoSkill은 그 변경들을 폐기했습니다. 테스트 이메일 10개에서 76%가 79%가 된 것은 이메일 한 통 정도가 더 좋은 점수를 받았다는 뜻입니다.

보시다시피 EvoSkill은 에이전트의 실패를 분석해 부족한 스킬을 자동으로 만들고, 통과하지 못한 시도는 폐기합니다. 그 결과 어려운 벤치마크에서 빠르게 개선되고, 여러 용도에 걸쳐 일반화되는 스킬을 얻을 수 있습니다.

2. 가장 좋은 스킬 버전으로 전환하기

실행이 끝나면 프로젝트 폴더는 EvoSkill이 마지막으로 테스트한 버전에 머물러 있고, 그 버전에는 스킬이 아예 없을 수도 있습니다. [DONE]으로 시작하는 줄에서 우승 버전을 찾습니다:

[DONE] 10 iterations, best: iter-skill-3 (0.7900)

제 경우는 3이었습니다. 그 버전으로 전환합니다:

git checkout program/iter-skill-3

최고 버전을 찾을 때 evoskill diff에 의존하지 마세요. 제 실행에서는 3이 아니라 8번째 반복을 가리켰습니다.

3. 스킬 목록 보기

evoskill skills

제가 얻은 결과는 스킬 하나였습니다.

4. 스킬 읽어보기

cat .claude/skills/*/SKILL.md

Claude가 스스로를 위해 작성한 지침 전문이 출력됩니다.

저는 Claude에게 콜드 이메일 조언을 줬는데, Claude는 이 조언이 기존 고객에게 보내는 제품 이메일에는 맞지 않는다는 것을 스스로 파악하고, 그에 대한 예외 규칙(override)을 직접 만들었습니다. 그 밖에 배운 내용은 다음과 같습니다.

  • 쓰기 전에 이메일을 분류합니다. 모든 브리프를 기능 공지, 온보딩 이메일, 환영 이메일, 지원 종료(deprecation) 안내 중 하나로 분류하고, 유형마다 고유한 구조, 형식, 언어, 길이, 어조를 적용합니다.

  • 내용에 맞게 길이를 조절합니다. 기능이 한두 개인 출시는 200~400단어, 큰 플랫폼 출시는 1,000단어를 넘길 수도 있습니다. 이제 이메일 유형에 따라 글자 수를 얼마로 제한해야 하는지 압니다.

  • 알려진 실수를 피합니다. 태그라인 같은 제목, 인사말이나 맺음말 누락, 하단에 몰아 넣은 고객 인용문 같은 안티패턴 목록을 가지고 있습니다.

또한 예시에서 “Notion 2.22”나 “Cheers, Ivan” 같은 세부 표현을 가져와서, 문체가 Notion과 Stripe 쪽으로 기울어 있습니다. 거듭 말씀드리지만 마음에 드는 회사를 고르세요. 실제 캠페인에서 성과를 낸 마케팅 카피를 모은 자체 데이터베이스를 쓰면 더 잘 작동할 가능성이 높습니다.

우승 브랜치에 그대로 머무르세요(우승한 반복 버전으로 전환한 뒤에). 5단계에서는 이 스킬을 가지고 제 캠페인에 쓸 이메일을 작성하겠습니다.

5단계: 학습된 스킬로 실제 캠페인 쓰기

지금까지의 결실을 확인하는 단계입니다. Claude에게는 이제 상위 기업들의 이메일에서 배운 스킬이 있습니다. 이 스킬로 저희 제품인 EvoSkill v2의 출시 이메일을 세 가지 버전으로 씁니다. 연구자용, 빌더용, 그리고 그 밖의 모든 독자용입니다.

1. 우승 스킬을 별도 브랜치에 보관하기

아직 4단계에서 고른 우승 버전에 있는 상태입니다. 캠페인 작업이 EvoSkill의 테스트 버전들과 섞이지 않도록 별도 브랜치를 만듭니다:

cd ~/Documents/evoskill/email-campaigns
git checkout -b campaigns

2. 캠페인 자료 추가하기

캠페인용 폴더를 만들고 파일 두 개를 넣습니다. 브리프와 기술 보고서입니다. 마지막 줄은 기술 보고서를 arXiv에서 바로 내려받습니다.

mkdir -p campaign/drafts
cp ~/Downloads/evoskill-v2-brief.md campaign/
curl -L -o campaign/evoskill-v2-paper.pdf https://arxiv.org/pdf/2610.25931

브리프에는 Claude에게 필요한 모든 내용이 들어 있습니다. 이메일을 받을 대상, 링크, 논문의 핵심 결과, 푸터, 규칙(예: 숫자를 지어내지 말 것), 그리고 스타일 레퍼런스로 쓸 저희의 가장 좋았던 과거 출시 이메일입니다. 논문은 Claude가 출처와 대조해 사실을 확인할 수 있도록 넣어 둔 것입니다.

3. 새 창에서 Claude Code 열기

이 작업은 새 터미널 창에서 합니다. 3단계에서 쓴 창에는 아직 API 키가 설정되어 있어서, 그 창에서 열면 이번 세션이 Claude 구독 요금제가 아니라 API 계정으로 청구됩니다. 이메일 몇 통을 쓰는 건 가벼운 작업이라 구독 요금제로 충분합니다.

cd ~/Documents/evoskill/email-campaigns
claude

Claude Code는 이 폴더에 있는 학습된 스킬을 자동으로 불러옵니다.

4. 이메일 요청하기

아래 프롬프트를 붙여넣습니다. :

Read campaign/evoskill-v2-brief.md and use the saas-email-anatomy skill and the guides in knowledge/.

Write three versions of a mass launch email for EvoSkill v2: one for researchers, one for builders and one general version, as described in the brief. Most readers don't use EvoSkill yet, so treat this as prospecting, not a product update to existing customers. Match the style of the reference email in the brief.

Use only facts from the brief. If you're unsure about a number, check it in the technical report in campaign/.

Save each version with its subject line and preview text in campaign/drafts/: researchers.md, builders.md and general.md.

신규 고객 발굴이라는 문장이 중요합니다. 이 스킬은 기존 고객에게 보내는 제품 업데이트 이메일로 학습했기 때문에 길게 쓰는 경향이 있지만, 아직 우리를 모르는 사람에게 보내는 이메일은 짧아야 한다는 것도 알고 있습니다. 이번 이메일이 어느 쪽인지 알려 주면 맞는 규칙을 적용하게 됩니다.

5. 검토하고 다듬기

보내기 전에 각 초안을 읽어 보세요. 모든 숫자를 브리프와 대조하고, 수정은 일상적인 말로 요청하면 됩니다. 예를 들면 이렇습니다.

Make the builders version shorter and more direct.
Give me three other subject lines for the researchers version.

마음에 드는 초안이 나오면 이메일 도구에 복사해서 리스트의 해당 세그먼트에 발송하세요.

모든 준비가 끝났습니다!

Claude에게 원하는 바를 훨씬 더 자세히 적은 브리프를 주고, 가능한 한 많은 레퍼런스를 먹이고, 최종 스킬을 한두 번 더 반복해서 다듬으면 카피를 더 완성도 높게 만들 수 있습니다. 직접 써본 적 없는 카피라이팅이, 성과가 한곳으로 수렴하는 이메일로 바뀝니다.

이제 만들어 둔 다양한 콜드 이메일 버전을 어떻게 쓸지는 여러분 몫입니다. 캠페인을 시작하고, A/B 테스트를 돌리고, 지표를 수집하고, 그 데이터를 모두 EvoSkill에 다시 넣어 주세요. EvoSkill은 실제 마케팅 캠페인의 피드백에서 배워서 다음 캠페인을 더 좋게 만듭니다.

저는 직접 시험해 보기로 했습니다. 제가 이메일을 한 통 직접 썼고, 그다음 EvoSkill로 Claude 에이전트를 학습시켜 완전히 같은 브리프로 에이전트가 자기 버전을 쓰게 했습니다. 파인튜닝도, 새 모델도 없었습니다. 시행착오로 찾아낸 더 나은 지침만 있었습니다. 두 버전은 같은 발신자와 같은 리드 풀로 API를 통해 나란히 발송했습니다.

두 버전 모두 같은 발신자에서 같은 리드 풀로 Resend API를 통해 발송했고, 세 개의 배치로 무작위 분할했습니다.

EvoSkill은 제가 직접 쓴 카피와 비교해 콜드 이메일 성과를 오픈율 +5.2%, 클릭률(CTR) +2.4% 개선했습니다.

가장 최근 실행에서는 EvoSkill의 초안에만 전적으로 의존했고, **오픈율 38.72%, 클릭률 6.69%**를 달성했습니다. 이는 성과가 안정적이라는 신호라고 결론지어도 될 것 같습니다(그리고 도메인이 잘 워밍업되어 있다는 뜻이기도 합니다!).

10번의 반복 동안 EvoSkill은 에이전트를 제 작업에 맞게 조정했고, 모든 A/B 배치에서 오픈율과 클릭률 모두 성과를 끌어올렸습니다.

오픈소스 커뮤니티에 대한 기여

이 가이드의 모든 내용은 GitHub에 무료로 공개되어 있습니다: EvoSkill 이메일 마케팅 예제 저장소

두 가지 방법으로 쓸 수 있습니다.

  1. 지금 당장 더 나은 이메일을 원한다면, 제 실행에서 만들어진 스킬을 여러분의 프로젝트에 복사하고 템플릿을 채우세요. 돈, 시간, 컴퓨팅을 쓸 필요가 없습니다.
  2. 직접 보유한 이메일로 학습시키고 싶다면, 저장소에 준비된 설정 파일, 채점 루브릭, 작업 파일, 프롬프트가 있습니다. 제가 진행하면서 겪은 모든 실수의 목록도 있습니다. 시행착오로 배우고 실제 캠페인에서 검증한 내용입니다.

제가 만든 휴머나이저(humanizer) 버전으로 이메일을 한 번 더 다듬을 수도 있습니다: https://github.com/qzxcle/signs-of-ai-writing-skill. 위키백과 편집자 커뮤니티는 AI 챗봇에서 흔히 보이는 글쓰기 패턴을 모아 하나의 위키 문서로 정리했습니다. /signs-of-ai-writing은 이 문서를 바탕으로 SKILL.md 파일로 확장한 것으로, 에이전트가 초안에서 뻔한 AI식 글을 걸러내도록 돕습니다.

저희의 자가 진화(autoevolving) 프레임워크는 범용이라, 어떤 에이전트 워크플로우든 훨씬 더 낫게 만들 수 있습니다. 다음으로 보고 싶은 활용 사례가 있다면 알려 주세요.


Article by Sentient Growth Marketer @qzxcle

Check out his work at https://x.com/qzxcle