Agent skill

Launch Linkedin Campaign

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

Set up a LinkedIn outreach campaign on a list of leads (connect → DM1 → DM2 sequence) by chaining campaign:create and campaign:create-sequence.

MITAuto-check: notesDatabases

Install Launch Linkedin Campaign

skills CLI
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill launch-linkedin-campaign -a claude-code

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

GitHub CLI
$ gh skill install Othmane-Khadri/YALC-the-GTM-operating-system launch-linkedin-campaign --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/launch-linkedin-campaign .claude/skills/launch-linkedin-campaign && 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
launch-linkedin-campaign
GitHub stars
318
Token cost
~2.1k tokens
SKILL.md length
865 words
Files
2 (incl. references)
Skills in repo
57
Repo updated
First seen
Licence
MIT

At a glance

Set up a LinkedIn outreach campaign on a list of leads (connect → DM1 → DM2 sequence) by chaining campaign:create and campaign:create-sequence.

  • Works in 8 steps: Ask for inputs → Read the hypothesis sidecar for the… → Shell out to campaign:create → …
  • The user says launch a LinkedIn campaign for these leads
  • SKILL.md covers When This Skill Applies, What This Skill Does, Pre-flight (before Step 1) and Workflow, plus 2 more sections
  • Calls npx and jq

What it does

Launch Linkedin Campaign is an agent skill from Othmane-Khadri/YALC-the-GTM-operating-system. Set up a LinkedIn outreach campaign on a list of leads (connect → DM1 → DM2 sequence) by chaining campaign:create and campaign:create-sequence. Enforces the outbound hypothesis gate (refuses to launch without a hypothesis recorded for outreach-campaign-builder). Use when the user says 'launch a LinkedIn campaign for these leads', 'send a LinkedIn outreach to this list', 'start the outbound to the qualified leads', 'run the LinkedIn sequence on this result set', or 'fire the connect-then-DM flow'. Side-effecting —…

Its SKILL.md is about 2.1k 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 Databases. It works with LinkedIn and SQLite. 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 launch a LinkedIn campaign for these leads
  • Send a LinkedIn outreach to this list
  • Start the outbound to the qualified leads
  • Run the LinkedIn sequence on this result set

Example prompts

  • “launch a LinkedIn campaign for these leads”
  • “send a LinkedIn outreach to this list”
  • “start the outbound to the qualified leads”
  • “/launch-linkedin-campaign”

Requirements

  • Node.js

Workflow steps

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

  1. Ask for inputs
  2. Read the hypothesis sidecar for the --hypothesis arg
  3. Shell out to campaign:create
  4. Parse the campaign result
  5. Shell out to campaign:create-sequence
  6. Parse the sequence result
  7. Render summary + ask before sending
  8. Fallback path

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
    • jq

    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

Launch Linkedin Campaign loads about 2.1k tokens when it runs, and up to ~2.5k if it reads all its reference files. Until then it costs about 150 tokens; SKILL.md has 865 words of instructions outside code blocks.

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

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:106
    cd ~/Desktop/gtm-os && set -a && source .env.local && set +a && \
  • NoteMentions a .env fileSKILL.md:125
    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). 865 words, ~2,060 tokens.

Download SKILL.mdSave it as .claude/skills/launch-linkedin-campaign/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
launch-linkedin-campaign
description
Set up a LinkedIn outreach campaign on a list of leads (connect → DM1 → DM2 sequence) by chaining `campaign:create` and `campaign:create-sequence`. Enforces the outbound hypothesis gate (refuses to launch without a hypothesis recorded for outreach-campaign-builder). Use when the user says 'launch a LinkedIn campaign for these leads', 'send a LinkedIn outreach to this list', 'start the outbound to the qualified leads', 'run the LinkedIn sequence on this result set', or 'fire the connect-then-DM flow'. Side-effecting — writes to SQLite and stages the sequence on Unipile.
version
1.0.0

Launch LinkedIn Campaign

I'll wrap two CLI commands — campaign:create (creates the campaign + pulls qualified leads from the holding pool) and campaign:create-sequence (drafts the connect→DM1→DM2 sequence). Both side-effecting → both shell-out per the 0.13.0 architecture.

When This Skill Applies

Use this skill when the user says:

  • "launch a LinkedIn campaign for these leads"
  • "send a LinkedIn outreach to this list"
  • "start the outbound to the qualified leads"
  • "run the LinkedIn sequence on this result set"
  • "fire the connect-then-DM flow"

NOT this skill (use qualify-leads instead):

  • "score these leads first" / "qualify the engagers" — qualification runs the 7-gate pipeline. Run that BEFORE this skill.

NOT this skill (use personalize-message instead):

  • "personalize a single DM" — that's per-lead copy. This skill handles bulk sequence generation.

NOT this skill (use scrape-post-engagers instead):

  • "pull who liked this post" — that produces a result set. This skill consumes a holding pool of qualified leads.

What This Skill Does

  1. Hypothesis gate. Before doing anything, checks that the outbound hypothesis is recorded — ~/.gtm-os/frameworks/installed/outreach-campaign-builder.hypothesis.json must exist. If missing: refuses to launch and routes the user to framework:set-hypothesis (or setup Step 10).
  2. Asks for campaign title + optional leads filter + sequence YAML + source CSV/JSON path.
  3. Shells out to campaign:create to write the campaign row + pull qualified leads from the holding pool.
  4. Shells out to campaign:create-sequence to draft the connect→DM1→DM2 sequence.
  5. Renders both results + asks "ready to send?" — does not auto-trigger sending.
  6. Suggests enabling campaign:track cron (or running it manually) for monitoring.

Pre-flight (before Step 1)

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

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

Hypothesis gate (THE critical check)
bash
test -f ~/.gtm-os/frameworks/installed/outreach-campaign-builder.hypothesis.json && echo "OK" || echo "MISSING"

If MISSING, refuse to proceed:

"Can't launch a LinkedIn campaign without a recorded outbound hypothesis. Either:

(a) finish setup Step 10 to record one (yalc-gtm start --review-in-chat and re-run setup), or

(b) record one directly:

yalc-gtm framework:set-hypothesis outreach-campaign-builder \
  --icp-segment '<segment>' \
  --message-angle '<angle>' \
  --signal-trigger '<signal>' \
  --expected-reply-rate 0.05

Then re-invoke me."

This guard is enforced by the skill, not the CLI (campaign:create does NOT check the sidecar today).

Workflow

Step 0 — Ask for inputs

One question at a time:

  1. Campaign title? (e.g., "VP Marketing Q2 outbound — segment-fit hire signal")
  2. Lead source? Two paths:
    • Use the holding pool of all qualified leads (default — pass no --leads-filter).
    • Filter to a subset via --leads-filter '<json-shape>' (e.g., '{"score":{"$gte":80}}').
  3. Sequence YAML path? (--sequence <path> — required by campaign:create-sequence). Usually configs/sequences/connect-dm1-dm2.yaml or a custom path.
  4. Source CSV/JSON? (--source <path> — required by campaign:create-sequence). The leads file the sequence will personalize against.
  5. Optional toggles:
    • --linkedin-account <id> (multi-account routing)
    • --timezone <tz> (default Pacific or whatever the framework default is)
    • --start-at <date> (default = now)
    • --send-window '<HH:MM-HH:MM>'
    • --active-days <mon,tue,wed,thu,fri>
    • --delay-mode <natural|fast>
    • --dry-run (preview without writing to Unipile)
Step 1 — Read the hypothesis sidecar for the --hypothesis arg
bash
HYPOTHESIS=$(jq -r '.message_angle' ~/.gtm-os/frameworks/installed/outreach-campaign-builder.hypothesis.json)

The CLI's --hypothesis flag accepts a string. Pass the message_angle so campaign-intelligence can score the actual reply rate against the declared expected rate later.

Step 2 — Shell out to campaign:create
bash
cd ~/Desktop/gtm-os && set -a && source .env.local && set +a && \
  npx tsx src/cli/index.ts campaign:create \
    --title "<title>" \
    --hypothesis "$HYPOTHESIS"

(Add --leads-filter '<json>', --auto-copy, --segment-id, --timezone, --start-at, --send-window, --active-days, --delay-mode, or --dry-run if the user opted in.)

Per the 0.13.0 benchmark: side-effecting commands always shell out. The CLI's withDiagnostics() wrapper handles env loading + tenant resolution.

Show full SKILL.md (347 more words)Show less
Step 3 — Parse the campaign result

The CLI prints the campaign id + initial status + the count of qualified leads pulled into the campaign. Capture all three.

On non-zero exit, surface stderr verbatim.

Step 4 — Shell out to campaign:create-sequence
bash
cd ~/Desktop/gtm-os && set -a && source .env.local && set +a && \
  npx tsx src/cli/index.ts campaign:create-sequence \
    --sequence "<sequence-yaml-path>" \
    --source "<leads-csv-or-json-path>"

(Add --linkedin-account <id> or --dry-run if the user opted in.)

Note: campaign:create-sequence does NOT take --campaign-id or --variants flags. It reads the sequence shape from the YAML and personalizes against the source CSV/JSON. Variants are declared inside the YAML, not via CLI flag.

Step 5 — Parse the sequence result

The CLI emits per-lead message previews + the staged sequence ids. Capture them.

Step 6 — Render summary + ask before sending

"Campaign <id> created with <n> qualified leads. Sequence drafted with <m> per-lead messages staged.

Ready to send? Hitting yes will start the campaign tracker so messages go out on schedule. (Or run yalc-gtm campaign:track manually anytime.)"

Do not run campaign:track yourself. That's the track-campaigns skill's job (Wave 4). The user makes the call.

Step 7 — Fallback path

If either CLI exits non-zero with a non-credential error (e.g., campaign:create fails because no qualified leads exist in the holding pool), surface the error verbatim and suggest:

  • "Run qualify-leads first to populate the holding pool, then re-invoke me."

Failure surfacing — verbatim

When either CLI exits non-zero (Anthropic 429, Unipile DSN expired, sequence YAML invalid, missing leads), paste the stderr unchanged.

Notes

  • The CLI surfaces campaign:create flags this way (verified): --leads-filter <json>, --title <title>, --hypothesis <hypothesis>, --auto-copy, --segment-id <id>, --timezone <tz>, --start-at <date>, --send-window <range>, --active-days <days>, --delay-mode <mode>, --dry-run. No --result-set flag.
  • The CLI surfaces campaign:create-sequence flags this way (verified): --sequence <path> (required), --source <path> (required), --linkedin-account <id>, --dry-run. No --campaign-id or --variants flag — variants are declared in the sequence YAML.
  • The hypothesis gate is intentional: prevents the misroute Step 10 of setup fixed in 0.10.0 (where "launch outbound" silently became "draft a content hook").
  • 30 connects/day cap is enforced by Unipile and the campaign tracker — not by this skill.
  • Dual flow: campaign:create writes the campaign row; campaign:create-sequence populates the per-lead messages. They're decoupled deliberately so you can re-stage messages without re-creating the 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/launch-linkedin-campaign 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

Launch Linkedin Campaign 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.

Launch Linkedin Campaign compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Launch Linkedin Campaign this skillOthmane-Khadri/YALC-the-GTM-operating-system318—~2.1kAutomated safety check: NotesMIT
Iptvnator Sqlite DB Worker4gray/iptvnator7.3k—~824Automated safety check: PassMIT
Restore Legacy Sessionszai-org/ZCode7.7k—~1.2kAutomated safety check: PassApache-2.0
Analyze Nsys Profilemlc-ai/pith-train355—~1.9kAutomated safety check: PassApache-2.0
DB Ops SopOpenDCAI/DataMind451—~388Automated safety check: PassApache-2.0
Reactive Sqlite UIfastrepl/anarlog9.5k—~699Automated safety check: PassMIT

Similar skills

  • A skill your agent uses when changing Electron SQLite IPC, database-worker operations, request-scoped progress or cancellation, worker packaging, or runtime verification of non-EPG database work.

    7.3k GitHub stars~824 tokensUpdated today
    DatabasesAuto-check passed
  • A skill your agent uses when ZCode needs to inspect, plan, or execute restoration of old ACP-era ZCode sessions from ~/.zcode/v2/sessions into the new ZCode task/session stores.

    7.7k GitHub stars~1.2k tokensUpdated today
    DatabasesAuto-check passed
  • Analyze Nsys Profile

    mlc-ai/pith-train

    Query a captured PithTrain Nsight Systems profile to measure compute/communication overlap, locate exposed comm by DualPipeV stage, and inspect per-rank stream behavior.

    355 GitHub stars~1.9k tokensUpdated yesterday
    DatabasesAuto-check passed
  • DB Ops Sop

    OpenDCAI/DataMind

    Database operations runbook — backup, recovery, performance tuning, troubleshooting.

    451 GitHub stars~388 tokensUpdated 21 days ago
    DatabasesAuto-check passed
  • Reactive Sqlite UI

    fastrepl/anarlog

    Build SQLite-backed reactive UI in apps/desktop using stable patterns for reads, selection, forms, writes, and loading states.

    9.5k GitHub stars~699 tokensUpdated today
    DatabasesAuto-check passed
  • Forensically inspect and repair Composer browser profiles — offline (Chrome OPFS / SQLite extract) or live via /recovery.html debug port.

    526 GitHub stars~3.1k tokensUpdated today
    DatabasesAuto-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.

    318 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…

    318 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…

    318 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…

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

    318 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…

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

Works with

Questions about Launch Linkedin Campaign

What does Launch Linkedin Campaign do?

Set up a LinkedIn outreach campaign on a list of leads (connect → DM1 → DM2 sequence) by chaining campaign:create and campaign:create-sequence. Launch Linkedin Campaign is an agent skill from Othmane-Khadri/YALC-the-GTM-operating-system. Set up a LinkedIn outreach campaign on a list of leads (connect → DM1 → DM2 sequence) by chaining campaign:create and campaign:create-sequence.

When should I use Launch Linkedin Campaign?

Launch Linkedin Campaign fits situations like: the user says launch a LinkedIn campaign for these leads; send a LinkedIn outreach to this list; start the outbound to the qualified leads; run the LinkedIn sequence on this result set.

How do I install Launch Linkedin Campaign in Claude Code?

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

How do I install Launch Linkedin Campaign in Codex?

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

Can I use Launch Linkedin Campaign 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 launch-linkedin-campaign -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/launch-linkedin-campaign, .gemini/skills/launch-linkedin-campaign, .github/skills/launch-linkedin-campaign and .opencode/skills/launch-linkedin-campaign in your project.

What does Launch Linkedin Campaign need to run?

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

Does Launch Linkedin Campaign 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 Launch Linkedin Campaign 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 Launch Linkedin Campaign use?

Launch Linkedin Campaign 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 Launch Linkedin Campaign use?

About 2.1k tokens (SKILL.md is roughly 8.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 438 tokens, read only when the agent opens those files.

What are the alternatives to Launch Linkedin Campaign?

Skills that share tags, products or a category with Launch Linkedin Campaign: Iptvnator Sqlite DB Worker (4gray/iptvnator, 7.3k stars), Restore Legacy Sessions (zai-org/ZCode, 7.7k stars), Analyze Nsys Profile (mlc-ai/pith-train, 355 stars) and DB Ops Sop (OpenDCAI/DataMind, 451 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Launch Linkedin Campaign?

Othmane-Khadri (a GitHub user) maintains it in Othmane-Khadri/YALC-the-GTM-operating-system, which has 318 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.