agentsclimarketplace

Pandadoc export

Skill josevitorls/pandadoc/skill/pandadoc-export

Get your data out of PandaDoc (documents, templates, contacts) as PDF/DOCX/JSON — a Claude skill + Python CLI

Install
npx -y skills add josevitorls/pandadoc --skill pandadoc-export

Assembled 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.

What its author says it does

Copied from the file, not written here

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).

SKILL.md

3.8 KB, 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)

GoalCommand
List workspacespandadoc-export discover
Generate per-workspace keyspandadoc-export keys
Count items per workspacepandadoc-export inventory
Download documents + templates(JSON) + contactspandadoc-export extract
Skip certain document statusespandadoc-export extract --exclude-status voided,draft
Log in for the browser layerpandadoc-export login
Export template PDF + DOCXpandadoc-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.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.