$npx -y skills add Varnan-Tech/opendirectory --skill outreach-sequence-builderTakes a buying signal and generates a personalized multi-channel outreach sequence across email, LinkedIn, and phone. Outputs 4-6 ready-to-send touchpoints over 10-14 days. Optionally drafts email touchpoints via Composio Gmail. Use when asked to write an outreach sequence, build
| 1 | # Outreach Sequence Builder |
| 2 | |
| 3 | Take a buying signal. Generate a personalized multi-channel outreach sequence. Output ready-to-send messages across email, LinkedIn, and phone. |
| 4 | |
| 5 | --- |
| 6 | |
| 7 | **Critical rule:** Every message must be filled in completely from the context you load. Only `{{first_name}}` is allowed as a variable. No `[Company Name]` brackets, no `[INSERT PAIN POINT]` placeholders. If you do not have the information to fill something in, ask before writing. Never send a message with an unfilled placeholder. |
| 8 | |
| 9 | --- |
| 10 | |
| 11 | ## Step 1: Setup Check |
| 12 | |
| 13 | Confirm required env vars: |
| 14 | |
| 15 | ```bash |
| 16 | echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}" |
| 17 | echo "COMPOSIO_API_KEY: ${COMPOSIO_API_KEY:-not set, Gmail drafting will be skipped}" |
| 18 | ``` |
| 19 | |
| 20 | **If GEMINI_API_KEY is missing:** |
| 21 | Stop. Tell the user: "GEMINI_API_KEY is required. Get it at aistudio.google.com. Add it to your .env file." |
| 22 | |
| 23 | **If COMPOSIO_API_KEY is missing:** |
| 24 | Continue. Sequences will be output as formatted text for copy-paste. Gmail draft creation is skipped. |
| 25 | |
| 26 | --- |
| 27 | |
| 28 | ## Step 2: Load Context |
| 29 | |
| 30 | Check for an existing ICP file and account files: |
| 31 | |
| 32 | ```bash |
| 33 | ls docs/icp.md 2>/dev/null && echo "icp found" || echo "icp missing" |
| 34 | ls docs/accounts/ 2>/dev/null && echo "accounts found" || echo "accounts missing" |
| 35 | ``` |
| 36 | |
| 37 | **If docs/icp.md exists:** Read it. Extract: |
| 38 | - Target personas (job titles, seniority, department) |
| 39 | - Company profile (size, industry, funding stage) |
| 40 | - Core pain points (use the buyer's exact language) |
| 41 | - Key differentiators (why your product over alternatives) |
| 42 | |
| 43 | **If docs/accounts/{company}.md exists:** Read the relevant file. Extract: |
| 44 | - Company name, size, recent context |
| 45 | - Known tech stack or pain points |
| 46 | - Any existing relationship or prior contact |
| 47 | |
| 48 | **If neither exists:** Ask the user these 4 questions. Do not proceed until all 4 are answered: |
| 49 | 1. What does your product do? (one or two sentences) |
| 50 | 2. Who are you targeting? (job title, company size, industry) |
| 51 | 3. What is the main problem you solve? (from the buyer's perspective, not yours) |
| 52 | 4. What is your key differentiator? (why you over the alternative they use today) |
| 53 | |
| 54 | --- |
| 55 | |
| 56 | ## Step 3: Identify the Signal |
| 57 | |
| 58 | Determine which of the 7 signal types applies. Read `references/signal-playbook.md` for the full Insight, Bridge, Opener, and Ask for each signal type. |
| 59 | |
| 60 | **7 signal types:** |
| 61 | |
| 62 | | Signal | Definition | |
| 63 | |--------|-----------| |
| 64 | | Post-Fundraise | Company raised a funding round in the last 30 days | |
| 65 | | Hiring Signal | Company posted 5 or more roles in a function you serve | |
| 66 | | Competitor Displacement | Contact is using a competitor and showing frustration | |
| 67 | | Product Launch | Company launched a new product or major feature | |
| 68 | | Content Engagement | Contact liked, commented, or shared your content | |
| 69 | | Event Follow-up | You met or were in the same session at a conference or webinar | |
| 70 | | Job Change | Contact moved to a new company in the last 60 days | |
| 71 | |
| 72 | **If the user provided a signal in their prompt:** Confirm the type and extract the specific details (round size, role titles, product name, event name, etc.). |
| 73 | |
| 74 | **If no signal is clear:** Ask: "What triggered this outreach? (e.g. they raised a round, they're hiring engineers, you met at an event)" |
| 75 | |
| 76 | State the detected signal type and the specific detail before proceeding. |
| 77 | |
| 78 | --- |
| 79 | |
| 80 | ## Step 4: Develop the Angle |
| 81 | |
| 82 | Using the signal type and context loaded in Steps 2-3, define the four angle elements. Read `references/signal-playbook.md` for the formula for this signal type. |
| 83 | |
| 84 | Write out explicitly before generating any messages: |
| 85 | |
| 86 | ``` |
| 87 | Signal: [specific signal + concrete detail] |
| 88 | Insight: [what this signal reveals about their situation] |
| 89 | Bridge: [how your product connects to what the signal reveals] |
| 90 | Opener: [one sentence referencing the specific signal detail] |
| 91 | Ask: [minimum viable CTA, under 10 words] |
| 92 | ``` |
| 93 | |
| 94 | The opener must name the specific trigger. Vague openers are rejected. |
| 95 | |
| 96 | Good: "Congrats on the $18M Series B — scaling the sales team fast usually creates an onboarding gap." |
| 97 | Bad: "I saw your company recently raised funding." |
| 98 | |
| 99 | --- |
| 100 | |
| 101 | ## Step 5: Plan the Channel Sequence |
| 102 | |
| 103 | Design 4-6 touchpoints across email, LinkedIn, and phone. Rules: |
| 104 | |
| 105 | - Total duration: 10-14 days |
| 106 | - Minimum gap: 2 days between any two touches |
| 107 | - Never use the same channel twice in a row |
| 108 | - Each follow-up mus |