Agent skill
gtmos-outreach-linkedin
Write LinkedIn connection notes, first messages after an accept, and the two follow-ups, and run them on the org's LinkedIn seats.
Filed under Outbound email and LinkedIn and social.
From ay-automate/gtmos-skills · 107 skill entries · 0 · pushed 2026-11-02
What it does when it runs
Write LinkedIn connection notes, first messages after an accept, and the two follow-ups, and run them on the org's LinkedIn seats. With GTM OS connected it checks the seats and the owner's high-risk acceptance (outreach.linkedin_seats), drafts through the Outreach engine, proposes every send for a person to approve inside the seat's caps and warm-up, and uses connect_then_message steps in a definition.sequence. Use for \"write a connection request\", \"LinkedIn DM\", \"LinkedIn follow-up\", \"add LinkedIn to the sequence\", \"why are my LinkedIn sends held\".
Automated analysis of the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Ask about gtmos-outreach-linkedin
Opens your assistant with this page's recorded context. Check the linked sources before relying on it.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/ay-automate/gtmos-skills.git /tmp/gtmos-skills git -C /tmp/gtmos-skills sparse-checkout set "skills/gtmos-outreach-linkedin" mkdir -p ~/.claude/skills/gtmos-outreach-linkedin cp -R "/tmp/gtmos-skills/skills/gtmos-outreach-linkedin/." ~/.claude/skills/gtmos-outreach-linkedin/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
Or take the whole library
This repo ships a .claude-plugin manifest, so Claude Code can install all 107 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.
/plugin marketplace add ay-automate/gtmos-skills /plugin
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from ay-automate/gtmos-skills/blob/86780d2f545cdc0a1de971917aa04b41bb0b3ccd/skills/gtmos-outreach-linkedin/SKILL.md, which is licensed MIT (skill frontmatter). 923 words, 9 headings.
LinkedIn outreach
Part of GTM OS Skills. Adapted from
li-dmin Jakeschincariol/linkedin-agent-skill (MIT, Copyright (c) 2026 Jake Schincariol). Changed for GTM OS: the operating section below (LinkedIn lanes and seats, caps and warm-up, the owner's high-risk acceptance, approved sends and sequence steps), the hand-send rule restated for approval-gated sends. Notices: THIRD-PARTY-NOTICES.md (installed beside the skills asTHIRD-PARTY-NOTICES.md).
With GTM OS connected
Rules (GTMOS-RULES.md). Read
policy.get_dry_modefirst; in dry mode every effect stops at a draft. E-class operations are proposed and a different person approves them; never approve your own proposal. Numbers come only from operation results, named with the operation. Claims about results, customers or metrics must be backed by active proof fromproof.list.
1. Is LinkedIn live? outreach.linkedin_seats Q returns: whether Unipile is connected (and live or fixture), whether an owner accepted LinkedIn's high risk (highRisk.accepted), each LinkedIn lane's seat with its caps per kind (connection requests vs messages and InMail, per UTC day and a rolling 7 days), the warm-up (25/50/75/100% over the first four weeks of sending), usage today and this week, noteMaxChars, and the webhook to configure. Report what it says. While highRisk.accepted is false every LinkedIn send is refused: only an owner can accept it (broker.accept_high_risk, human only, approved by someone else). The Unipile webhook secret is human only too (outreach.linkedin_webhook_secret): never ask for it or print it.
2. Draft. outreach.draft_message {contactId, channel: "linkedin", ...} D, or outreach.draft_personalized_message (spends inline: the org's model). Use the method below; the invite note must fit noteMaxChars. brand.check_text Q on the copy, and any claim goes through gtmos-content-claims-gate.
3. Propose the send. outreach.send_message E on an activated LinkedIn lane proposes; a different person approves. Over a seat cap a send is held until room opens, never dropped (policy.trust_holds.list Q shows held actions). Suppression, consent and the first-degree snapshot (no connection request to an existing connection) are checked before it goes.
4. In a sequence. A LinkedIn step in a definition.sequence (gtmos-outreach-sequences) sets linkedin.action: connect_then_message sends the note, waits for the accept (acceptWait, then the next step or an exit) and only then the message. A reply on LinkedIn or email stops every channel for that person. outreach.step_stats Q measures each LinkedIn step like an email step.
Without GTM OS
Use the method below and send every message yourself, by hand, from your own LinkedIn account. Automated connection and message tools break LinkedIn's User Agreement and get accounts restricted.
The invite note is short. The first message decides whether there is a second one. Neither is a pitch.
Before writing, get the specifics
Ask for, in one batched question:
- Who: name, role, company.
- The hook: the actual reason to reach out now. A post they wrote, something their company shipped, a mutual connection, a talk they gave. Not "they fit my ICP".
- What the user wants: a conversation, a referral, a sale. Be honest internally, even if the message does not lead with it.
If there is no specific reason to message this person today, say so. A message with no reason is what everyone else sends.
The invite note
{one specific reference to them} + {one line of who you are} + {no ask}
The note asks for nothing. It exists to make the accept obvious. LinkedIn caps notes at about 200 to 300 characters depending on the account; with GTM OS connected the seat reports the limit (noteMaxChars). Count the characters and show the count.
Saw your post on killing the discovery call - we did the same thing in March
and it worked. I run ops at a 12-person studio. Would like to follow along.
[187/200]
The first message, after they accept
Wait a day. Then:
- Two to four sentences. A screen of text is a delete.
- Reference the specific thing from the note: continuity is the reason the note was specific.
- Give something before asking. A number, a template, a name, an answer.
- One ask, and make it small. "Worth a 15-minute call?" beats "let me walk you through our platform".
- No calendar link in message one. It reads as a funnel, because it is.
Follow-ups
Two. That is the number.
- +4 days: add something new. Never "just bumping this" or "following up on my last message". If you have nothing new, you have no follow-up.
- +10 days: the close-the-loop message. Say you will stop, and mean it. This one gets a surprising share of the replies, because it removes the pressure.
Then stop. A third follow-up converts nobody and costs the relationship.
Never
- Never send messages in bulk or outside the account's limits. Unattended automation breaks LinkedIn's User Agreement and gets accounts restricted; that is why GTM OS keeps LinkedIn sends off until an owner accepts the risk, caps every seat with a warm-up, and has a person approve each send.
- Never fabricate a mutual connection, a shared school, or having read something the user has not read.
- Never write the message that opens "I hope this message finds you well".
- Never push past the daily invite limit. Beyond it, LinkedIn throttles the account, and a throttled account is a dead one.
Output
The invite note with its character count, the first message, and both follow-ups with the day they go out. With GTM OS connected each one is a draft proposed for a person to approve; without it, the user sends every one of them by hand.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- 07-linkedin-outreach-writer by SimonTheSalesBooster · 42
- linkedin-outreach-20-videos by ToolMonsters · 6
- LinkedIn Outreach by SamurAIGPT · 4
- linkedin-outreach by ekatasingh1107 · 2
- linkedin-outreach by devangk003 · 0
- linkedin-outreach by edupegoretti · 0
- linkedin-ads-audit by irinabuht12-oss · 6,620
- linkedin-marketing by sergebulaev · 5,486
Need help setting it up?
This page tells you what gtmos-outreach-linkedin does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.