Product Updates
Self Evolving Agents

November 11, 2026

What Can EvoSkill v2 Do for Your Daily Workflow? A Hands-On Guide

A hands-on guide to using EvoSkill v2 and Claude Code to train email-writing skills, run a campaign, and compare open and click-through rates.

What Can EvoSkill v2 Do for Your Daily Workflow? A Hands-On Guide

Share Article:

This is a step-by-step guide on how to use EvoSkill V2 to automatically create and improve AI skills for cold email marketing, with open and click-through rates as the target metrics. Everything in this guide is free and available on GitHub if you want to simply plug and play in your own campaigns.

Step 1: Install EvoSkill

1. Open your terminal and create a new folder.

This is going to be the main place with all the necessary files. I’ll use my /Documents directory on Mac where I create a new folder named evoskill.

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

2. Next you’ll need to install Command Line Tools if you don’t have it yet.

This will allow you to easily pull any repository from GitHub right inside the new folder. Run this:

git --version

I have the latest version of git, so I can skip this step. If you don’t you’ll be prompted to download it.

3. Tell Git who you are

EvoSkill saves every version of your skills with Git, so Git needs a name and email:

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

4. Run the EvoSkill installer

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

This downloads EvoSkill into a folder called EvoSkill and installs everything else it needs (Python 3.12, uv, and the dependencies) automatically.

5. Make the evoskill command work everywhere

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

6. Set up an AI agent of your choice.

EvoSkill works with Claude Code, Codex CLI, OpenCode, OpenHands, Goose, Harbor, and many more. I’ll use Claude Code. You can use either your API key or just log in to your account via terminal. You’ll be prompted to log in the first time you open it. I already have it set up, so I’ll go straight ahead and greet my agent.

claude

To run EvoSkill, you’ll also need an Anthropic API key. Set it only in the terminal window where you run EvoSkill:

export ANTHROPIC_API_KEY=your-key-here

Don’t save the key in your ~/.zshrc. If it’s saved there, Claude Code will use it instead of your subscription, even when you’re logged in, and bill you per token. Type /status inside Claude Code to check which one it’s using.

7. Check that it works.

evoskill --help

If you see a list of commands, you’re ready.

Step 2: Set up your project

Steps 2 - 4 will be training steps. Claude practices on other companies’ launches and gets graded against their real emails. We’re going to first create a set of skills that make Claude better at writing emails in general. Personalization and campaign details come in Step 5.

Prepare a brief to Claude based and share examples of what kind of emails you like so it can draft up the email. Then, another Claude agent will grade that email against a real email from my references, i.e. the email templates I like (could be from OpenAI, Anthropic, Mistral, DeepSeek, Proton or any other template you like), written for the same brief.

EvoSkill v2 will keep rewriting Claude’s skills until the grades go up (meaning, until the email is good enough and optimized for higher open rates and click through rates, judged against a simulated audience).

By the end of this step, your folders will look like this:

~/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. Create your folders

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

Note: The answer key has to live outside the project folder. Claude can read everything inside the project, so if the real emails were in there, it would just copy them and score perfectly without learning anything.

2. Build the knowledge library

This is the advice from YC and a16z that Claude reads before writing. Open Claude Code inside the project folder:

claude

Then paste this prompt:

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.

When it’s done, type /exit to close Claude Code.

I also add my own notes on cold emails, saved as a markdown file. If you have notes of your own, copy them into the folder the same way:

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

3. Collect example emails

Now we need real emails from top companies. Open Claude Code one folder up, so it can reach the answer key:

cd ~/Documents/evoskill
claude

Paste this prompt:

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. Turn the emails into a dataset

In the same Claude Code session, paste:

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.

as you see it spawned 8 sub agents to run through the task.

Type /exit when it’s done.

5. Initialize EvoSkill

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

EvoSkill asks a few questions. Here’s how I answer them:

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

This creates two files: .evoskill/config.toml (your settings) and .evoskill/task.md (your task description).

6. Set up the grading

Open the settings file:

open -e .evoskill/config.toml

Make two changes. First, find these two lines under [dataset] and change the numbers, because the defaults only use 30% of the examples:

train_ratio = 0.6
val_ratio = 0.4

Second, find the [scorer] section at the bottom and replace it with this, so Claude grades each email with a rubric instead of looking for an exact match:

[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."

Save and close the file. If TextEdit turns your quotes curly, turn off Edit → Substitutions → Smart Quotes and paste again.

7. Describe your task

open -e .evoskill/task.md

Delete everything in the file and paste this:

# 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.

Save and close the file.

8. Save your setup

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

Even though Proton and Mistral email examples weren’t fetched by Claude, it still collected a solid body of examples from other companies. Your project is now ready for the first run in Step 3.

Step 3: Run EvoSkill

EvoSkill has Claude write emails for the briefs, grades them, and rewrites Claude’s skills to fix the weak spots, round after round. My dataset has 26 example emails, and I set this up for a budget of $30–$100 and a few hours of running time.

1. Set a spending limit

In the Anthropic Console, set a monthly spending limit on your API account. I set mine to $100. It’s a hard stop in case anything runs longer than expected.

2. Choose how many rounds to run

Open the settings file:

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

Under [evolution], change the number of rounds from 7 to 10:

iterations = 10

Ten rounds fits a few hours and stays inside my budget. EvoSkill also stops on its own if 5 rounds in a row bring no improvement. Save and close the file, then save the change in Git:

git commit -am "Run 10 iterations"

3. Add your API key

In the same terminal window, set your API key so the run is billed to your API account instead of your Claude plan:

export ANTHROPIC_API_KEY=your-key-here

The key only lives in this window. Close it when the run is done, and your normal Claude Code keeps using your plan.

4. Start the run

caffeinate -i evoskill run

caffeinate -i keeps your Mac awake for as long as the run lasts. Keep it plugged in with the lid open.

Note: I got an error the first time I tried to evoskill run because my text editor changed straight quotes in the config file to rounded quotes. I had to fix that and rerun evoskill run. This time it started running. Let’s give it a few hours and see what it learns.

5. Watch the progress

EvoSkill prints a table that updates after every round.

Accuracy is Claude’s average grade. “New best” – the new skills improved the emails and were kept. “Discarded” — they didn’t. EvoSkill literally discarded them. After every round it also prints what that round cost and the running total, so you always know where you are against your budget.

Step 4: Let’s see what it learned

Did Claude get better even, and what exactly did the agent learn?

1. Read the final results

When the run finishes, EvoSkill prints a detailed report. Here’s mine:

Only round 3 was better than the initial baseline. The other rounds tried changes but all were vague. EvoSkill discarded them. Going from 76% to 79% on 10 test emails is about one email graded better.

As you see, EvoSkill analyzes agent failures and automatically builds the missing skills, discards failing passes, leading to rapid improvement on difficult benchmarks and generalizable skills across use-cases

2. Switch to the best skill version

After the run, your project folder is left on whichever version EvoSkill tested last, and that one may have no skills at all. Find the winner in the line that starts with [DONE]:

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

In my case it was 3. Switch to it:

git checkout program/iter-skill-3

Don’t rely on evoskill diff to find the best version. In my run, it pointed to iteration 8 instead of 3.

3. List the skills

evoskill skills

Mine learned one skill:

4. Read the skill

cat .claude/skills/*/SKILL.md

This prints the full instructions Claude wrote for itself.

I gave Claude cold-email advice, and it worked out on its own that this advice doesn’t fit product emails to existing customers, so it wrote itself an override. Here’s what else it learned:

  • Sort the email before writing it. Every brief gets classified as a feature announcement, onboarding email, welcome email or deprecation notice, and each type has its own structure, format, language, length and tone.

  • Match the length to the content. A launch with one or two features gets 200–400 words; a big platform launch can run past 1,000. Depending on the type of the email, it now knows how many characters it must limit itself to.

  • Avoid known mistakes. It keeps a list of anti-patterns, like tagline subject lines, a missing greeting or sign-off, and customer quotes collected at the bottom.

It also borrowed some details from the examples, like “Notion 2.22” and “Cheers, Ivan”, so its style leans toward Notion and Stripe. Once again, you should pick companies you like — or use your own database of winning marketing copies from real campaigns, that would probably work even better.

Stay on the winning branch (after you changed to your winning iter). In Step 5, I’ll take this skill and use it to write emails for my own campaigns.

Step 5: Write a real campaign with the trained skill

This is the payoff. Claude now has a skill it learned from top companies’ emails, so I’ll use it to write the launch email for EvoSkill v2, our own product, in three versions: one for researchers, one for builders and one for everyone else.

1. Keep the winning skill on its own branch

You’re still on the winning version from Step 4. Give it its own branch, so your campaign work stays separate from EvoSkill’s test versions:

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

2. Add your campaign materials

Make a folder for the campaign and put two files in it: the brief, and the technical report, which the last line downloads straight from 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

The brief holds everything Claude needs: who the email is for, the links, the key results from the paper, the footer, the rules (like no invented numbers) and our best past launch email as a style reference. The paper is there so Claude can check facts against the source.

3. Open Claude Code in a new window

Open a new terminal window for this. The window from Step 3 still has your API key set, which would bill this session to your API account instead of your Claude plan. Writing a few emails is light work, so your plan is fine here.

cd ~/Documents/evoskill/email-campaigns
claude

Claude Code automatically picks up the trained skill from this folder.

4. Ask for the emails

Paste this prompt:

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.

The line about prospecting matters. The skill learned from product updates to existing customers, which tend to be long, but it also knows that emails to people who don’t know you yet should be short. Telling it which kind this is points it to the right rules.

5. Review and refine

Read each draft before sending. Check every number against the brief, and ask for changes in plain language, for example:

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

When you’re happy with them, copy the drafts into your email tool and send them to the right segments of your list.

You’re all set!

You can further refine the copy by giving Claude a much more detailed brief of what you want, feeding it as many references as possible, and iterating once or twice on the final skill. That will turn the copywriting — the one you never wrote yourself — into a highly converging email.

Now it's up to you to decide what to do with all the variations of cold emails you've generated. Launch the campaign, run A/B tests, collect the metrics, and feed all that data back into EvoSkill. It will learn from feedback from real marketing campaigns and make the next one better.

I decided to give it a test run. I wrote one email myself, then trained a Claude agent with EvoSkill and let it write its own version using exactly the same brief. No fine-tuning, no new model. Just better instructions, discovered through trial and error. We sent both versions side by side via API, using the same sender and the same pool of leads.

Both versions were sent through the Resend API from the same sender to the same pool of leads, randomly split across three batches.

EvoSkill improved my cold email performance by +5.2% in open rate and a +2.4% in CTR compared with my own copywriting.

In my latest run, I relied entirely on EvoSkill's draft, achieving a 38.72% open rate and a 6.69% click-through rate. Which, I may conclude, is a sign of stable performance (and well warmed up domains!).

Over 10 iterations, EvoSkill tailored the agent specifically to my task, improving its performance on both open rates and click-through rates across all A/B batches.

Contribution to the open-source community

Everything from this guide is free on GitHub: EvoSkill email marketing example repository

You can use it in two ways.

  1. If you want better emails right now, just copy the skill created from my run into your project and fill in the template. No need to spend money, time, and compute.
  2. If you’d rather train on your own emails, the repo has the ready config, grading rubric, task file and prompts. There you can also find a list of every mistake I ran into along the way. It’s one less iteration towards a perfect email, learned from trial and error, tested on a real campaign.

You can also run the emails through my version of the humanizer: https://github.com/qzxcle/signs-of-ai-writing-skill. The Wikipedia editing community gathered telltale writing patterns typical of AI chatbots and packaged them into one wiki article. /signs-of-ai-writing was extrapolated from it into a SKILL.md file to help your agents eliminate slopwriting from your drafts. This will add another layer of “de-AI-ification” to Claude’s writing. It’s a great addition to the list of references provided to Claude in the brief.

Our autoevolving framework is universal and can make any agentic workflow much better. Let me know what use case you want to see next.


Article by Sentient Growth Marketer @qzxcle

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