---
name: draft-message
description: Draft or improve a prospect opener, reply or caller-eligible follow-up from the actual sender, offer and conversation, with the same prompts Sellable's own writers use.
---

# Draft Message

Write one message a person can naturally answer, exactly as Sellable's own
writers do. Each mode below is the product's prompt, generated from the
backend source, so an agent draft and a product draft follow the same policy.
Add no rules of your own.

Load only the mode for the current work with `get_subskill_asset`, following
nextOffset until hasMore=false:
- No prospect reply yet (OPENER): `modes/opener.md`, the prompt the product
  uses for every Conversations first message and the Reply Agent's opener lane.
- A prospect has replied (REPLY): `modes/reply.md`, the Reply Agent's reply
  prompt.
- The caller permits another message after silence (FOLLOW_UP):
  `modes/follow-up.md`, the Reply Agent's follow-up prompt.

Each mode describes its input. Gather that input first, with the reads below,
then write by the mode. Where a mode says the input already holds everything
and not to call tools, that applies to the writing step.

Respect the caller stage: pre-Settings campaign Mode 0 uses its attested campaign/client/company basis without requiring a connected sender or calling get_sender/list_senders. No personal biography or first-person post ownership follows from that fallback. For a concrete-sender request, read scoped `get_sender({senderId,workspaceId})` only when already assigned, not supplied and caller-permitted. Prefer its `generationContext.company` to an active-workspace default. `get_company_info` and `get_inbox_thread` have no workspace override: use only an already attested matching connection; never switch global workspace or mix another workspace's context.

For a specific missing fact, reuse provided enrichment first, then available `fetch_linkedin_profile`, `fetch_linkedin_posts`, `fetch_company` (companyUrl), `fetch_company_posts` or host page/search reads. Usually one targeted batch of 1–3 reads is enough; one follow-on may resolve an ambiguity. Stop when a useful angle is supported. No lead sourcing, shell scraping, enrichment writes or dossier onboarding detour. If a tool is unavailable, use upstream context or a simpler supported draft. Frozen comparisons do not research afresh.

Return the caller's established draft/metadata contract. Plain-chat requests can receive just the message and a brief relevant input limitation. Campaign creation, approved templates, scheduling, asset delivery, bookings and sending remain with their existing owners. This skill grants none of those actions.
