Skip to content

docs(outreach): skill for drafting outbound calls - #702

Merged
kmonsoe merged 1 commit into
mainfrom
docs/outreach-voice-skill
Jul 30, 2026
Merged

docs(outreach): skill for drafting outbound calls#702
kmonsoe merged 1 commit into
mainfrom
docs/outreach-voice-skill

Conversation

@kmonsoe

@kmonsoe kmonsoe commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

PR 5 of the outbound-calling series. Stacked on #701. Documentation only — no code.

Voice campaigns have worked since before this series started, but had no skill. An agent had to infer from skill://outreach/draft-initial-email that draftBody on a voice campaign is what a text-to-speech agent says out loud, not a message that gets delivered — which is the kind of thing that produces a proposal containing markdown and a URL.

skill://outreach/draft-initial-call covers what only a spoken channel needs said:

  • write speech, not prose — short sentences, no markdown, no emoji, since it's read aloud or mangled
  • no URLs, email addresses or reference codes; nobody can click on a phone call
  • identify who is calling, from where, and why in the first sentence — a meandering opening is what a complaint quotes
  • give the voice agent a goal and boundaries rather than a script to recite; it handles the conversation, you set the intent
  • say what it must not do: claim to be human if asked, quote prices it wasn't given, keep someone who says no
  • say what to do when the person is busy

It also sets a higher bar for who is worth calling. The segment says you may contact them; calling asks whether you should. Matching a filter is a reason to email, not to phone — so the skill asks for a per-contact reason in evidence and to skip the rest.

And it states the constraint from #699 plainly: approval is dashboard-only, outreach_approve_proposal refuses agents on every host, and there is no tool, key or argument that changes that — so filing the proposal is where the agent stops.

Ends with what actually happens on approval, including that quiet hours and blackout dates are checked before dialling and are read in the campaign's quietHoursTimezone — worth saying, because without one they fall back to UTC, which isn't what "no calls before 08:00" means anywhere in Europe.

Also cross-links the three first-touch skills to each other; review-proposals listed only the email ones.

Fixtures regenerated — 45 skills. src/mcp and src/control green at 232 tests, which covers skill loading and the public catalog.

🤖 Generated with Claude Code

https://claude.ai/code/session_011HwhYb3yU3qnGjtFRodQxm

Voice campaigns had no skill. An agent had to infer from the email one that
draftBody is what a text-to-speech agent says aloud rather than a message
that gets delivered.

Covers what only a spoken channel needs: write speech not prose, no markdown
or emoji, no URLs nobody can click, identify the caller first, give the agent
a goal and boundaries rather than a script, and say what to do when the
person is busy or asks whether it is human. Sets a higher bar for who is
worth calling — matching a segment filter is a reason to email, not to phone
— and states that approval is dashboard-only.

Cross-links the three first-touch skills; review-proposals listed only email.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011HwhYb3yU3qnGjtFRodQxm
@kmonsoe
kmonsoe force-pushed the docs/outreach-voice-skill branch from a5ecf1e to 50a60f3 Compare July 30, 2026 10:47
@kmonsoe
kmonsoe changed the base branch from feat/outreach-sms-campaigns to main July 30, 2026 10:47
@kmonsoe
kmonsoe merged commit 77820b0 into main Jul 30, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant