Install the "launch-linkedin-campaign" agent skill from https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/launch-linkedin-campaign into .claude/skills/launch-linkedin-campaign/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "launch-linkedin-campaign", then confirm the skill loads.
Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
skills CLI
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill launch-linkedin-campaign -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "launch-linkedin-campaign" agent skill from https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/launch-linkedin-campaign into .agents/skills/launch-linkedin-campaign/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "launch-linkedin-campaign", then confirm the skill loads.
Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill launch-linkedin-campaign -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "launch-linkedin-campaign" agent skill from https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/launch-linkedin-campaign into .cursor/skills/launch-linkedin-campaign/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "launch-linkedin-campaign", then confirm the skill loads.
Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill launch-linkedin-campaign -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "launch-linkedin-campaign" agent skill from https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/launch-linkedin-campaign into .gemini/skills/launch-linkedin-campaign/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "launch-linkedin-campaign", then confirm the skill loads.
Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
skills CLI
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill launch-linkedin-campaign -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "launch-linkedin-campaign" agent skill from https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/launch-linkedin-campaign into .github/skills/launch-linkedin-campaign/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "launch-linkedin-campaign", then confirm the skill loads.
GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add Othmane-Khadri/YALC-the-GTM-operating-system --skill launch-linkedin-campaign -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "launch-linkedin-campaign" agent skill from https://github.com/Othmane-Khadri/YALC-the-GTM-operating-system/tree/main/.claude/skills/launch-linkedin-campaign into .opencode/skills/launch-linkedin-campaign/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "launch-linkedin-campaign", then confirm the skill loads.
OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
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.
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.
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
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).
Asks for campaign title + optional leads filter + sequence YAML + source CSV/JSON path.
Shells out to campaign:create to write the campaign row + pull qualified leads from the holding pool.
Shells out to campaign:create-sequence to draft the connect→DM1→DM2 sequence.
Renders both results + asks "ready to send?" — does not auto-trigger sending.
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
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.
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
Skill
Stars
Used in
Tokens
Auto-check
Licence
Repo updated
Launch Linkedin Campaign this skillOthmane-Khadri/YALC-the-GTM-operating-system
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.
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.
Query a captured PithTrain Nsight Systems profile to measure compute/communication overlap, locate exposed comm by DualPipeV stage, and inspect per-rank stream behavior.
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…
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…
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…
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.
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…
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.