Docsend to pdf
Skill yaniv-golan/docsend-to-pdf-skill/.agents/skills/docsend-to-pdf
Download a DocSend document (docsend.com/view/... or docsend.dropbox.com/view/...) as a PDF. Use when the user pastes a DocSend link and wants it saved, downloaded, archived, exported, or converted to a PDF. Slides are per-request signed images behind email/passcode/NDA/email- verification gates — curl/wget/HTML scraping won't work, so this skill drives a headless browser and handles the gates. Not for Papermark, Google Docs, Notion, Pitch.com, pptx, or existing PDFs.From its SKILL.md
npx -y skills add yaniv-golan/docsend-to-pdf-skill --skill docsend-to-pdfAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.2 KB, as published. Nobody here has run it
DocSend to PDF
Convert DocSend shared links to downloadable PDF files.
Prerequisites
Check if the CLI is installed:
python -m docsend_to_pdf --version
If not installed, install from the cli/ directory in this repository (clone first if needed: git clone https://github.com/yaniv-golan/docsend-to-pdf-skill && pipx install ./docsend-to-pdf-skill/cli/). Try in order:
pipx install <path-to-repo>/cli/pip install --user <path-to-repo>/cli/pip install <path-to-repo>/cli/
Report failure clearly if all attempts fail.
Invocation
Run the CLI with --json for structured output:
python -m docsend_to_pdf "<url>" --email "<email>" --json -o "<output>.pdf"
If the user hasn't provided an email, omit --email — the CLI will report what it needs.
Response Handling
Parse the JSON output from stdout. Handle each status value:
| Status | Action |
|---|---|
complete | Report success: "Downloaded <pages>-page deck to <output>". Mention the title if present. |
needs_email | Ask user for their email address. Re-invoke with --email <email> --session <session>. |
needs_passcode | Ask user for the passcode. Re-invoke with --passcode <code> --session <session>. |
needs_nda | Show the nda_text to the user. Ask: "This document requires accepting an NDA. Shall I accept it?" If yes, re-invoke with --accept-nda --session <session>. |
needs_verification | See Verification Flow below. |
error | Report the message to the user. |
Always pass --session <session> (from the previous JSON output) when re-invoking to resume.
Verification Flow
When status is needs_verification:
-
Check your available tools for any email-related MCP (tools containing "mail", "email", or "inbox" in their names).
-
If email access is available, ask the user:
"DocSend sent a verification code to <email>. I can either: (A) You paste the code here (B) I check your email for the code (requires your approval)"
-
If no email access, ask the user to paste the code.
-
Once you have the code, re-invoke:
python -m docsend_to_pdf --verification-code <code> --session <session> --json -o "<output>.pdf"
Never access the user's email without explicit approval in that moment.
Error Recovery
If the CLI exits with code 1 and no JSON on stdout, report the stderr output. Common causes:
- Network timeout — suggest retrying
- Invalid URL — ask user to verify the link
- Missing Python dependency — suggest
pip installcommands
Reference
For the full JSON contract, all CLI flags, and example invocations for each gate scenario, read references/cli-usage.md.