migrate-to-sent
Plans and executes a migration from Twilio, Sinch, Infobip, Vonage, or MessageBird/Bird to Sent v3 — mapping send calls, status vocabularies, webhook signature schemes, opt-out stores, templates, and tenancy models, then cutting over safely with dual-run and rollback. Use when replacing an incumbent CPaaS provider, translating provider code or webhook handlers to Sent, or planning a phased cutover and its verification gates.
Security Assessment
About migrate-to-sent
Migrate to Sent plans and executes a migration from an incumbent CPaaS provider (Twilio, Sinch, Infobip, Vonage, or MessageBird/Bird) to Sent v3. It addresses the recurring, high-risk translation problems that every such migration hits, several of which pass tests but fail expensively in production - most notably that Sent's channel array is a broadcast list, so porting an incumbent's ordered fallback array multiplies cost by producing one message and charge per recipient-channel pair.
The skill works through five ordered translation problems: replacing ordered fallback with Sent's automatic routing; reconciling status vocabularies (including Sent-specific states like ROUTED, FILTERED, BLOCKED, and SCHEDULED that break naive retry logic and must not be retried when they represent consent or account gates); rewriting webhook signature verification, since each provider signs differently and no Sent SDK ships a verifier (Sent uses HMAC-SHA256 over id.timestamp.raw_body with constant-time comparison and a 300-second window); reconciling opt-out/suppression stores channel-agnostically rather than copying them; and mapping templates and tenancy. A cutover playbook defines seven phases with explicit exit gates (inventory, mapping, parallel build, verification, dual-run, staged cutover, decommission), rollback triggers, and comparison metrics, and an inventory_scan.py script scans a repository for provider SDK imports, endpoint URLs, signature header names, status strings, numeric error codes, and ordered channel arrays with migration classifications.
It targets engineers and architects replacing an incumbent messaging provider, translating provider code or webhook handlers to Sent, and planning phased, reversible cutovers with dual-run and rollback. The security guidance is defensive throughout (constant-time signature comparison, timestamp windows, preserving consent records), and it delegates receiver and routing detail to companion Sent skills.
FAQ
Which providers does it migrate from?
Twilio, Sinch, Infobip, Vonage, and MessageBird/Bird, moving to Sent v3.
What is the single most costly migration mistake it prevents?
Porting an incumbent's ordered fallback channel array into Sent's channel array. Sent's channel array is a broadcast list, so that produces one message and one charge per recipient-channel pair; the correct translation is automatic routing (omit channel or send ["sent"]).
Does it help with webhook security?
Yes, defensively. It documents that each provider signs differently and no Sent SDK ships a verifier, and specifies Sent's scheme: HMAC-SHA256 over id.timestamp.raw_body with the base64-decoded secret, constant-time comparison, and rejection of timestamps outside 300 seconds.
How does it de-risk the actual cutover?
With a seven-phase cutover playbook that has explicit exit gates, mandatory dual-run and cohort verification, pre-defined rollback triggers, and cost accounting that counts messages rather than requests.
What does the inventory script do?
scripts/inventory_scan.py scans a repository for provider SDK imports, endpoint URLs, signature header names, status strings, numeric error codes, and ordered channel arrays, reporting each with a migration classification as a starting checklist.
Install migrate-to-sent
Quick Setup:
- Copy the skill folder to
.claude/skills/ - Claude will automatically detect and use the skill
Repository
sentdm/sent-plugin