Send SMS or WhatsApp marketing with consent and quiet-hours checks, approval-gated.

MITAuto-check passed

Install Send Sms

skills CLI
$ npx skills add indranilbanerjee/digital-marketing-pro --skill send-sms -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install indranilbanerjee/digital-marketing-pro send-sms --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/indranilbanerjee/digital-marketing-pro.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/send-sms .claude/skills/send-sms && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
send-sms
GitHub stars
862
Used in
1 other repo
Token cost
~3.1k tokens
SKILL.md length
1,611 words
Files
1
Skills in repo
162
Repo updated
First seen
Licence
MIT

At a glance

Send SMS or WhatsApp marketing with consent and quiet-hours checks, approval-gated.

  • Works in 5 steps: Present the full preview — recipients /… → The user must type yes (or an equivalent… → Never proceed on ambiguous input. Never… → …
  • SKILL.md covers Purpose, Execution gate (MANDATORY —…, Input Required and Process, plus 2 more sections
  • Calls python

What it does

Send Sms is an agent skill from indranilbanerjee/digital-marketing-pro. Send SMS or WhatsApp marketing with consent and quiet-hours checks, approval-gated. "send an SMS blast"

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with WhatsApp. The repository describes itself as: An open-source AI marketing operating system for strategy, SEO, AEO/GEO, paid media, content, CRM, and analytics - grounded in brand context, human approval, and verifiable… The licence is MIT.

Example prompts

  • “send an SMS blast”
  • “/send-sms”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Present the full preview — recipients / spend / changes / compliance — as an Execution Summary before touching any live system.
  2. The user must type yes (or an equivalent explicit approval). ANY other input — ambiguous, implied, partial, or absent approval — cancels…
  3. Never proceed on ambiguous input. Never auto-retry a failed execution; a failure needs human review before any re-run.
  4. Only after the user types yes, record it: python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action…
  5. Execute. A write sent through connector_executor.py needs --approval-id and fires only against a matching, unused, unexpired record (see…

What it can do on your machine

Read from SKILL.md and the folder at commit 9e949f3. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Send Sms loads about 3.1k tokens when it runs. Until then it costs about 28 tokens; SKILL.md has 1,611 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~28
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from indranilbanerjee/digital-marketing-pro at commit 9e949f3, republished under its MIT licence (© indranilbanerjee). 1,611 words, ~3,142 tokens.

Download SKILL.mdSave it as .claude/skills/send-sms/SKILL.md (or your agent's skills folder).
name
send-sms
description
Send SMS or WhatsApp marketing with consent and quiet-hours checks, approval-gated. "send an SMS blast"
disable-model-invocation
false
argument-hint
[message-type]

/digital-marketing-pro:send-sms

Script location. If your host does not set ${CLAUDE_PLUGIN_ROOT}, the scripts are in this plugin's scripts/ folder, next to skills/.

Purpose

Send an SMS or WhatsApp marketing message via Twilio or Brevo with mandatory compliance checks, consent verification, quiet hours enforcement, and delivery tracking. SMS and WhatsApp are high-impact, high-risk channels — messages reach personal devices instantly with near-100% open rates, which means compliance failures carry significant legal and reputational consequences. This command enforces every required safeguard before any message leaves the system: TCPA consent for US recipients, GDPR consent for EU, CASL for Canada, opt-out mechanism presence, quiet hours respect, and message length compliance. No message is sent without passing all gates and receiving explicit user approval.

Execution gate (MANDATORY — cannot be skipped)

  1. Present the full preview — recipients / spend / changes / compliance — as an Execution Summary before touching any live system.
  2. The user must type yes (or an equivalent explicit approval). ANY other input — ambiguous, implied, partial, or absent approval — cancels the run.
  3. Never proceed on ambiguous input. Never auto-retry a failed execution; a failure needs human review before any re-run.
  4. Only after the user types yes, record it: python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action create-approval --data '{"type":"send-sms","platform":"<platform>","content_summary":"<one line from the Execution Summary>","risk_level":"<tier>"}', then python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action approve --id {approval_id}. If either command errors, stop and report the error; never work around it with another tool. The record proves the approval step ran for this action; it cannot prove who typed yes.
  5. Execute. A write sent through connector_executor.py needs --approval-id and fires only against a matching, unused, unexpired record (see /digital-marketing-pro:execute-action). A write through a connected MCP server tool is outside that code check: it relies on this typed yes and on your host's permission prompt. Afterwards run python "${CLAUDE_PLUGIN_ROOT}/scripts/approval-manager.py" --brand {slug} --action mark-executed --id {approval_id} --data '{"execution_result":"success"}' (or failure).

Input Required

The user must provide (or will be prompted for):

  • Message content: The SMS or WhatsApp message body — must include a clear opt-out mechanism (e.g., "Reply STOP to unsubscribe") for regulatory compliance. WhatsApp messages may include rich media (image, document, video, or location) and must use pre-approved message templates for business-initiated conversations per Meta's policy
  • Recipient(s): Phone number(s) in E.164 format (+1XXXXXXXXXX), a named contact list from the brand's audience data, or a segment reference. For bulk sends, provide a CSV file path or list identifier. Each recipient must have documented consent on file
  • Channel: sms or whatsapp — determines message length limits (160 chars SMS; WhatsApp: 1,024 chars for template bodies, 4,096 for free-form session messages), media support (text-only SMS vs. rich media WhatsApp), template requirements, and platform-specific compliance rules
  • Sender ID (optional): The sender phone number, short code, or alphanumeric sender ID to use — must be registered and verified on the platform. If omitted, uses the brand's default sender configured in the messaging MCP. Alphanumeric sender IDs are not supported in all countries
  • Send time: immediate for instant delivery or a scheduled date and time with timezone (ISO 8601 format). Scheduling must respect quiet hours — no sends between 9pm and 8am in the recipient's local time zone
  • Campaign name (optional): For tracking and attribution — links this send to a campaign in the brand's analytics and performance reporting. If omitted, auto-generated from message content and date
  • Personalization fields (optional): Dynamic fields to merge into the message — first name, order number, appointment time, loyalty points, or custom variables. Each field requires a fallback default for recipients with missing data (e.g., "Valued Customer" for missing first name)
  • WhatsApp template ID (optional): For WhatsApp business-initiated messages, the pre-approved template identifier with variable mappings. Required by Meta for messages sent outside the 24-hour customer service window
  • Priority (optional): normal (standard delivery queue) or urgent (priority delivery for time-sensitive messages like appointment reminders or security alerts). Urgent sends skip scheduling optimization but still enforce all compliance checks

Process

  1. Load brand context: Read ~/.claude-marketing/brands/_active-brand.json for the active slug, then load ~/.claude-marketing/brands/{slug}/profile.json. Apply brand voice, compliance rules for target markets (skills/context-engine/compliance-rules.md), and industry context. Also check for guidelines at ~/.claude-marketing/brands/{slug}/guidelines/_manifest.json — if present, load restrictions. Check for agency SOPs at ~/.claude-marketing/sops/. If no brand exists, ask: "Set up a brand first (/digital-marketing-pro:brand-setup)?" — or proceed with defaults.
  2. Verify consent compliance: Check that all recipients have documented opt-in consent for the selected channel. Apply jurisdiction-specific rules — TCPA express written consent for US recipients, GDPR explicit consent with recorded lawful basis for EU, CASL express or implied consent with expiration tracking for Canada. Flag any recipients missing required consent and exclude them from the send with a per-recipient compliance report.
  3. Enforce quiet hours: Determine each recipient's timezone from phone number country code and area code where deterministic, or from stored audience profile data. Block any immediate sends where the recipient's local time falls between 9pm and 8am. For scheduled sends, verify the scheduled time respects quiet hours in all recipient timezones. Flag conflicts and suggest the nearest compliant send window.
  4. Validate opt-out mechanism: Scan the message body for a compliant opt-out instruction — "Reply STOP to unsubscribe" or jurisdiction-appropriate equivalent. For WhatsApp, verify the opt-out flow is configured in the business account settings. If missing or non-compliant, reject the send and require the user to add opt-out language before proceeding.
  5. Check message length: Validate message length against channel limits — 160 characters per SMS segment (concatenated messages up to 1,600 characters with segment count and cost warning), 1,024 characters for WhatsApp text. For personalized messages, calculate length with the longest possible variable substitution to ensure no recipient receives a truncated message. Report character count, segment count, and per-message cost.
  6. Verify messaging MCP connection: Check which messaging platform MCP is connected — Twilio or Brevo — and confirm it supports the selected channel (SMS, WhatsApp, or both). Verify sender ID is registered, authorized, and compliant with the destination country's sender ID regulations. If not connected, guide the user through integration setup.
  7. Score brand voice: Run brand-voice-scorer.py on the message content to verify alignment with brand tone guidelines. SMS requires concise, direct messaging — flag content that is off-brand, overly formal for the channel, or could be misinterpreted in short-form context without visual cues.
  8. Create approval record: Create the record via approval-manager.py --action create-approval with the risk level inside the --data JSON — {"type":"send-sms","platform":"<platform>","content_summary":"...","risk_level":"high"}. SMS and WhatsApp marketing carries regulatory exposure (TCPA fines up to $1,500 per unsolicited message) and per-message cost. There is no --risk-level flag; see the Execution gate above for the exact command. Generate a comprehensive send summary for review.
  9. Present send summary: Display the complete summary — message preview with personalization tokens resolved for a sample recipient, recipient count (total, eligible after compliance filtering, excluded with reasons), channel, sender ID, send time with quiet hours verification, compliance checklist (consent, quiet hours, opt-out, sender verification), estimated cost per message and total send cost, SMS segment count if applicable, and brand voice score. Wait for explicit "send" confirmation.
  10. Execute send via MCP: On approval, trigger the message send through the connected Twilio or Brevo MCP. Handle personalization token replacement per recipient, batch processing for bulk sends with rate limiting, WhatsApp template variable injection, and platform-specific API formatting. Monitor for immediate delivery failures and API errors.
  11. Track delivery: Poll the messaging platform API for delivery status updates — delivered, failed, undelivered, queued, or read (WhatsApp only). Track per-recipient status for bulk sends. Alert the user if delivery failure rate exceeds 5% with categorized failure reasons (invalid numbers, carrier blocks, opt-outs processed, network timeouts).
  12. Log execution: Run execution-tracker.py to log the send event with timestamp, platform, channel, campaign name, recipient count (total and per-status), message content hash, compliance verification results, delivery metrics, cost incurred, and any failures. Save a performance insight for future SMS strategy optimization and send-time analysis.
Show full SKILL.md (324 more words)Show less

Output

A structured send confirmation containing:

  • Send confirmation: Message ID or batch ID, platform (Twilio or Brevo), channel (SMS or WhatsApp), send status (sent, scheduled, partially sent, or held for approval), and timestamp with timezone
  • Recipient details: Total recipients submitted, recipients eligible after compliance filtering, recipients excluded with per-recipient reason (consent missing with jurisdiction cited, quiet hours violation with timezone, invalid number format), and recipients in the final send list
  • Compliance report: Pass/fail for each check — TCPA consent (US), GDPR consent (EU), CASL consent (Canada), opt-out mechanism present and compliant, quiet hours respected across all recipient timezones, sender ID verified and country-compliant, and WhatsApp template approved (if applicable)
  • Message details: Final message content with character count, SMS segment count and concatenation status, personalization preview for 2-3 sample recipients showing variable resolution and fallback defaults, and opt-out mechanism placement confirmation
  • Cost report: Per-message cost by destination country, per-segment cost for concatenated SMS, total send cost, and comparison to the campaign's messaging budget if a campaign name was linked
  • Delivery report: Real-time delivery status — delivered count and percentage, pending/queued count, failed count with categorized failure reasons (invalid number, carrier rejection, opt-out processed, network error, rate limit), and read receipts for WhatsApp
  • Brand voice score: Message alignment with brand tone guidelines and SMS best practices, with notes on conciseness, clarity, and any adjustments recommended for future mobile messaging
  • Execution log entry: Timestamped record with all send metadata for compliance audit trail, campaign performance tracking, and cost accounting

Agents Used

  • execution-coordinator — Multi-jurisdiction consent verification (TCPA, GDPR, CASL) with per-recipient compliance filtering, quiet hours enforcement with timezone resolution from phone number and audience profiles, opt-out mechanism validation per channel requirements, approval workflow with HIGH risk classification and cost-aware summary, send execution via Twilio or Brevo MCP with batch processing and rate limiting, real-time delivery status tracking with failure categorization and threshold alerting, cost calculation per message and segment, and execution logging with full compliance audit trail for regulatory documentation

© indranilbanerjee, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/send-sms of indranilbanerjee/digital-marketing-pro.

Open the folder on GitHubat commit 9e949f3

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in indranilbanerjee/digital-marketing-pro, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Send Sms next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Send Sms compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Send Sms this skillindranilbanerjee/digital-marketing-pro8621 repos~3.1kAutomated safety check: PassMIT
Web Asset Generatoralonw0/web-asset-generator5141 repos~6.6kAutomated safety check: PassMIT
Deskcomm Contribuirmelgarafael/DeskcommCRM4.5k—~3.6kAutomated safety check: NotesMIT
Send User MessageTinyAGI/tinyagi3.6k—~829Automated safety check: PassMIT
Wacliopenclaw/wacli2.8k—~811Automated safety check: PassMIT
Deskcomm Extensaomelgarafael/DeskcommCRM4.5k—~2.7kAutomated safety check: PassMIT

Similar skills

  • Web Asset Generator

    alonw0/web-asset-generator

    Generate web assets including favicons, app icons (PWA), and social media meta images (Open Graph) for Facebook, Twitter, WhatsApp, and LinkedIn.

    514 GitHub starsUsed in 1 repo~6.6k tokens
    Media & CreativeAuto-check passed
  • Deskcomm Contribuir

    melgarafael/DeskcommCRM

    Guia de contribuição ao DeskcommCRM para quem vai mexer no código e abrir um pull request, sobretudo de um fork.

    4.5k GitHub stars~3.6k tokensUpdated today
    DevelopmentAuto-check: notes
  • Send User Message

    TinyAGI/tinyagi

    Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp).

    3.6k GitHub stars~829 tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check passed
  • Wacli

    openclaw/wacli

    wacli: WhatsApp linked devices, stores, sync/auth/send, repo/release work.

    2.8k GitHub stars~811 tokensUpdated today
    Auto-check passed
  • Deskcomm Extensao

    melgarafael/DeskcommCRM

    Guia para criar uma extensão do DeskcommCRM — o pacote declarativo — em vez de abrir um PR no núcleo.

    4.5k GitHub stars~2.7k tokensUpdated today
    Sales & SupportAuto-check passed
  • Integrate Whatsapp

    gokapso/agent-skills

    Connect WhatsApp to your product with Kapso: onboard customers with setup links, detect connections, receive events via webhooks, and send messages/templates/media.

    177 GitHub stars~4.8k tokensUpdated today
    Backend & APIsAuto-check passed

More from indranilbanerjee/digital-marketing-pro

All 162 skills in this repo
  • Import Template

    indranilbanerjee/digital-marketing-pro

    Import a deliverable template as a reusable placeholder template per brand.

    862 GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check passed
  • Ab Test Plan

    indranilbanerjee/digital-marketing-pro

    Plan an A/B test by script: sample size per variant, days to run, stopping rules.

    862 GitHub starsUsed in 1 repo~1.9k tokens
    Auto-check passed
  • Aeo Audit

    indranilbanerjee/digital-marketing-pro

    Run a one-time AEO audit of six AI answer engines, scored per surface.

    862 GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • Agent Readiness Audit

    indranilbanerjee/digital-marketing-pro

    Audit agent readiness by script: AI-crawler rules, product schema, no-JS HTML, feeds.

    862 GitHub starsUsed in 1 repo~3.7k tokens
    Auto-check passed
  • Backlink Gap

    indranilbanerjee/digital-marketing-pro

    Find backlink gap domains linking to competitors, not you, scored by script.

    862 GitHub starsUsed in 1 repo~2.6k tokens
    Auto-check passed
  • C2pa Metadata

    indranilbanerjee/digital-marketing-pro

    Embed C2PA provenance in AI-generated images, video or PDF by script.

    862 GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed

Works with

Questions about Send Sms

What does Send Sms do?

Send SMS or WhatsApp marketing with consent and quiet-hours checks, approval-gated. Send Sms is an agent skill from indranilbanerjee/digital-marketing-pro. Send SMS or WhatsApp marketing with consent and quiet-hours checks, approval-gated.

How do I install Send Sms in Claude Code?

Run `npx skills add indranilbanerjee/digital-marketing-pro --skill send-sms -a claude-code`. Or copy the skill folder (skills/send-sms in indranilbanerjee/digital-marketing-pro) into .claude/skills/send-sms in your project. Claude Code loads it when a task matches its description.

How do I install Send Sms in Codex?

Run `npx skills add indranilbanerjee/digital-marketing-pro --skill send-sms -a codex`. Or copy the skill folder (skills/send-sms in indranilbanerjee/digital-marketing-pro) into .agents/skills/send-sms in your project. Codex loads it when a task matches its description.

Can I use Send Sms in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add indranilbanerjee/digital-marketing-pro --skill send-sms -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/send-sms, .gemini/skills/send-sms, .github/skills/send-sms and .opencode/skills/send-sms in your project.

What does Send Sms need to run?

Going by SKILL.md and its folder, Send Sms needs the command-line tools its instructions call (python). Our summary lists: Python 3.

Does Send Sms access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Send Sms safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Send Sms use?

Send Sms is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Send Sms use?

About 3.1k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Send Sms?

Skills that share tags, products or a category with Send Sms: Web Asset Generator (alonw0/web-asset-generator, 514 stars), Deskcomm Contribuir (melgarafael/DeskcommCRM, 4.5k stars), Send User Message (TinyAGI/tinyagi, 3.6k stars) and Wacli (openclaw/wacli, 2.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Send Sms?

indranilbanerjee (a GitHub user) maintains it in indranilbanerjee/digital-marketing-pro, which has 862 GitHub stars. The repository holds 162 skills in this directory. The repository was last updated on October 9, 2026.

Source: indranilbanerjee/digital-marketing-pro on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.