This skill should be used when the user wants to import an existing .pptx file into deckwright, bring in a PowerPoint that was created outside this tool, reverse-engineer a presentation for editing, or invoke /deckwright:import. Converts a .pptx into a PptxGenJS generation script so it can be edited and regenerated through the deckwright pipeline.
Scanned 5/30/2026
Install via CLI
openskills install michaelengland/deckwright---
name: import
description: "This skill should be used when the user wants to import an existing .pptx file into deckwright, bring in a PowerPoint that was created outside this tool, reverse-engineer a presentation for editing, or invoke /deckwright:import. Converts a .pptx into a PptxGenJS generation script so it can be edited and regenerated through the deckwright pipeline."
---
# Import
Import an existing PowerPoint presentation by reverse-engineering it into an editable PptxGenJS generation script. This is the entry point for editing decks that weren't created through deckwright.
## Prerequisites
- User has a `.pptx` file they want to edit or improve
## Process
### 1. Identify the Source File
Ask the user to provide or confirm the path to the `.pptx` they want to edit. If they've already mentioned it, confirm:
> "I'll import `[filename.pptx]` for editing. Is that the right file?"
Do not proceed without a valid file path.
### 2. Read the Import Reference
Read `${CLAUDE_PLUGIN_ROOT}/references/pptx-import.md` for the full import workflow, capabilities, and known limitations.
### 3. Run the Reverse-Engineering Script
Follow the "Running the Script" section in `${CLAUDE_PLUGIN_ROOT}/references/pptx-import.md` — it covers installation, invocation, and the expected output folder structure. Check the exit code. If non-zero, read stderr and diagnose the issue using the Troubleshooting section in that reference.
### 4. Generate Thumbnails from the Original
Before running the generated script, convert the **original** `.pptx` to slide images as a visual baseline for comparison. Follow the PDF Export and Visual Validation workflow in `${CLAUDE_PLUGIN_ROOT}/references/pptx-generation.md`, saving output to `decks/<name>/original/slides/`.
### 5. Validate and Fix (Loop)
Follow the same regenerate-compare-fix loop used in `/deckwright:present`: regenerate, compare slide-by-slide against the originals, fix differences, repeat.
1. Install PptxGenJS if needed: `npm install pptxgenjs`
2. Run the generated script from the deck folder: `cd decks/<name> && node <name>.js`
3. Convert the regenerated `.pptx` to slide images and a thumbnail grid (same validation workflow, output to the deck folder's `slides/` directory as usual)
4. Compare slide-by-slide against the original thumbnails. For each slide, check:
- Is the text content and positioning correct?
- Are colors and fonts right?
- Are images present and correctly placed?
- Are shapes (backgrounds, dividers, accent bars) reproduced?
- Is the overall layout and whitespace faithful?
5. **If fixable differences exist** — edit the generation script to correct them and regenerate. Common fixes:
- Adjust `x`/`y`/`w`/`h` values for positioning
- Fix font sizes or colors
- Add missing shapes or backgrounds
- Correct text content or formatting
6. **Repeat** until the regenerated slides match the original as closely as possible.
### 6. Document Remaining Differences
Once you've fixed everything you can, catalogue what remains. Read the `// WARNING:` comments in the generation script and compare them with any visual differences you can still see.
Present a clear summary to the user:
> "Import complete. Here's the final comparison:
> - **[N] slides match the original** — no visible differences
> - **Remaining differences:**
> - Slide 3: Gradient background converted to solid `#1A1A2E` (PptxGenJS doesn't support gradients)
> - Slides 1, 5, 12: Font "Calibri" substituted with "Arial" (web-safe only)
> - Slide 8: SmartArt diagram simplified to basic shapes
> - [any other differences]
>
> These are inherent limitations of the import — they cannot be fixed automatically. You can adjust them manually in the generation script if needed."
### 7. Handoff
The generation script is now the source of truth for the deck. Present the user's options:
> "Your presentation is imported. You can now:
> - **Edit directly** — Tell me what to change and I'll modify the generation script
> - Use **/deckwright:narrative** to rethink the story
> - Use **/deckwright:craft** to restructure the content
> - Use **/deckwright:design** to redesign the visual direction
> - Use **/deckwright:present** to regenerate after any changes"
## Principles
- **Mechanical, not interpretive** — The import produces code, not creative documents. It is a translation, not an analysis.
- **Validate before proceeding** — Always regenerate and compare before declaring the import complete.
- **Surface limitations honestly** — Do not hide what was lost in translation. Report font substitutions, gradient conversions, and skipped elements explicitly in the final summary.
- **The generation script is the source of truth** — After import, all edits flow through the `.js` file.
No comments yet. Be the first to comment!