dove-sendlisted
Install: claude install-skill sandeep121sandeep/dove-sms-skill
# /dove-send — send + confirm
Engine: `dove.py` in this skill's folder. Config: shared `~/.dove/config.json`
(run `/dove-setup` if missing).
## Flow
1. List templates and pick the one matching the user's intent:
```
python3 ~/.claude/skills/dove-send/dove.py templates
```
If several plausibly match — or none clearly does — ask the user which.
NEVER invent or alter template content; DLT only delivers approved templates.
**If `templates` is empty or nothing matches, the message isn't registered on
DLT** — you can't send un-approved content. Walk the user through
`docs/DLT-SETUP.md` (register header + template on Smartping, get approval,
then `/dove-setup` to import), then come back.
2. Send + auto-confirm (use today's date for the DLR poll):
```
python3 ~/.claude/skills/dove-send/dove.py send-smart --name <template> \
--to <n1,n2,...> --date <YYYY-MM-DD>
```
For an OTP-style template (`{otp}`), pass `--otp <digits>` (digits only). To
generate a code: `python3 .../dove.py gencode --digits 6`.
3. Report the per-number result the tool prints. Promo DLRs can lag — if a number
shows `no DLR yet`, run `/dove-report` shortly after.
## Reading results
- `✅ DELIVERED` (000) — done.
- `❌ rejected at gateway` — the send wasn't accepted (bad params/creds); fix and retry.
- `❌ UNDELIV — DLT Template Not Matched` (633) — content ≠ registered template.
- `❌ UNDELIV — No CTA Whitelisted` (700) — promo URL not whitelisted in DLT.
- `❌ blocke