Pandadoc export
Use this skill whenever the user wants to migrate, export, back up, or download data out of a PandaDoc account — documents, templates, or contacts. Trigger on phrases like "export PandaDoc", "migrate off PandaDoc", "back up our PandaDoc", "download all PandaDoc templates/documents", or "get my data out of PandaDoc before cancelling", even if they don't name the tool. Drives the `pandadoc-export` CLI (this repo).From its SKILL.md
npx -y skills add josevitorls/pandadoc --skill pandadoc-exportAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- reads credentialsReads from 2 credential sources: `.env` and 1 more.
- 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.
- runs commandsInstructs the agent to run 8 commands, including `cat .env 2>/dev/null || cp .env.example .env` and 7 more.
SKILL.md
3.8 KB, 847 tokens by cl100k_base, as published. Nobody here has run it
Goal
Drive the pandadoc-export CLI to export all data from the user's PandaDoc account: documents (PDF + JSON), templates (JSON, plus PDF + DOCX via a headless browser), and contacts (JSON), organized per workspace.
How the tool is structured
There are two layers, and they authenticate differently — this matters for how you run them:
- API layer (
discover,keys,inventory,extract): uses an Org-Admin API key from.env. Fully unattended. - Browser layer (
templates): exports template PDF + DOCX, which the API cannot produce. It needs a logged-in web session, so the user logs in once in a browser window; the session is then reused headlessly.
Steps
1. Check configuration
Confirm .env exists and contains a real PANDADOC_ADMIN_KEY (an Org-Admin production API key — a regular workspace key cannot list workspaces or mint per-workspace keys). If missing or still a placeholder, copy the example and ask the user to fill it in. Do not proceed without it.
cat .env 2>/dev/null || cp .env.example .env
2. Run the API export
pandadoc-export all
Runs, in order: discover (list workspaces) → keys (generate/reuse a key per workspace; the admin's own workspace is auto-detected and its key reused) → inventory (count docs/templates/contacts) → extract (documents as PDF+JSON by status with folders replicated, templates as JSON, contacts as JSON).
Note: all by itself does not export template PDF/DOCX — that is the browser layer (step 3).
3. Export template PDF + DOCX (browser layer)
Two options:
- As part of everything:
pandadoc-export all --with-templates(opens a browser for login first), or - On its own:
pandadoc-export login # opens a browser — user logs in to PandaDoc once
pandadoc-export templates # headless from here on
When a browser window opens, tell the user:
"A browser window has opened — please log in to your PandaDoc account. The session is saved and reused, so you only do this once."
Wait for the user to confirm they logged in. templates auto-recovers across passes if the browser crashes; if the session later expires it stops and prints LOGIN NEEDED — run login again, then re-run templates.
4. Run individual stages (optional)
| Goal | Command |
|---|---|
| List workspaces | pandadoc-export discover |
| Generate per-workspace keys | pandadoc-export keys |
| Count items per workspace | pandadoc-export inventory |
| Download documents + templates(JSON) + contacts | pandadoc-export extract |
| Skip certain document statuses | pandadoc-export extract --exclude-status voided,draft |
| Log in for the browser layer | pandadoc-export login |
| Export template PDF + DOCX | pandadoc-export templates |
5. Resume an interrupted run
Every command is idempotent: re-running skips files already on disk and never regenerates an existing workspace key. Just re-run the same command. Recoverable failures are logged to state/errors.jsonl.
6. Verify output
ls output/
Each workspace is a folder named {workspace_name}__{workspace_id}/ containing contacts/, templates/, documents/<status>/..., plus _workspace.json and _manifest.json (expected vs. obtained counts). Template .json, .pdf, and .docx share the same filename stem so they sort together.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.