Image To Editable Ppt
ningzimu/image-to-editable-ppt-skill
Rebuild slide images, scanned or image-based PPT/PPTX files, and PDF decks into object-level editable PowerPoint (.pptx), preserving speaker notes when supplied.
A skill your agent uses when the user wants a single-file HTML presentation that stays editable in the browser after generation, or needs object-level layout editing, slide reordering, local…
$ npx skills add archlizheng/frontend-slides-editable --skill frontend-slides-editable -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install archlizheng/frontend-slides-editable frontend-slides-editable --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "frontend-slides-editable" agent skill from https://github.com/archlizheng/frontend-slides-editable/tree/main into .claude/skills/frontend-slides-editable/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-slides-editable", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add archlizheng/frontend-slides-editable --skill frontend-slides-editable -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install archlizheng/frontend-slides-editable frontend-slides-editable --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "frontend-slides-editable" agent skill from https://github.com/archlizheng/frontend-slides-editable/tree/main into .agents/skills/frontend-slides-editable/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-slides-editable", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add archlizheng/frontend-slides-editable --skill frontend-slides-editable -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install archlizheng/frontend-slides-editable frontend-slides-editable --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "frontend-slides-editable" agent skill from https://github.com/archlizheng/frontend-slides-editable/tree/main into .cursor/skills/frontend-slides-editable/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-slides-editable", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add archlizheng/frontend-slides-editable --skill frontend-slides-editable -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install archlizheng/frontend-slides-editable frontend-slides-editable --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "frontend-slides-editable" agent skill from https://github.com/archlizheng/frontend-slides-editable/tree/main into .gemini/skills/frontend-slides-editable/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-slides-editable", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install archlizheng/frontend-slides-editable frontend-slides-editableInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add archlizheng/frontend-slides-editable --skill frontend-slides-editable -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "frontend-slides-editable" agent skill from https://github.com/archlizheng/frontend-slides-editable/tree/main into .github/skills/frontend-slides-editable/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-slides-editable", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add archlizheng/frontend-slides-editable --skill frontend-slides-editable -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install archlizheng/frontend-slides-editable frontend-slides-editable --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "frontend-slides-editable" agent skill from https://github.com/archlizheng/frontend-slides-editable/tree/main into .opencode/skills/frontend-slides-editable/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "frontend-slides-editable", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
frontend-slides-editableA skill your agent uses when the user wants a single-file HTML presentation that stays editable in the browser after generation, or needs object-level layout editing, slide reordering, local…
Frontend Slides Editable is an agent skill from archlizheng/frontend-slides-editable. Use when the user wants a single-file HTML presentation that stays editable in the browser after generation, or needs object-level layout editing, slide reordering, local save/export, or PPT/PDF-to-web conversion with continued editing.
Its SKILL.md is about 9.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 316 other files, including scripts (for example `README.md`, `STYLE_PRESETS.md` and `animation-patterns.md`).
It sits in Documents & Office, covering Slides and decks. The repository describes itself as: Editable HTML presentation skill for Codex/Claude Code with drag-resize editing, slide reordering, local save/export, and PPTX-to-web conversion. Shout out to @zarazhangrui. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e5663e6. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/, which the agent can run.
Shell commands in SKILL.md call:
python3pipFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Frontend Slides Editable loads about 9.2k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 4,708 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from archlizheng/frontend-slides-editable at commit e5663e6, republished under its MIT licence (© archlizheng). 4,708 words, ~9,194 tokens.
.claude/skills/frontend-slides-editable/SKILL.md (or your agent's skills folder). This skill also uses 311 other files; get the full folder from GitHub.<objective>
Frontend Slides (Editable)
Create zero-dependency, animation-rich HTML presentations that run entirely in the browser with a built-in editor: move objects, multi-select with Ctrl+click, alignment snapping, simple text formatting with font family + size controls, undo/redo, a Pages sidebar (slide thumbnails, drag to reorder, delete), presentation tools (Laser pointer and Fullscreen), Ctrl+S persistence, and export HTML.
This skill is a copy of the frontend-slides skill extended with the editable deck runtime. For read-only decks without editor weight, use the original frontend-slides skill instead (same skills directory layout).
</objective>
<preset_fidelity>
Parity with parent frontend-slides (style flexibility)
Adding edit mode must not replace preset authoring. The parent skill treats each choice in STYLE_PRESETS.md as a spec: per preset you implement its Layout prose, Signature Elements, typography, and colors — title slides and content slides differ across presets (e.g. Bold Signal’s card + big numerals vs. Notebook Tabs’ paper + edge tabs vs. Swiss Modern’s grid + red bar).
Normative behavior in Phase 3:
:root colors and fonts.examples/generated/presets/*.html are sample decks, not a layout shortcut. The 12 legacy samples are runtime smoke + visual previews; the 34 ported samples are real-template ports from beautiful-html-templates using the shared Swiss/reference runtime plus locked slot editing. For real deliveries, match the chosen preset/template grammar instead of reusing a generic README deck..slide-edit-layer (e.g. background pseudo-elements, fixed nav chrome) per preset; movable copy and blocks stay as [data-slide-object] inside the layer.If runtime constraints ever conflict with a signature element, adapt the element (e.g. implement the same visual with CSS, or split into multiple objects) — do not drop preset identity for the sake of a single template. </preset_fidelity>
<template_ports> Real-template ports (slot-editable)
For the 34 ported presets from beautiful-html-templates, prefer the upstream template's mood / tone / density and visual grammar over color-token matching alone.
Interaction baseline: ported decks must use the same Swiss/reference editor chrome and object editor as examples/editable-deck-reference.html / swiss-modern.html. Native template slots are locked-layout content slots; user-added objects are normal [data-slide-object][data-oid] objects.
Important interaction contract: data-edit-slot is editable content, not a draggable component. In edit mode the user can click slot text/images to change their content with RTE/Undo/Redo/Save/Export, but the upstream template's layout grid, card geometry, decorative layers, and spacing stay locked. Only user-added objects in .slide-edit-layer become selectable, draggable, resizable components. Do not promise that every native template child will get object handles unless a separate componentization mode is explicitly requested and implemented.
Template edit modes:
data-template-edit-mode="slots" is the default. It is template-safe: authored content is editable through slots, while layout and decoration remain locked.data-template-edit-mode="components" is an optional generated mode for semantic blocks that can be represented as [data-slide-object]..slide-edit-layer. It must preserve the original element tag, classes, and computed typography, must not create duplicate content copies, and must be undoable back to the original layout position.When using or extending a ported preset:
beautiful-html-templates/templates/{source_slug}/template.html as the visual system: preserve fonts, CSS variables, slide-level classes, layout grid, decorative DOM, and component grammar.data-edit-slotdata-slot-type="text|image|metric|table-cell"data-slot-labeldata-slot-locked-layout="true".slide-edit-layer for user-added freeform objects. Added objects can use [data-slide-object][data-oid] and the normal Swiss drag/resize/multi-select runtime; native template slots use the Swiss RTE/Undo/Redo/Save/Export path but do not get move/resize handles.<discovery_gate> Discovery gate (do not skip)
Models often jump straight to generating HTML. For Mode A (new deck) and Mode B (PPT or PDF) after extraction, you must finish Phase 1 before Phase 2, and Phase 2 before Phase 3 — unless a narrow exception below applies.
Hard rule: Unless the user provides in one turn (or one clearly scoped batch) every item in the Phase 1 checklist, you must run Phase 1 first as one grouped message (or a structured question UI). If the batch is incomplete, send only the missing checklist items in the next message — do not guess slide count, outline depth, preset, or language. Invoking /frontend-slides-editable or attaching this skill does not waive discovery. A one-liner (e.g. “用 skill 介绍它自己”, “做一份某某主题的演示”) is topic / intent only, not a brief.
Phase 1 checklist (complete brief — all required without model inference):
| # | Dimension | What “done” means |
|---|---|---|
| 1 | Purpose | Pitch / teaching / conference / internal / meta-role (e.g. skill onboarding), etc. |
| 2 | Length | Slide-count band (e.g. short 5–10 / medium 10–20 / long 20+) or exact count — never inferred from topic alone |
| 3 | Content | Pasted outline, bullets, draft copy, or named source + extract scope (e.g. “README §X–Y only”); not “a theme” alone |
| 4 | Style direction | Phase 1 style preference cluster or a named preset from STYLE_PRESETS.md or explicit delegation (“you choose”) — if only “you choose”, Phase 2 still runs to narrow via recommendations/previews unless the user also explicitly skips previews |
| 5 | Editing | Confirm full editable runtime (this skill’s default) or explicit switch to parent read-only frontend-slides |
| 6 | Images | No / yes / unsure; if yes, files may arrive later, but intent is explicit |
| 7 | Mobile | Required answer: Desktop-first only (default) or Adapt for phone portrait + landscape; do not infer this silently |
| — | Language / locale | When prose is audience-facing and not already stated: monolingual / bilingual / per-locale files — ask in Phase 1 |
Images vs outline: Co-design outline ↔ images (Step 1.2) only after the user has real assets or links to evaluate. Do not skip Phase 1 dimensions just because images are pending; capture “yes, will provide” in Phase 1, then run image evaluation when files exist.
Mode B (PPT / PDF): After extract-pptx.py (.pptx) or extract-pdf.py (.pdf), present titles/summaries/asset counts and still run Phase 1 for anything extraction does not decide: length goals if restructuring, style direction, editing scope, locale, and image handling notes on extracted assets. Do not jump from “here’s the extract” straight to only style picking — close Phase 1 gaps first, then Phase 2, then codegen.
When Phase 1 and/or Phase 2 may be shortened (narrow exceptions only):
Default order: Phase 1 (grouped) → Phase 2 (show, don’t tell) → Phase 3. Never start Phase 3 to “save turns.”
Partial answers: Next message = only missing Phase 1 items, then resume Phase 2.
Never infer silence as approval. Mode C (enhance existing HTML): precise change list may skip full Phase 1–2; vague “make it better” → 1–2 clarifying questions first.
Anti-pattern: Generating HTML because the skill was attached or because you “already know” a good length or preset — failure mode.
Skipping discovery to “save turns” is a failure mode for this skill. </discovery_gate>
<core_principles> Core Principles
<design_aesthetics> Design Aesthetics
You tend to converge toward generic, "on distribution" outputs. In frontend design, this creates what users call the "AI slop" aesthetic. Avoid this: make creative, distinctive frontends that surprise and delight.
Focus on:
animation-delay) beats scattered micro-interactions.Avoid generic AI-generated aesthetics:
Interpret creatively and make unexpected choices that feel genuinely designed for the context. Vary between light and dark themes, different fonts, different aesthetics. You still tend to converge on common choices (Space Grotesk, for example) across generations. Avoid this: it is critical that you think outside the box! </design_aesthetics>
<viewport_fitting_rules> Viewport Fitting Rules
These invariants apply to EVERY slide in EVERY presentation:
.slide must have height: 100vh; height: 100dvh; overflow: hidden;clamp(min, preferred, max) — never fixed px/remmax-height constraintsmax-height: min(50vh, 400px)prefers-reduced-motion support-clamp(), -min(), -max() are silently ignored) — use calc(-1 * clamp(...)) insteadWhen generating, read viewport-base.css and include its full contents in every presentation.
Content Density Limits Per Slide
| Slide Type | Maximum Content |
|---|---|
| Title slide | 1 heading + 1 subtitle + optional tagline |
| Content slide | 1 heading + 4-6 bullet points OR 1 heading + 2 paragraphs |
| Feature grid | 1 heading + 6 cards maximum (2x3 or 3x2) |
| Code slide | 1 heading + 8-10 lines of code |
| Quote slide | 1 quote (max 3 lines) + attribution |
| Image slide | 1 heading + 1 image (max 60vh height) |
Content exceeds limits? Split into multiple slides. Never cram, never scroll. </viewport_fitting_rules>
<quick_start> <mode_detection> Phase 0: Detect Mode
Determine what the user wants:
.pptx or .pdf file. Go to Phase 4.<mode_c_modification_rules> Mode C: Modification Rules
When enhancing existing presentations, viewport fitting is the biggest risk:
max-height: min(50vh, 400px). If slide already has max content, split into two slides.slide has overflow: hidden, new elements use clamp(), images have viewport-relative max-height, content fits at 1280x720When adding images to existing slides: Move image to new slide or reduce other content first. Never add images without checking if existing content already fills the viewport. </mode_c_modification_rules>
<phase_1_content_discovery> Phase 1: Content Discovery (New deck & PPT/PDF path)
Centralize Phase 1: For Mode A and for Mode B after extraction, deliver the checklist in one grouped interaction (see Discovery gate above) — not dribbled across many turns. If the user’s first message is incomplete, only ask missing items next.
Do not jump to style previews or HTML until Phase 1 is satisfied (exceptions: Discovery gate).
Ask ALL discovery questions (1–6 below) in that grouped interaction when starting from scratch. Use a structured question tool when available; otherwise one concise message:
Question 1 — Purpose (header: "Purpose"): What is this presentation for? Options: Pitch deck / Teaching-Tutorial / Conference talk / Internal presentation
Question 2 — Length (header: "Length"): Approximately how many slides? Options: Short 5-10 / Medium 10-20 / Long 20+
Question 3 — Content (header: "Content"): Do you have content ready? Options: All content ready / Rough notes / Topic only
Question 4 — Style preference (header: "Style Pref"): What visual direction sounds closest as a starting point? Options:
Question 5 — Editing scope (header: "Editing"): Confirm the user wants the full editable runtime (default for this skill): object layout, Pages sidebar, undo/redo. If they explicitly want a minimal read-only file only, switch to the parent frontend-slides skill instead — do not strip the runtime from this skill arbitrarily.
Question 6 — Assets / images (header: "Images"): Will this deck use image files you will provide (folder, uploads, or links)? Options: No images (CSS/graphics only) / Yes — I will provide images / Unsure — recommend
Question 7 — Mobile adaptation (header: "Mobile"): Should this editable deck be adapted for phone use in both portrait and landscape? Options: Desktop-first only (recommended; keeps the deck optimized for presenting/editing on desktop) / Adapt for phone portrait + landscape (adds mobile-specific CSS hooks, sidebar behavior, and extra viewport verification). This is a required Phase 1 answer for new decks and for PPT/PDF conversions after extraction.
Language / locale (include in the same grouped message when relevant): If the deliverable must be monolingual, bilingual, or localized (e.g. CN/EN on the same slides vs two files), ask once here when the user has not already stated it.
If the user has draft content (bullets, doc, outline), ask them to paste or attach it in the same turn or immediately after Phase 1.
<image_evaluation> Step 1.2: Image Evaluation (if images provided)
If Question 6 was No images or the user has not supplied any image files yet → proceed to Phase 2 after Phase 1 is otherwise complete (you may still ask them to add images later before Phase 3 if they change their mind).
If user provides an image folder (or links) after Phase 1 marked images as yes:
Logo in previews: If a usable logo was identified, embed it (base64) into each style preview in Phase 2 — the user sees their brand styled three different ways. </image_evaluation> </phase_1_content_discovery>
<phase_2_style_discovery> Phase 2: Style Discovery (Show, don’t tell)
Start only after Phase 1 is complete (see Discovery gate).
Purpose: Narrow the aesthetic visually — most people can’t name what they want. Use HTML previews (and concrete anchors from STYLE_PRESETS.md + repo examples: examples/generated/presets/ smoke decks, examples/editable-deck-reference.html for runtime chrome) so the user picks direction, then preset or mix.
This is the "show, don't tell" phase.
<style_preference_first> Step 2.0: Style Preference First
Start from the style preference captured in Phase 1. Before asking the user how they want to choose, give a short recommendation list of 2-4 presets that best match their preference, audience, and content. Tie names to STYLE_PRESETS rows (and, when helpful, “see generated sample *.html for slug X”) so choices are grounded, not abstract.
Use this mapping as the starting point:
| Style preference | Suggested presets |
|---|---|
| Recommend for me | Infer from purpose + audience + content, then recommend 2-4 strongest fits |
| Clean / Professional | Bold Signal, Electric Studio, Swiss Modern |
| Bold / Experimental | Creative Voltage, Neon Cyber, Split Pastel |
| Editorial / Warm | Dark Botanical, Vintage Editorial, Paper & Ink |
| Technical / Minimal | Swiss Modern, Terminal Green, Notebook Tabs |
| I already know the preset | Skip recommendation explanation and go straight to preset picking |
Explain the recommendation briefly in concrete terms, for example: audience fit, energy level, brand tone, or content density.
If the user already chose "I already know the preset" in Phase 1, skip Step 2.1 and go straight to the preset picker. </style_preference_first>
<style_path> Step 2.1: Style Path
Ask how they want to choose (header: "Style"):
If direct preset name: Confirm against STYLE_PRESETS, then Phase 3. If "you choose" from Phase 1: Default path = recommendations + offer previews before generating. </style_path>
<mood_selection> Step 2.2: Mood Selection (Guided Discovery)
Ask (header: "Vibe", multiSelect: true, max 2): What feeling should the audience have? Options:
Use the user's style preference and recommended preset cluster to steer this question. If the preference already strongly determines the direction, keep the previews within that neighborhood instead of scattering across unrelated aesthetics. </mood_selection>
<style_previews> Step 2.3: Generate 3 Style Previews
Based on mood and the earlier style preference, generate 3 distinct single-slide HTML previews showing typography, colors, animation, and overall aesthetic. Read STYLE_PRESETS.md for available presets and their specifications.
| Mood | Suggested Presets |
|---|---|
| Impressed/Confident | Bold Signal, Electric Studio, Dark Botanical |
| Excited/Energized | Creative Voltage, Neon Cyber, Split Pastel |
| Calm/Focused | Notebook Tabs, Paper & Ink, Swiss Modern |
| Inspired/Moved | Dark Botanical, Vintage Editorial, Pastel Geometry |
Save previews under a project-local scratch folder (e.g. .claude-design-slide-previews/ or .design/slide-previews/) as style-a.html, style-b.html, style-c.html. Each should be self-contained, ~50-100 lines, showing one animated title slide.
Open each preview in the default browser when possible: macOS open path/to/file.html; Linux xdg-open path/to/file.html; Windows start path\to\file.html.
When possible, keep at least 2 of the 3 previews within the recommended preset family so the user sees relevant variations before they see outliers. </style_previews>
<user_picks> Step 2.4: User Picks
Ask (header: "Style"): Which style preview do you prefer? Options: Style A: [Name] / Style B: [Name] / Style C: [Name] / Mix elements
If "Mix elements", ask for specifics. </user_picks> </phase_2_style_discovery>
<phase_3_generate_presentation> Phase 3: Generate Presentation
Generate the full presentation using content from Phase 1 (text, or text + curated images) and style from Phase 2.
If images were provided, the slide outline already incorporates them from Step 1.2. If not, CSS-generated visuals (gradients, shapes, patterns) provide visual interest — this is a fully supported first-class path.
Before generating, read these supporting files:
frontend-slidesdata-slide-object, data-oid, edit layer), history types, snap rules, generator checklistbeautiful-html-templates/templates/{source_slug}/template.html and template.json when available; use STYLE_PRESETS.md as the index, but the upstream template as the detailed design grammar.Key requirements:
data: URLs by default; assets/ paths are allowed only as temporary extraction inputs before generation, never as delivered media src values.<style> blockdata-edit-slot content over making every native element draggable.section.slide must have a stable id; movable content lives in .slide-edit-layer as [data-slide-object][data-oid] per editor-runtime.mdquerySelectorAll('section.slide') when a filmstrip clones slides — use only slides under the deck wrapper (e.g. .slides-offset + :scope > section.slide). See html-template.md §Regression guard.data-mobile-adaptation="enabled" on <html> and include portrait + landscape media rules for the deck chrome, sidebar, and slide objects. If not selected, set data-mobile-adaptation="desktop-default" so validation can distinguish an explicit desktop-first choice from an omitted decision.SlideDeck, object editor (select / drag / snap / RTE toolbar), SlideSidebar, HistoryStack, save/exportArial/Inter/system default just to avoid a link./* === SECTION NAME === */ comment block<fonts_portability> Fonts & portability (resolve the self-contained promise deliberately)
The exported file must stay single-file and self-contained — no external font links (see Phase 5). That constrains font choices; do not ignore it:
<link rel="stylesheet" href="https://fonts..."> makes the export depend on the network — open offline and the type silently falls back. Choose one:@font-face src: url(data:font/woff2;base64,...) so it travels in the file (best fidelity, larger file), or<link>s, so an un-inlined webfont will fall back in the delivered file — pick (1) when fidelity matters."PingFang SC","Hiragino Sans GB","Microsoft YaHei","Source Han Sans SC","Noto Sans CJK SC",sans-serif.
This is the correct, portable choice for CJK — not a quality compromise. Latin glyphs in a CJK deck can still use a webfont via an earlier family in the stack."Clash Display","PingFang SC",....
</fonts_portability>
</phase_3_generate_presentation><phase_4_ppt_conversion> Phase 4: PPT / PDF conversion
When converting PowerPoint (.pptx) or PDF (.pdf) files:
python3 scripts/extract-pptx.py <input.pptx> <output_dir> (install python-pptx if needed: pip install python-pptx)python3 scripts/extract-pdf.py <input.pdf> <output_dir> (install PyMuPDF if needed: pip install pymupdf). Optional: --raster-if-empty renders a page to PNG when that page has no extractable text and no embedded images (e.g. scanned-like pages still need separate OCR; this flag only captures a bitmap of the page).extracted-slides.json + assets/ (one record per slide/page; PDF has no speaker notes — use notes: "").PDF caveats: Text reading order and “title vs body” are heuristic; layout is not object-level like PPTX. Image-only PDFs need --raster-if-empty or external OCR for usable text.
</phase_4_ppt_conversion>
</quick_start>
<success_criteria> Phase 5: Delivery
open [filename].html; Linux xdg-open [filename].html; Windows start [filename].htmlE enters edit mode. Hover the top-left to reveal Edit, Pages, and (while editing) Undo / Redo / Done; controls hide after the pointer leaves (~400ms). Done (same cluster) exits edit mode — the Edit button label stays Edit. Esc blurs text first, then exits edit mode when not typing in a text boxcontenteditable#btnSave, top-left next to Edit / Pages when editing — same hover reveal) or Ctrl+S / Cmd+S stores a browser draft in localStorage and writes a portable HTML file when the browser supports File System Access; otherwise it downloads an updated HTML fallback. Export HTML remains in the Pages sidebar and must embed the current deck state plus media into the exported file while stripping transient edit state. The exported file is portable, single-file, self-contained (no external font links), and trail-free — it carries the latest edits and keeps Laser/Fullscreen working, but never embeds active laser state.:root variables, --deck-chrome-* for edit UI (see STYLE_PRESETS.md §Deck chrome tokens), fonts (inline Latin webfonts as base64 @font-face or layered system stacks, and a native CJK stack — see Phase 3 §Fonts & portability; the export stays self-contained with no external font links), .reveal animations; keep data-oid unique when adding objects
</success_criteria><supporting_files> Supporting Files
| File | Purpose | When to Read |
|---|---|---|
| editor-runtime.md | DOM contract, undo types, snap rules, generator checklist | Phase 3 (before codegen) |
| examples/editable-deck-reference.html | Working reference: full runtime in one file | Phase 3 (copy/adapt JS/CSS) |
| STYLE_PRESETS.md | 46 curated visual presets with colors, fonts, and signature elements | Phase 2 (style selection) |
| viewport-base.css | Mandatory responsive CSS — copy into every presentation | Phase 3 (generation) |
| html-template.md | HTML structure, integration with editable runtime | Phase 3 (generation) |
| animation-patterns.md | CSS/JS animation snippets and effect-to-feeling guide | Phase 3 (generation) |
| scripts/extract-pptx.py | Python script for PPT content extraction | Phase 4 (PPTX) |
| scripts/extract-pdf.py | Python script for PDF page extraction (same JSON shape as PPTX) | Phase 4 (PDF) |
| README.md | Bilingual extended overview, comparison table, troubleshooting | Optional (users / maintainers) |
| </supporting_files> |
© archlizheng, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 311 other files (scripts) in the repository root of archlizheng/frontend-slides-editable.
Open the folder on GitHubat commit e5663e6
Frontend Slides Editable next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Frontend Slides Editable this skillarchlizheng/frontend-slides-editable | 527 | — | ~9.2k | Automated safety check: Pass | MIT | |
| Image To Editable Pptningzimu/image-to-editable-ppt-skill | 2.9k | — | ~4.3k | Automated safety check: Pass | MIT | |
| Slidesfcakyon/claude-codex-settings | 1.2k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Ppt Image FirstNyxTides/ppt-image-first | 1.2k | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Vibe to Agentic Engineering Frameworkshanraisshan/claude-code-best-practice | 67k | — | ~3.3k | Automated safety check: Pass | MIT | |
| Gpt Image2 PptJuneYaooo/gpt-image2-ppt-skills | 1.3k | — | ~8.9k | Automated safety check: Notes | Apache-2.0 |
ningzimu/image-to-editable-ppt-skill
Rebuild slide images, scanned or image-based PPT/PPTX files, and PDF decks into object-level editable PowerPoint (.pptx), preserving speaker notes when supplied.
fcakyon/claude-codex-settings
Create and edit presentation slide decks (.pptx) with PptxGenJS, bundled layout helpers, and render/validation utilities.
NyxTides/ppt-image-first
Build presentation plans for PPT / slides / decks through a conversation-first workflow, then propose multiple visual directions with preview images before writing deck specs.
shanraisshan/claude-code-best-practice
Explains the conceptual model behind a presentation on moving from unstructured vibe coding to fully configured agentic engineering, including its 4-level scoring system and slide conventions.
JuneYaooo/gpt-image2-ppt-skills
Generate visually striking PPT slides via OpenAI's gpt-image-2 -- use any style in styles/<collection/STYLEID.md or mimic a user-supplied .pptx template; outputs high-res slide PNGs and a 16:9 .pptx.
scunning1975/MixtapeTools
Create and compile beautiful Beamer presentations following the Rhetoric of Decks philosophy.
Categories
A skill your agent uses when the user wants a single-file HTML presentation that stays editable in the browser after generation, or needs object-level layout editing, slide reordering, local…. Frontend Slides Editable is an agent skill from archlizheng/frontend-slides-editable. Use when the user wants a single-file HTML presentation that stays editable in the browser after generation, or needs object-level layout editing, slide reordering, local save/export, or PPT/PDF-to-web conversion with continued editing.
Frontend Slides Editable fits situations like: the user wants a single-file HTML presentation that stays editable in the browser after generation; needs object-level layout editing; slide reordering; local save/export.
Run `npx skills add archlizheng/frontend-slides-editable --skill frontend-slides-editable -a claude-code`. Or copy the skill folder (the archlizheng/frontend-slides-editable repository) into .claude/skills/frontend-slides-editable in your project. Claude Code loads it when a task matches its description.
Run `npx skills add archlizheng/frontend-slides-editable --skill frontend-slides-editable -a codex`. Or copy the skill folder (the archlizheng/frontend-slides-editable repository) into .agents/skills/frontend-slides-editable in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add archlizheng/frontend-slides-editable --skill frontend-slides-editable -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/frontend-slides-editable, .gemini/skills/frontend-slides-editable, .github/skills/frontend-slides-editable and .opencode/skills/frontend-slides-editable in your project.
Going by SKILL.md and its folder, Frontend Slides Editable needs the command-line tools its instructions call (python3 and pip).
SKILL.md contains no URLs. Its commands use pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Frontend Slides Editable is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 9.2k tokens (SKILL.md is roughly 37k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Frontend Slides Editable: Image To Editable Ppt (ningzimu/image-to-editable-ppt-skill, 2.9k stars), Slides (fcakyon/claude-codex-settings, 1.2k stars), Ppt Image First (NyxTides/ppt-image-first, 1.2k stars) and Vibe to Agentic Engineering Framework (shanraisshan/claude-code-best-practice, 67k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
archlizheng (a GitHub user) maintains it in archlizheng/frontend-slides-editable, which has 527 GitHub stars. The repository was last updated on July 1, 2026.
Source: archlizheng/frontend-slides-editable on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.