Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Write My Outreach

ASecurity

Draft the outreach you need: a grounded cold email, a sixty-second cold-call script, a post-call follow-up, an inbound reply, a renewal note, or a churn-save email. Every draft is voice-matched to your sent inbox, anchored in your playbook, and stays in a file until you copy and send.

113 stars
0 votes
0 copies
0 views
Added 9/19/2026
businessgo

Security Analysis

A100/100

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add gethouston/houston --skill write-my-outreach --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Write My Outreach?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Write My Outreach
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gethouston-write-my-outreach/badge)](https://www.skillsdirectory.com/skills/gethouston-write-my-outreach)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: write-my-outreach
description: "Draft the outreach you need: a grounded cold email, a sixty-second cold-call script, a post-call follow-up, an inbound reply, a renewal note, or a churn-save email. Every draft is voice-matched to your sent inbox, anchored in your playbook, and stays in a file until you copy and send."
version: 1
category: Sales
featured: yes
image: handshake
integrations: [googlecalendar, gmail, outlook, hubspot, salesforce, attio, pipedrive, gong, fireflies, stripe]
x_houston:
  created_by: houston
  skill_schema: 1
---


# Write My Outreach

One skill, every outreach surface. `stage` param pick shape; voice-match, honest proof, "never invent quote" discipline shared.

## Parameter: `stage`

- `cold-email`  -  grounded first-touch email (3 short paragraphs max): cited trigger signal → specific pain → one-line ask. Replaces generic "who handles X" email.
- `cold-script`  -  60-90s cold-call script: opener, pattern-interrupt, 2 discovery questions, soft CTA, landmine to avoid.
- `followup`  -  post-call recap + confirmed next step email, your voice. Pulls call analysis from `calls/{slug}/`.
- `inbound-reply`  -  classify inbound as `interested` / `asking-question` / `objection` / `not-now` / `unsubscribe`, draft right reply. Flags spam / wrong-person clean.
- `renewal`  -  bundle shipped outcomes, expansion levers, pricing reasoning into renewal draft. Never commits pricing outside playbook.
- `churn-save`  -  non-defensive save. Names specific signal (downgrade, usage drop, support escalation), offers one concrete remedy, proposes dated next step. No guilt, no fake scarcity.

User names stage in plain English ("cold email", "call script", "follow up", "reply", "renewal note", "save email") → infer. Ambiguous → ask ONE question naming 6 options.

## When to use

- Explicit: any trigger phrase in description.
- Implicit: inside `check-my-sales subject=discovery-call` (analysis ends with drafted followup), inside `score-my-pipeline subject=customer-health` (red → churn-save), inside `manage-my-crm action=route` (interested inbound → cold-email or followup).

## Connections I need

I run external work through Composio. Before this skill runs I check that the categories below are linked. Missing → I name the category, ask you to connect it from the Integrations tab, stop.

- **Inbox**  -  sample your sent emails to learn your voice. Required for every email-shaped stage.
- **CRM**  -  read deal context (owner, stage, last touch) for `followup`, `renewal`, `churn-save`. Required for those stages.
- **Calendar**  -  suggest meeting slots in `inbound-reply`. Optional.
- **Scrape / Search**  -  fresh signal search for `cold-email`. Required for that stage.
- **Meetings**  -  pull call transcripts to ground `followup`. Optional.
- **Billing**  -  pull Stripe downgrade or cancel signal for `churn-save`. Optional.

If none of the required categories are connected I stop and ask you to connect your inbox first since voice-matching grounds every draft.

## Information I need

I read your sales context first. For every required field that's missing I ask ONE plain-language question (best modality: connected app > file drop > URL > paste) and wait.

- **Your sales playbook**  -  Required. Why I need it: pricing stance, objection handbook, primary first-call goal, ideal customer profile all anchor the draft. If missing I ask: "I don't have your playbook yet  -  want me to draft it now?"
- **Voice samples**  -  Required for every email-shaped stage. Why I need it: drafts sound like you, not a template. If missing I ask: "Connect your inbox so I can read your last 30 sent emails, or paste 3 to 5 emails you've written recently."
- **The target lead, deal, or customer**  -  Required. Why I need it: every draft is grounded to a specific person. If missing I ask: "Who's this draft for  -  which prospect, deal, or customer?"
- **Connected CRM**  -  Required for `followup`, `renewal`, `churn-save`. Why I need it: I pull deal stage, owner, and last touch. If missing I ask: "Connect your CRM (HubSpot, Salesforce, Attio, Pipedrive, or Close), or paste the deal context."
- **Connected billing**  -  Optional, helpful for `churn-save`. Why I need it: I anchor the save in the actual downgrade or cancel signal. If you don't have it I keep going with TBD and ask you to describe the signal.

## Steps
<!-- houston-workflow:v1 -->

1. **Read ledger + playbook.** Gather missing required fields per above (ONE question each, best-modality first). Write atomically.

2. **Branch on stage.**
   - `cold-email`: run fresh signal search (recent news, job openings, funding, product launch) via Composio-discovered scrape / search slugs. Pick SINGLE strongest signal. Open with specific signal line 1 (not "hope this finds you well"). Draft 3 short paragraphs: signal → specific pain (from playbook, grounded in ideal customer profile) → one-line ask. Subject cites signal. Max 110 words body. Save to `outreach/email-{lead-slug}-{YYYY-MM-DD}.md`.
   - `cold-script`: dossier from `leads/{slug}/` (or ask). Structure: **Opener** (15s, reason for call), **Pattern-interrupt** (one specific observation unique to them), **Discovery** (2 questions matched to weakest qualification pillar for segment from playbook), **Soft CTA** (calendar link, 15m next week), **Landmine to avoid** (one thing from `call-insights/` flagged loss pattern). Save to `outreach/script-{lead-slug}-{YYYY-MM-DD}.md`.
   - `followup`: read latest `calls/{deal-slug}/notes-*.md` and `analysis-*.md`. Subject: "Re: {their pain, in their words}". Body: confirm we heard them → 2-3 bullets answering stated objection / open question → next step with specific date. Match voice. Save to `deals/{deal-slug}/followup-{YYYY-MM-DD}.md` AND mirror to `outreach/email-{deal-slug}-{date}.md` for outreach index.
   - `inbound-reply`: read pasted or Composio-pulled reply. Classify (interested / asking-question / objection / not-now / unsubscribe / spam). `interested` → draft booking reply with 2-3 slot suggestions (pull Google Calendar if connected). `asking-question` → answer inline if playbook covers; else flag for user. `objection` → chain into `handle-an-objection`. `not-now` → draft polite "circle back in {N} weeks" note. `unsubscribe` / `spam` → queue right CRM action via `manage-my-crm action=queue-followup` and stop. Save to `outreach/inbound-reply-{lead-slug}-{YYYY-MM-DD}.md`.
   - `renewal`: read `customers/{slug}/` history (onboarding plan, QBRs, health scores). Structure: shipped outcomes (numbers from playbook's success-metric definition) → expansion levers (feature-request patterns, team growth signal) → pricing reasoning (from playbook  -  never commit). End dated next step. Save to `customers/{slug}/renewal-{YYYY-MM-DD}.md`.
   - `churn-save`: read downgrade / cancel / usage-drop signal (from Stripe via Composio, or pasted). Structure: name specific signal verbatim → one concrete remedy (pause, downgrade further, concierge help, refund  -  genuine option matching signal, not all four) → proposed dated next step. No guilt, no fake scarcity. Save to `customers/{slug}/save-{YYYY-MM-DD}.md`.

3. **Voice check.** Before finalize, compare against `config/voice.md`: sentence length, greeting habit, closing habit, forbidden phrases. Rewrite offending lines.

4. **Sanity-check against playbook.** Any claim re pricing, timelines, anchor accounts must match `context/sales-context.md`. No commitments outside pricing stance. No fabricated customer names.

5. **Append to `outputs.json`**  -  read-merge-write atomically: `{ id (uuid v4), type: "outreach", title: "{Stage}  -  {target}", summary: "<subject line + next step>", path, status: "draft", createdAt, updatedAt, domain: "<outbound | inbound | retention>"}`. Domain: `cold-email` + `cold-script` → `outbound`; `inbound-reply` → `inbound`; `followup` → `meetings`; `renewal` + `churn-save` → `retention`.

6. **Summarize to user.** Subject line + next step inline. Path to full draft. Explicit: "I never send  -  copy from file or open inbox to send."

## What I never do

- Send, post, schedule. Every draft stays in file until you copy.
- Invent customer quote, metric, competitor claim. Source thin → mark `TBD  -  {what to bring}` and ask.
- Commit pricing outside playbook's pricing stance  -  surface exception with `FLAG: needs approval`.
- Use guilt, fake scarcity, dark patterns in `churn-save` / `renewal`.
- Hardcode tool names  -  Composio discovery at runtime only.

## Outputs

- `outreach/{channel}-{slug}-{YYYY-MM-DD}.md` where `channel` = `email` (cold-email, followup, inbound-reply) / `script` (cold-script).
- `followup`: mirrors into `deals/{slug}/followup-{date}.md`.
- `renewal` / `churn-save`: writes to `customers/{slug}/`.
- Appends to `outputs.json` with `type: "outreach"`.

Attribution

gethoustongethouston
View sourceMore from gethouston →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Solution Architect

Designs system architecture, component specifications, and technical integration strategy. Use when: designing solutions, system architecture, technology stack, or integration approaches.

192 votes

Akorchak:Venture Assessment

Generate a comprehensive VC investment assessment report for a company

72 votes

Stock Analysis

Analyze stocks and cryptocurrencies using Yahoo Finance data. Supports portfolio management (create, add, remove assets), crypto analysis (Top 20 by market cap), and periodic performance reports (daily/weekly/monthly/quarterly/yearly). 8 analysis dimensions for stocks, 3 for crypto. Use for stock analysis, portfolio tracking, earnings reactions, or crypto monitoring.

6511 votes

Just Fucking Cancel

Find and cancel unwanted subscriptions by analyzing bank transactions. Detects recurring charges, calculates annual waste, and helps you cancel with direct URLs and browser automation. Use when: 'cancel subscriptions', 'audit subscriptions', 'find recurring charges', 'what am I paying for', 'save money', 'subscription cleanup', 'stop wasting money'. Supports CSV import (Apple Card, Chase, Amex, Citi, Bank of America, Capital One, Mint, Copilot) OR Plaid API for automatic transaction pull. Out...

6511 votes

Telegram Compose

Compose rich, readable Telegram messages using HTML formatting via direct Telegram API. Use when: (1) Sending any Telegram message beyond a simple one-line reply, (2) Creating structured messages with sections, lists, or status updates, (3) Need formatting unavailable via Clawdbot's Markdown conversion (underline, spoilers, expandable blockquotes, user mentions by ID), (4) Sending alerts, reports, summaries, or notifications to Telegram, (5) Want professional, scannable message formatting wit...

6511 votes
View all in business →