Install
$ agentstack add skill-first-touch-inc-firsttouch-agent-skill-packs-firsttouch-messaging ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
FirstTouch Messaging
Every FirstTouch play that involves sending words to a human builds on this skill. It defines how to draft LinkedIn outreach that actually converts - signal-first, seniority-calibrated, and always gated for human approval before send.
First-run onboarding gate
If onboarding has not already been completed for this workspace, load ../../references/onboarding.md and complete the onboarding questions. Do not proceed until you know: LinkedIn account type (free/basic = no connection notes; recommend 10 connection requests/day and never exceed the FirstTouch max of 20/day; Sales Navigator/Premium = connection notes available; recommend 20 connection requests/day and never exceed the FirstTouch max of 30/day), HubSpot access (MCP, service key/private app token, HubSpot list only, or none), and which play the user wants to run. Recommend high-intent plays before outbound to keep the LinkedIn account healthy. If HubSpot is unavailable, do not run HubSpot-specific steps unless the user provides a HubSpot list FirstTouch can access.
When to use
- A play asks you to "draft the message" (connection request, opener, follow-up)
- The user says "write LinkedIn outreach," "draft a connection note," "personalize this sequence"
- You're producing copy that will be reviewed before a FirstTouch send
When NOT to use
- Generating email copy for a non-LinkedIn channel (use that channel's conventions)
- Writing internal notes / HubSpot activity logs
Core principle
Signal-first, not feature-first. Find one specific, true thing about the prospect and lead with it. Never lead with your product.
Step-by-step
1. Identify the signal (the "why now")
Find one verifiable fact about the prospect or their company. Sources, in priority order:
- HubSpot context (if HubSpot MCP connected): lifecycle change, recent deal activity, form fill, owner notes
- LinkedIn activity: recent post, comment, role change, hiring move
- Company signals: funding, product launch, hiring spike, tech-stack change
- Mutual connection / referral
If you cannot find a real signal, do not fabricate one. Either drop the tier to "light" (first-name + company only) or flag that you need enrichment.
2. Classify seniority → set tone
- IC/practitioner → peer, tactical, lead with "how"
- Manager/Director → process + outcomes, lead with efficiency/visibility
- VP/Founder/C-level → strategic, brief, signal-led, lead with risk/leverage
3. Pick the message type
- Connection request (first touch, no relationship) → goal: get accepted
- Opener (post-accept, day 1-3) → goal: earn a reply, no ask
- Value touch (warming) → share something useful, zero ask
- Meeting ask → only after ≥1 exchange; propose specific times
- Break-up / re-engage → last touch, low pressure
Iron rule: never ask for a meeting in a connection request or opener.
4. Draft using the structure
Signal (why now) → Relevance (why you/this) → Soft CTA (what next)
Adapt a template from [../../references/messaging-framework.md](../../references/messaging-framework.md) - but never copy blindly. Every {{variable}} must resolve to something real.
5. Run the quality gate (mandatory self-check)
Before presenting the draft, verify ALL:
- [ ] Signal is real and verifiable (not invented)
- [ ] No meeting ask if connection request or opener
- [ ] Length within limits: connection note ≤300 chars, opener ≤60 words, follow-up ≤80 words
- [ ] No jargon ("revolutionary," "leverage," "synergy," "supercharge")
- [ ] No lazy flattery ("I love what you're building at…")
- [ ] Do not use em dashes in outreach copy
- [ ] One ask max
- [ ] Tone matches seniority
If any check fails → rewrite before showing.
6. Present for approval (never send)
Output the draft(s) for human review. Format:
- To: {name} - {title} @ {company} (owner: {hubspot_owner})
- Type: {connection request / opener / follow-up}
- Signal used: {the one fact}
- Draft: "{message}"
- Char/word count: {n} / limit {m}
State clearly: "Drafted for review. This will not send until you approve."
Examples
Good opener (Manager tier)
> Signal: HubSpot shows Acme moved to "Scaling" lifecycle + 2 SDR hires last month > To: Dana Lee, Dir. Sales Ops @ Acme > "Dana, thanks for connecting. With the SDR team doubling, are you looking at how to keep LinkedIn activity attributed in HubSpot?"
Bad (do not do this)
> "Hi Dana, I'd love to learn about your challenges and show you how our AI-powered platform can supercharge your outreach. Do you have 15 mins this week?" > (No signal. Meeting ask too early. Jargon. Lazy.)
Composability
This skill is called by any installed play that drafts LinkedIn copy, including social engagement, AI SDR, founder-led outbound, inbound follow-up, HubSpot signal touches, stalled-deal reactivation, website visitor follow-up when those skills are present in the pack. When a play says "draft the message(s) per firsttouch-messaging," load this skill, then return to the play for the surrounding workflow.
Pitfalls
- Fabricated signals - the #1 quality risk. If unsure, mark the field and ask for enrichment rather than inventing.
- Meeting ask creep - reps love to ask early. Enforce the iron rule.
- Same message to everyone - if your drafts across 10 prospects look identical, the personalization failed. Re-signal.
- Sending without approval - never. The gate is in
safety-governance.mdand every play.
Reference
Full methodology, templates, and tier/tone matrix: [../../references/messaging-framework.md](../../references/messaging-framework.md)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: First-Touch-Inc
- Source: First-Touch-Inc/firsttouch-agent-skill-packs
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.