recoupable/skills

recoup-platform-email-helper

Send an email via the Recoup API the reliable way — a Node helper that serializes the body correctly and fails loudly instead of sending an empty email. Use whenever a task needs to email a report/summary/notification to the account owner or a recipient. ALWAYS use this script to send email; never hand-build `curl … -d "{…}"` with inline `jq`/shell interpolation (that silently produces empty "Message from Recoup" footer-only emails). Pairs with recoup-platform-api-access (which it sends through…

All-time #3683 Trending #4946 First seen Jul 1, 2026
8-week activity · all time api

Installation

$ npx skills add recoupable/skills --skill recoup-platform-email-helper

Summary

  • Send an email via the Recoup API the reliable way — a Node helper that serializes the body correctly and fails loudly instead of sending an empty email.
  • Use whenever a task needs to email a report/summary/notification to the account owner or a recipient.
  • ALWAYS use this script to send email; never hand-build `curl … -d "{…}"` with inline `jq`/shell interpolation (that silently produces empty "Message from Recoup" footer-only emails).
  • Pairs with recoup-platform-api-access (which it sends through).

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from recoupable/skills · top by installs.

npx skills add recoupable/skills

Browse all from recoupable/skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 3
License LICENSE
Default branch main
Open issues 0
Status Active

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 2,874 B
  • docs SUMMARY.md 543 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 3,800 installs

SKILL.md

Sending email from a task

Send email by running the bundled Node script — do not assemble JSON in the shell.

Why this exists

Hand-rolling the send (curl -sS … -d "{… \"html\": $(echo "$HTML" | jq -R -s '.') …}") is fragile: depending on quoting/escaping it produces a malformed body, and the API used to silently deliver an empty footer-only email titled "Message from Recoup" with success:true. The model gets this wrong stochastically. This script removes shell serialization entirely.

How to send

  1. Write the email body to a file (recommended for HTML — avoids all escaping issues):

``bash cat > /tmp/report.html <<'HTML' <h1>Daily Report</h1> <p>…your real content…</p> HTML ``

  1. Send it:

``bash node "$SKILL_DIR/scripts/send-email.mjs" \ --subject "Daily Report — $(date '+%B %d, %Y')" \ --html-file /tmp/report.html \ --to [email protected] ``

$SKILL_DIR is this skill's install directory (~/.agents/skills/recoup-platform-email-helper); use the absolute path to scripts/send-email.mjs.

Flags

Flag Meaning
--subject <s> Subject line (optional — the API derives one from the body if omitted).
--html-file <path> / --html <s> HTML body. Prefer --html-file.
--text-file <path> / --text <s> Plain-text body.
--to <email> Recipient (repeatable). Omit to default to the account's own email ("email me this").
--cc <email> CC (repeatable).
--chat-id <id> Room id for the footer "continue the conversation" link.
--dry-run Serialize + validate and print the payload; do not send. Use to preview.

Rules

  • Exactly one body is required. The script refuses to send (exit code 2) if there is no non-empty --html/--text. Never try to send an empty email.
  • Check the exit code. Non-zero means it did not send — read stderr and fix it; do not report success. The script prints the Resend message id on a real send.
  • The script reads RECOUPAPIKEY / RECOUPACCESSTOKEN and RECOUPAPIBASE from the environment — these are already set in the sandbox. Never print or hard-code them.
  • Node only (the sandbox runtime is node22; python3 is not guaranteed). Zero dependencies.