Generate a personalized outbound message (LinkedIn DM or cold email) for a single prospect by combining a template with the lead's profile, company, and recent signals.

MITAuto-check: notesSales & Support

Install Personalize Message

skills CLI
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill personalize-message -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Othmane-Khadri/YALC-the-GTM-operating-system personalize-message --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/personalize-message .claude/skills/personalize-message && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
personalize-message
GitHub stars
317
Token cost
~1.3k tokens
SKILL.md length
583 words
Files
2 (incl. references)
Skills in repo
57
Repo updated
First seen
Licence
MIT

At a glance

Generate a personalized outbound message (LinkedIn DM or cold email) for a single prospect by combining a template with the lead's profile, company, and recent signals.

  • Works in 6 steps: Ask for inputs → Validate → Shell out → …
  • The user says personalize this message
  • SKILL.md covers When This Skill Applies, What This Skill Does, What This Skill Does NOT and Pre-flight, plus 3 more sections
  • Calls npx

What it does

Personalize Message is an agent skill from Othmane-Khadri/YALC-the-GTM-operating-system. Generate a personalized outbound message (LinkedIn DM or cold email) for a single prospect by combining a template with the lead's profile, company, and recent signals. Use when the user says 'personalize this message', 'tailor this outreach to the prospect', 'rewrite this template for [name]', 'make this message more personal', or 'generate a personal opener'. Side-effecting — calls Anthropic and may pull live profile/company context via Firecrawl/Unipile/Crustdata.

Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/example-output.md`).

It sits in Sales & Support, covering Cold outreach and Web scraping. It works with LinkedIn and Firecrawl. The repository describes itself as: YALC 1.0, the open-source Clay alternative. MIT, CLI-first, self-hosted, runs in Claude Code. Yalc today is an intelligent orchestration layer that runs pre configured GTM agents…. The licence is MIT.

When your agent uses it

  • The user says personalize this message
  • Tailor this outreach to the prospect
  • Rewrite this template for [name]
  • Make this message more personal

Example prompts

  • “s profile, company, and recent signals. Use when the user says”
  • “tailor this outreach to the prospect”
  • “rewrite this template for [name]”
  • “/personalize-message”

Requirements

  • Node.js

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Ask for inputs
  2. Validate
  3. Shell out
  4. Parse output
  5. Render
  6. Offer follow-ups

What it can do on your machine

Read from SKILL.md and the folder at commit 5686d1f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Personalize Message loads about 1.3k tokens when it runs, and up to ~2k if it reads all its reference files. Until then it costs about 123 tokens; SKILL.md has 583 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~123
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:80
    cd ~/Desktop/gtm-os && set -a && source .env.local && set +a && \

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Othmane-Khadri/YALC-the-GTM-operating-system at commit 5686d1f, republished under its MIT licence (© Othmane-Khadri). 583 words, ~1,309 tokens.

Download SKILL.mdSave it as .claude/skills/personalize-message/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
personalize-message
description
Generate a personalized outbound message (LinkedIn DM or cold email) for a single prospect by combining a template with the lead's profile, company, and recent signals. Use when the user says 'personalize this message', 'tailor this outreach to the prospect', 'rewrite this template for [name]', 'make this message more personal', or 'generate a personal opener'. Side-effecting — calls Anthropic and may pull live profile/company context via Firecrawl/Unipile/Crustdata.
version
1.0.0

Personalize Message

I'll wrap personalize. I'll ask for the template + target lead, validate inputs, run the CLI, and surface the personalized variant with reasoning so you can approve before sending.

When This Skill Applies

Use this skill when the user says:

  • "personalize this message"
  • "tailor this outreach to the prospect"
  • "rewrite this template for [name]"
  • "make this message more personal"
  • "generate a personal opener"

NOT this skill (use qualify-leads instead):

  • "score these leads" / "qualify these leads" — that runs the 7-gate pipeline, not per-lead copy generation.

NOT this skill (use launch-linkedin-campaign instead):

  • "send a LinkedIn outreach to this list" / "start the outbound" — campaign launch handles bulk personalization + sending. This skill is one lead at a time.

NOT this skill (use send-cold-email instead):

  • "send this email to [name]" — sending is downstream. This skill produces the variant; you choose where it goes.

What This Skill Does

  1. Asks for the message template (or accepts pasted text inline) and the target lead (email, linkedin URL, or full record).
  2. Validates inputs — template non-empty, lead resolvable.
  3. Shells out to npx tsx src/cli/index.ts personalize --template <text> --email <email> (or with --linkedin-url, --first-name, etc.).
  4. Parses the CLI output — variant text, reasoning, cost.
  5. Renders the variant cleanly with a "regenerate?" affordance.

What This Skill Does NOT

  • Send the message. That's send-cold-email (email) or launch-linkedin-campaign (LinkedIn) or your manual paste-and-send.
  • Generate sequences (DM1 + DM2 + follow-ups). That's launch-linkedin-campaign --variants <n>.
  • Modify the underlying template or prompt — only the per-lead substitution.

Pre-flight

  1. Onboarding interruption guard. Run:

    bash
    test -f ~/.gtm-os/.in-flight-setup && echo "BLOCKED" || echo "OK"

    If BLOCKED, stop and tell the user to finish yalc-gtm start first.

  2. Confirm cwd is ~/Desktop/gtm-os/.

Workflow

Step 0 — Ask for inputs

One question at a time:

  1. What's the template? A few sentences with placeholders the prospect's profile can fill (e.g. {{first_name}}, {{company}}). If they paste raw text, that's the --template value.
  2. Which lead? Email is the default identifier (--email <email>). They can also pass:
    • --linkedin-url <url> (alternative to email)
    • --first-name <name> / --last-name <name> / --company <name> (manual override fields)
    • --linkedin-account <id> (multi-account routing)
    • --channel <email|linkedin|any> (default: email)
    • --enrich (pull live profile/company context before generating)
  3. Any toggles? Ask only if volunteered:
    • --dry-run (preview without persisting; default behavior)
    • --segment-id <id> (route through a segment-specific brand voice)
Show full SKILL.md (216 more words)Show less
Step 1 — Validate
  • Template non-empty, plausible (not just {{first_name}}).
  • Lead identifier (email, linkedin URL, or first-name+company combo) present.
  • If --channel linkedin, ensure a Unipile account is configured.
Step 2 — Shell out
bash
cd ~/Desktop/gtm-os && set -a && source .env.local && set +a && \
  npx tsx src/cli/index.ts personalize --template "<text>" --email "<email>"

Per the 0.13.0 benchmark, single-command side-effecting skills shell out unconditionally. Anthropic API calls + optional Firecrawl/Unipile context pulls = side-effecting.

Step 3 — Parse output

personalize emits the personalized variant + reasoning + cost. On non-zero exit, surface stderr verbatim.

Step 4 — Render

Show:

  • The personalized variant (verbatim)
  • The reasoning trail (why this opener vs. another)
  • Token cost + any context the system pulled (Firecrawl page, Unipile profile, Crustdata signals)
Step 5 — Offer follow-ups

"Want me to also: (a) regenerate with a different angle (re-run with a tweaked template)? (b) batch-personalize this template across a result set via the campaign launcher? (c) pipe this into a LinkedIn campaign via launch-linkedin-campaign?"

Don't run anything unless the user says yes.

Failure surfacing — verbatim

When personalize exits non-zero (missing key, Anthropic 429, lead not found), paste the stderr unchanged.

Notes

  • Default channel is email. Switch to linkedin for DM-style copy.
  • --enrich adds latency (~5s for Firecrawl + ~2s for Unipile profile) but produces dramatically more specific openers. Recommend it whenever the lead is high-value.
  • The CLI's --dry-run is true by default — nothing gets sent. You always review before manually pasting or piping into a campaign.

© Othmane-Khadri, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in .claude/skills/personalize-message of Othmane-Khadri/YALC-the-GTM-operating-system.

  • SKILL.md
  • references/example-output.md

Open the folder on GitHubat commit 5686d1f

Compare with similar skills

Personalize Message next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Personalize Message compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Personalize Message this skillOthmane-Khadri/YALC-the-GTM-operating-system317—~1.3kAutomated safety check: NotesMIT
Pain Language Engagersgooseworks-ai/goose-skills1.2k1 repos~2.1kAutomated safety check: NotesMIT
Apify Buying Signal Detectionapify/awesome-skills265—~5.1kAutomated safety check: NotesApache-2.0
Linkedin Comment To Outreachgethouston/houston117—~2.1kAutomated safety check: PassMIT
Prospectingcoreyhaines31/marketingskills54k—~5kAutomated safety check: PassMIT
Sales OsromangojiberryAI/gojiberryai-sales-os139—~2kAutomated safety check: PassMIT

Similar skills

  • Pain Language Engagers

    gooseworks-ai/goose-skills

    Find warm leads by searching LinkedIn for pain-language posts — the frustrations, complaints, and operational struggles your ICP talks about publicly.

    1.2k GitHub starsUsed in 1 repo~2.1k tokens
    Sales & SupportAuto-check: notes
  • Apify Buying Signal Detection

    apify/awesome-skills

    Official

    Set up a recurring buying-signal detection pipeline that finds companies showing buying intent across three signal types — job postings (hiring for the persona), fundraising events (recent raises)…

    265 GitHub stars~5.1k tokensUpdated 16 days ago
    Business, Finance & HRAuto-check: notes
  • Turn a single LinkedIn post URL into a paused cold email campaign in Instantly.

    117 GitHub stars~2.1k tokensUpdated today
    Writing & ContentAuto-check passed
  • Prospecting

    coreyhaines31/marketingskills

    When the user wants to find, qualify, and build a list of prospects to reach out to, across B2B SaaS, general B2B, or local small businesses.

    54k GitHub stars~5k tokensUpdated today
    Sales & SupportAuto-check passed
  • Sales Os

    romangojiberryAI/gojiberryai-sales-os

    A complete outbound sales department in one skill. An agent skill from romangojiberryAI/gojiberryai-sales-os.

    139 GitHub stars~2k tokensUpdated 1 mo ago
    Sales & SupportAuto-check passed
  • Cold Outreach Personalizer

    aiskilloftheweek/claude-ai-skill-of-the-week

    Generates hyper-personalized cold outreach messages (email, LinkedIn DM, connection request) from raw prospect research.

    148 GitHub stars~2.6k tokensUpdated 4 mo ago
    Sales & SupportAuto-check passed

More from Othmane-Khadri/YALC-the-GTM-operating-system

All 57 skills in this repo
  • Claap Weekly Recap

    Othmane-Khadri/YALC-the-GTM-operating-system

    Turns a week of Claap-recorded sales calls into action items and focus blocks on a Notion Kanban, delivered with a Slack summary.

    317 GitHub stars~5.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Fullenrich Plg Reverse Lookup

    Othmane-Khadri/YALC-the-GTM-operating-system

    A skill your agent uses when the user says "set up FullEnrich reverse lookup for trial signups", "PLG enrichment webhook", "identify free trial signups via FullEnrich", "reverse email lookup for…

    317 GitHub stars~1.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Fullenrich Content Engagers

    Othmane-Khadri/YALC-the-GTM-operating-system

    A skill your agent uses when the user says "enrich people who engaged with this post", "qualify post engagers with FullEnrich", "scrape and enrich LinkedIn post {URL}", "engagers from this post into…

    317 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check: warnings
  • Fullenrich Event Attendees

    Othmane-Khadri/YALC-the-GTM-operating-system

    A skill your agent uses when the user says "enrich this LinkedIn event", "enrich attendees of this event", "enrich this attendees CSV", "scrape and enrich LinkedIn event {URL}", "FullEnrich event…

    317 GitHub stars~1.4k tokensUpdated 1 mo ago
    Auto-check: warnings
  • Answer Linkedin Comments

    Othmane-Khadri/YALC-the-GTM-operating-system

    Reply to comments on a LinkedIn post via Unipile — drafts thread-aware replies grounded in the user's voice and the conversation context, then sends on approval.

    317 GitHub stars~551 tokensUpdated 1 mo ago
    Auto-check: notes
  • Fullenrich Network Activation

    Othmane-Khadri/YALC-the-GTM-operating-system

    A skill your agent uses when the user says "activate co-founder network with FullEnrich", "enrich LinkedIn connections export", "qualify my LinkedIn connections CSV", "turn Connections.csv into a…

    317 GitHub stars~1.1k tokensUpdated 1 mo ago
    Auto-check: warnings

Categories

Questions about Personalize Message

What does Personalize Message do?

Generate a personalized outbound message (LinkedIn DM or cold email) for a single prospect by combining a template with the lead's profile, company, and recent signals. Personalize Message is an agent skill from Othmane-Khadri/YALC-the-GTM-operating-system. Generate a personalized outbound message (LinkedIn DM or cold email) for a single prospect by combining a template with the lead's profile, company, and recent signals.

When should I use Personalize Message?

Personalize Message fits situations like: the user says personalize this message; tailor this outreach to the prospect; rewrite this template for [name]; make this message more personal.

How do I install Personalize Message in Claude Code?

Run `npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill personalize-message -a claude-code`. Or copy the skill folder (.claude/skills/personalize-message in Othmane-Khadri/YALC-the-GTM-operating-system) into .claude/skills/personalize-message in your project. Claude Code loads it when a task matches its description.

How do I install Personalize Message in Codex?

Run `npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill personalize-message -a codex`. Or copy the skill folder (.claude/skills/personalize-message in Othmane-Khadri/YALC-the-GTM-operating-system) into .agents/skills/personalize-message in your project. Codex loads it when a task matches its description.

Can I use Personalize Message in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill personalize-message -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/personalize-message, .gemini/skills/personalize-message, .github/skills/personalize-message and .opencode/skills/personalize-message in your project.

What does Personalize Message need to run?

Going by SKILL.md and its folder, Personalize Message needs the command-line tools its instructions call (npx). Our summary lists: Node.js.

Does Personalize Message access the network?

SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Personalize Message safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Personalize Message use?

Personalize Message is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Personalize Message use?

About 1.3k tokens (SKILL.md is roughly 5.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 717 tokens, read only when the agent opens those files.

What are the alternatives to Personalize Message?

Skills that share tags, products or a category with Personalize Message: Pain Language Engagers (gooseworks-ai/goose-skills, 1.2k stars), Apify Buying Signal Detection (apify/awesome-skills, 265 stars), Linkedin Comment To Outreach (gethouston/houston, 117 stars) and Prospecting (coreyhaines31/marketingskills, 54k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Personalize Message?

Othmane-Khadri (a GitHub user) maintains it in Othmane-Khadri/YALC-the-GTM-operating-system, which has 317 GitHub stars. The repository holds 57 skills in this directory. The repository was last updated on August 20, 2026.

Source: Othmane-Khadri/YALC-the-GTM-operating-system on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.