aa-conversion-funnel-a…
Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have…
Perform a full InDesign data merge from a CSV/TSV and an .indd template (or a PDF that gets converted to .indd automatically). Use this skill whenever the user wants to merge a data file with a layout template — including visiting cards, certificates, badges, catalogs, mailers,
$ npx -y skills add adobe/skills --skill adobe-create-pdfs-from-data --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/adobe-create-pdfs-from-dataContext preview
The summary Claude sees to decide when to auto-load this skill.
Perform a full InDesign data merge from a CSV/TSV and an .indd template (or a PDF that gets converted to .indd automatically). Use this skill whenever the user wants to merge a data file with a layout template — including visiting cards, certificates, badges, catalogs, mailers,
name: adobe-create-pdfs-from-data description: > Perform a full InDesign data merge from a CSV/TSV and an .indd template (or a PDF that gets converted to .indd automatically). Use this skill whenever the user wants to merge a data file with a layout template — including visiting cards, certificates, badges, catalogs, mailers, labels, invoices, or any per-row personalisation. Triggers on: "data merge", "InDesign merge", "merge my CSV with InDesign", "batch export PDF from template", "variable data InDesign", "personalise each row", or any request combining an .indd / PDF template with a data file. Use this skill even when only two of the three inputs (template, data, images) are mentioned — and even when the user never uses the phrase "data merge". license: Apache-2.0 allowed-tools: adobe_mandatory_init asset_inline_preview asset_preview_file asset_initialize_file_upload asset_finalize_file_upload convert_pdf_to_indd export_idml generate_indd_mapping_prompt prepare_indd_merge_template document_merge_data_layout metadata: version: 1.0.1 visibility: public surface: [claude]
Orchestrates the complete InDesign data merge pipeline. The naive path — calling `document_merge_data_layout` directly — often fails because the template must have its data-merge fields **linked to the correct data columns** before merging. This skill ensures that linkage is in place first, including automatic placeholder creation when the template has none, and PDF-to-INDD conversion when the user only has a PDF layout.
**Pipeline at a glance:**
| Phase | What happens | Gate | |-------|-------------|------| | **0** | Adobe init | — | | **1a** | Convert PDF template → `.indd` (skip if already `.indd`) | ⛔ GATE 1 | | **1b** | Confirm `.indd` URL and data file are available | — | | **2** | Export IDML; detect existing merge placeholders | — | | **3** | Create placeholders via LLM mapping *(only if Phase 2 found none)* | ⛔ GATE 2 | | **4** | Run `document_merge_data_layout` | — |
---
| Step | Tool | Notes | |------|------|-------| | Initialize Adobe tools | `adobe_mandatory_init` | Always call first | | Inspect PDF pages | `asset_inline_preview` | Returns rendered preview per page | | Preview PDF pages (fallback) | `asset_preview_file` | Use if `asset_inline_preview` unavailable | | Upload condensed template PDF | `asset_initialize_file_upload` + `asset_finalize_file_upload` | Required before `convert_pdf_to_indd` | | Convert PDF → INDD | `convert_pdf_to_indd` | Use extractedDocumentPresignedUrls as `inddUrl` | | Export IDML | `export_idml` | Outputs presigned IDML URL for inspection | | Generate mapping prompt | `generate_indd_mapping_prompt` | Read-only; returns prompt — you run it through an LLM | | Create placeholders in INDD | `prepare_indd_merge_template` | Only after user approves mapping | | Run data merge | `document_merge_data_layout` | Template + data → merged PDF |
---
Two rules are non-negotiable and override all efficiency instincts.
Never call `convert_pdf_to_indd` on a user-supplied PDF without first inspecting its page layout structure. A multi-page PDF (e.g. a prior merged output) produces a multi-page INDD which breaks the merge. Always distil it to a single-layout condensed PDF first.
Never call `prepare_indd_merge_template` in the same turn you generate or display the mapping JSON. Show the mapping summary + raw JSON, ask for approval, and **end the turn**. Only call `prepare_indd_merge_template` after the user explicitly approves in a later turn.
---
{ "skill_name": "adobe-create-pdfs-from-data", "skill_version": "1.0.1" }Call `adobe_mandatory_init` once, before any other Adobe tool.
---
**When to run:** The user's template is a PDF (or any non-INDD layout). If you already have a usable `.indd` URL, skip directly to Step 1b.
Record the user-supplied PDF URL as `originalPdfUrl`.
Call `asset_inline_preview` on the PDF (or `asset_preview_file` as fallback). Record `totalPages`.
If `totalPages == 1`: set `templatePdfUrl = originalPdfUrl` and skip to Sub-step 5.
Look at each preview image. Ask: *"If I removed all text and image content and compared only the skeleton — frame positions, structural regions — would this page match another page?"*
Group pages by layout skeleton into `layoutGroups`:
layoutGroups = {
"layout-A": [1, 2, 3, ...], // pages sharing layout A
"layout-B": [N+1, ...], // pages with a distinct layout B
}Pick `templatePages` as a **single** representative page:
Tell the user: > "Your PDF has {totalPages} pages. I found {N} unique layout(s). I'll use page {templatePages[0]} as the template. (If you need multiple layouts, we can run separate merges per layout.)"
Download the PDF from `{originalPdfUrl}` and extract **only** page(s) `{templatePages}` (1-indexed) to `template-condensed.pdf` using PyMuPDF (fitz). Report the absolute file path as `intermediatePdfLocalPath`.
Record the path as `intermediatePdfLocalPath`.
asset_initialize_file_upload({ path: "template-condensed.pdf", media_type: "application/pdf" })
// PUT the local file bytes to the returned upload URL, then:
asset_finalize_file_upload({ filename: "template-condensed.pdf", transfer_document:Repo: adobe/skills
Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have…
Generates a concise, executive-ready performance summary covering key metrics, trends, and…
Produces a compact KPI digest showing how key metrics changed over a period and what's…
Compares the performance of two or more audience segments across key metrics side by side.…
Identifies which items (pages, campaigns, products, channels, regions) had the biggest…
Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user…