Claude Agent Skill · by Anthropics

Compose Outreach

Install Compose Outreach skill for Claude Code from anthropics/knowledge-work-plugins.

Install
Terminal · npx
$npx skills add https://github.com/obra/superpowers --skill brainstorming
Works with Paperclip

How Compose Outreach fits into a Paperclip company.

Compose Outreach drops into any Paperclip agent that handles this kind of work. Assign it to a specialist inside a pre-configured PaperclipOrg company and the skill becomes available on every heartbeat — no prompt engineering, no tool wiring.

S
SaaS FactoryPaired

Pre-configured AI company — 18 agents, 18 skills, one-time purchase.

$27$59
Explore pack
Source file
SKILL.md135 lines
Expand
---name: compose-outreachdescription: "Generate personalized outreach messages using Common Room signals. Triggers on 'draft outreach to [person]', 'write an email to [name]', 'compose a message for [contact]', or any outreach drafting request."--- # Compose Outreach Generate three personalized outreach formats — email, call script, and LinkedIn message — grounded in Common Room signals for a specific company or contact. ## Outreach Process ### Step 1: Look Up the Target Use Common Room MCP tools to find and retrieve data for the target (company and/or specific contact). Pull:- Recent product activity and engagement signals- Community activity (posts, questions, reactions)- 3rd-party intent signals (job postings, news, funding)- Relationship history (prior contact, meetings, email opens) If the user specified a person, run contact-level research. If only a company was given, identify the best contact to target based on title, engagement, and role. ### Step 2: Web Search for External Hooks (If CR Signals Are Thin) If CR returned strong signals (recent activity, engagement, product usage), those should drive personalization — skip web search. If CR signals are thin or the prospect has little CR activity, run a web search for external hooks: **What to search:**- `"[company name]" funding OR acquisition OR launch OR announcement` — last 30 days- `"[contact full name]" "[company name]"` — look for recent articles, interviews, LinkedIn posts, or conference talks **Prioritize external hooks that are:**- Very recent (< 2 weeks) — the prospect is likely still thinking about it- Publicly visible — they know you could have seen it- Change-signaling — growth, new role, new product, new market If the user explicitly asks for web search or external hooks, run it regardless of CR signal richness. ### Step 3: Spark Enrichment (If Available) If Spark is available, run enrichment on the target contact to get persona classification, background, and influence signals. Use this to calibrate tone and message angle. ### Step 4: Identify the Best Hooks From the signal data, identify the 1–3 strongest personalization hooks. Rank by:1. **Recency** — happened in the last 7–14 days2. **Specificity** — a concrete action they took, not a general trend3. **Relevance** — connects directly to a value your product delivers Good hooks: posted a question in the community about X, just hired 5 engineers, recently started using [feature], company just raised Series B, trial nearing expiration, champion just changed jobs. Bad hooks: "I noticed you're a customer" or generic industry trends. ### Step 5: Generate All Three Formats Use the strongest hooks to write all three formats. Each format has different constraints and conventions — follow the format-specific guidelines in `references/outreach-formats-guide.md`. Always produce all three, clearly labeled. When the user's company context is available (see `references/my-company-context.md`), ground the value bridge and pitch in the user's specific product and positioning. ### Step 6: Annotate Your Choices After the three drafts, include a brief note (2–4 sentences) explaining:- Which signals were used and why they were chosen- Any assumptions made (e.g., inferred call objective)- Alternative angles if the primary hook doesn't land ## Output Format ```## Outreach for [Name / Company] ### 📧 Email **Subject:** [Subject line] [Email body — 3–5 sentences] --- ### 📞 Call Script **Opening:**[Opening line — conversational, 1–2 sentences] **Value Bridge:**[Why you're calling and why now — 2–3 sentences tied to a signal] **Ask:**[Single, low-friction ask — e.g., 15-minute call, specific question] --- ### 💼 LinkedIn Message [Under 300 characters. Warm, personal, no pitch.] --- ### Signal Notes[2–4 sentences: which signals were used, why, and any alternative angles]``` ## When Signal Data Is Sparse If Common Room returns minimal data on the target (e.g., just name, title, tags — no activity, no scores, no Spark): 1. **Do not draft outreach from thin air.** Outreach grounded in fabricated signals is worse than no outreach.2. **Run web search first** — this becomes your primary personalization source. Look for recent news, LinkedIn posts, conference talks, company announcements.3. **If web search also returns little**, present what you have honestly and ask the user for context: ```## Outreach for [Name / Company] — Limited Data **What I found:**[Only the real data from CR and web search] **I don't have enough signal to draft personalized outreach yet.** To write something strong, I'd need:- Recent activity or engagement signals- Context you have from prior conversations- A specific reason for reaching out now Can you share any of the above?``` ## Quality Standards - Every message must reference something specific — generic outreach is not acceptable output- Match tone to context: warm and conversational for inbound/community signals; more formal for cold/executive outreach- The LinkedIn message must be under 300 characters — no exceptions- The call script must be speakable naturally — read it aloud mentally to check rhythm- **Never fabricate signals** — only reference data retrieved from Common Room or web search ## Reference Files - **`references/outreach-formats-guide.md`** — detailed format rules, examples, and tone guidelines for each channel