magazine-web-ppt skill
For marketing and gtm work: bind launches, campaigns, events, and brand plans to growth and pipeline outcomes. Built around the core query "annual-marketing-plan", with GTM strategy lead judgment, buyer-ready proof, and this outcome: approve launch plan, campaign budget, or GTM motion.
Is the magazine-web-ppt skill safe?
Clean: nothing in its files matched our rules. We read 12 files in the folder on 2026-09-28.
No findings.
Install the magazine-web-ppt skill
A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.
git clone --depth 1 https://github.com/nexu-io/open-design.git /tmp/open-design mkdir -p ~/.claude/skills cp -r /tmp/open-design/design-templates/guizang-ppt ~/.claude/skills/magazine-web-ppt
In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub
The instructions your agent would load
SKILL.md as published, without the frontmatter. Read it on GitHub
Magazine Web Ppt
What this skill does
Generates a single-file HTML horizontal-swipe deck with a visual tone of:
- A electronic magazine + electronic ink hybrid style
- A WebGL fluid / contour / dispersion background (visible on hero pages)
- Serif headlines (Noto Serif SC + Playfair Display) + sans-serif body (Noto Sans SC + Inter) + monospace metadata (IBM Plex Mono)
- Lucide line icons (no emoji)
- Horizontal left/right paging (keyboard ← →, scroll wheel, touch swipe, bottom dots, ESC index)
- Smooth theme interpolation: when you flip to a hero page, the colors and shader transition softly
This skill's aesthetic is not "corporate PPT," nor "consumer-internet UI": it looks like Monocle magazine after code was stitched onto it.
When to use
Suitable scenarios:
- Offline talks / internal industry talks / private salons
- AI new-product launches / demo day
- Talks with a strong personal style
- A web version of slides that you "make once, with no paging tool needed"
Unsuitable scenarios:
- Long stretches of tabular data, stacked charts (use a regular PPT)
- Training courseware (information density too low)
- Multi-person collaborative editing (this is static HTML)
Workflow
Step 0 · Infer a direction; ask only when comparison is requested
Infer one of the 5 magazine directions from the brief, audience, content, and known context. Each direction packages its theme color, recommended layouts, chrome style, and slide count. Use the closest fit and continue without asking.
Only when the user explicitly asks to see or compare direction options, open references/styles.md and present the 1-line summaries in one direction-cards question form:
1. Monocle Editorial · International magazine style ✦ default
2. WIRED Tech · Data + engineering
3. Kinfolk Slow · Slow living / humanist
4. Domus Architectural · Architecture / sense of space
5. Lab / Reference · Academic + craft manualIf the user says "I don't know, you recommend" or provides no direction cue: default to Monocle Editorial without asking, because it has the lowest failure probability. If the user mentions "AI / benchmark / technical launch": choose WIRED; "reading / private / social circle": choose Kinfolk; "design / architecture / portfolio": choose Domus; "research / academic / methodology": choose Lab.
After picking a direction, create or update 项目记录.md (Project Record) in the project folder, with the first line clearly stating direction + theme color + audience + duration (see the template at the end of styles.md). Do not change direction at any point: switching midway = everything before is wasted.
Step 1 · Resolve intent
If the user has already given a complete outline + images, you can skip straight to Step 2.
Infer the checklist below from the brief, project metadata, supplied content, and conversation. If a missing answer would materially change the deck and no safe default exists, ask only those unresolved fields in one consolidated question form. Do not ask the checklist one by one.
6-question clarifying checklist
Direction and theme color are inferred in Step 0 unless the user explicitly
asks to compare options.
Outline assistance (if the user has no outline)
Use the "narrative arc" template to build the skeleton, then fill in content:
Hook → 1 page : throw out a contrast / question / hard number that makes people stop
Context → 1-2 pages : explain the background / who you are / why this topic
Core → 3-5 pages : the core content, interleaving Layouts 4/5/6/9/10
Shift → 1 page : break the expectation / propose a new view
Takeaway → 1-2 pages : a punchline / a suspenseful question / a call to actionNarrative arc + page-count plan + theme rhythm table (see layouts.md); align all three tables before moving to Step 2.
It's best to save the outline as 项目记录.md (Project Record) or 大纲-v1.md (Outline v1) for later iteration.
Image convention (tell the user)
Make these clear to the user before starting:
- Folder location: under 项目/XXX/ppt/images/ (sibling to index.html)
- Naming convention: {page number}-{semantic}.{ext}, e.g. 01-cover.jpg / 03-figma.jpg / 05-dashboard.png
- Pad the page number with zeros for easy sorting
- Use English for the semantic part, short, specific, matching the content
- Spec recommendations:
- Each image ≥ 1600px wide (avoid blur on large screens)
- JPG for photos/screenshots, PNG for transparent UI/charts
- Keep total size under 10MB (affects paging smoothness)
- How to replace: same-name overwrite is the most stable (no need to change the path in the HTML); if the filename changes, remember to globally search images/oldname and change it to the new name
- What if there are no images: align with the user; you can generate the structure with placeholder color blocks first and fill in the images later, but tell them that image-text mix pages like layouts 4/5/10 can't have their visuals verified without images
Step 2 · Copy the template
Copy assets/template.html to the target location (usually 项目/XXX/ppt/index.html), and create an images/ folder as a sibling, ready to receive images.
mkdir -p "项目/XXX/ppt/images"
cp "<SKILL_ROOT>/assets/template.html" "项目/XXX/ppt/index.html"template.html is a complete, runnable file: CSS, WebGL shader, paging JS, font/icon CDNs are all preset; only inside are there 3 example slides (cover, act divider, blank filler page).
2.1 · Placeholders you must change (easy to miss)
Right after copying, change the placeholders below, or the browser tab will show awkward text like "[必填] replace with the PPT title":
The first thing to do every time you finish copying template.html: grep for "[必填]" to confirm everything is replaced.
2.2 · Choose the theme color (5 presets · no customization allowed)
This skill only allows picking one of 5 carefully tuned presets; it does not accept user-defined hex values: a wrong color pairing makes the visuals ugly in an instant, and protecting the aesthetic matters more than offering freedom.
How to do it:
- Recommend one based on the content theme, or just ask the user which one to pick
- Open references/themes.md and find the :root block for the corresponding theme
- Replace as a whole the lines marked with the "theme color" comment in the opening :root{ block of assets/template.html (the copied version): --ink / --ink-rgb / --paper / --paper-rgb / --paper-tint / --ink-tint
- All other CSS flows through var(--...), no other changes needed
Hard rules:
- A deck uses only one theme, don't change colors midway
- Don't accept an arbitrary hex value from the user: gently decline and show the 5 presets to pick from
- Don't mix and match (e.g. take ink from Ink Classic and paper from Dune): it clashes completely
Step 3 · Fill in content
3.0 · Pre-check: class names must be defined in template.html (most important)
This is the source of all generation problems. The layouts.md skeletons use many class names (h-hero / h-xl / stat-card / pipeline / grid-2-7-5, etc.); if assets/template.html's has no corresponding definition, the browser falls back to default styles: the big title turns sans-serif, the data cards squeeze into a clump, the pipeline mushes into one line, the images pile up at the bottom of the page.
Before writing any slide code:
- First Read assets/template.html (at least through the end of the block)
- Against layouts.md's Pre-flight list, confirm that every class you're going to use exists in the
- If a class is missing: add it to template.html's , don't rewrite it inline on every slide
- template.html is the single source of class names: don't invent new class names; if you need a custom one, use style="..." inline
Classes commonly missed (must be confirmed to exist in advance): h-hero / h-xl / h-sub / h-md / lead / kicker / meta-row / stat-card / stat-label / stat-nb / stat-unit / stat-note / pipeline-section / pipeline-label / pipeline / step / step-nb / step-title / step-desc / grid-2-7-5 / grid-2-6-6 / grid-2-8-4 / grid-3-3 / grid-6 / grid-3 / grid-4 / frame / frame-img / img-cap / callout / callout-src / chrome / foot
3.0.5 · Plan the theme rhythm (equally important as the class pre-check)
Before picking layouts, you must first list the theme class for each page (hero dark / hero light / light / dark) and write it to a document or draft to align. For detailed rules, see the "Theme rhythm planning" section at the top of references/layouts.md.
Mandatory rules:
- Every page section must carry one of light / dark / hero light / hero dark; don't write just hero
- 3+ consecutive pages on the same theme = visual fatigue, not allowed
- 8+ pages must have ≥1 hero dark + ≥1 hero light
- The whole deck cannot have only light body pages; it must have a dark body page to create breathing room
- Insert 1 hero page (cover/divider/question/big quote) every 3-4 pages
Self-check after generating: grep 'class="slide' index.html lists all themes; manually confirm the rhythm is reasonable before delivering.
3.1 · Pick a layout
Don't write slides from scratch. Open references/layouts.md; it has 10 ready-made layout skeletons, each a complete, paste-ready code block:
Pick the corresponding layout, paste it in, change the copy and image paths. Be sure to complete the 3.0 pre-check first.
3.2 · Image ratio rules
Always use a standard ratio, never the source image's odd ratio (like 2592/1798):
More skills from nexu-io/open-design
- Aarticle-magazineHuashu / huashu-md-html-inspired magazine article layout for turning Markdown or notes into a polished long-form HTML essay.
- Aaudio-jingleAudio generation skill — jingles, beds, voiceover, and sound effects. Routes music requests to Suno V5 / Udio / Lyria, speech to MiniMax TTS / FishAudio / ElevenLabs V3, and SFX to ElevenLabs SFX or AudioCraft. Output is one MP3/WAV file saved to the project folder.
- Aaudio-jingleAudio generation skill — jingles, beds, voiceover, and sound effects. Routes music requests to Suno V5 / Udio / Lyria, speech to MiniMax TTS / FishAudio / ElevenLabs V3, and SFX to ElevenLabs SFX or AudioCraft. Output is one MP3/WAV file saved to the project folder.
- Ablog-postA long-form article / blog post — masthead, hero image placeholder, article body with figures and pull quotes, author byline, related posts. Use when the brief asks for "blog", "article", "post", "essay", or "case study".
- Ablog-postA long-form article / blog post — masthead, hero image placeholder, article body with figures and pull quotes, author byline, related posts. Use when the brief asks for "blog", "article", "post", "essay", or "case study".
- Abuild-testRun the project's build / typecheck / lint / test commands and emit the build.passing + tests.passing signals devloop convergence reads.
- Acard-twitterTwitter quote or data card designed to pair with a post.
- Acard-xiaohongshuXiaohongshu-style knowledge cards, arranged as a swipeable multi-card carousel.
- Aclinical-case-reportStructured medical case presentation for clinical rounds, conferences, and documentation. Generates SOAP-format or narrative case reports with physiologically accurate vitals, labs, and evidence-based plans. Use when the brief mentions "case report", "case presentation", "SOAP note", "clinical case", "ward rounds", "case summary", or "patient presentation".
- Aclinical-case-reportStructured medical case presentation for clinical rounds, conferences, and documentation. Generates SOAP-format or narrative case reports with physiologically accurate vitals, labs, and evidence-based plans. Use when the brief mentions "case report", "case presentation", "SOAP note", "clinical case", "ward rounds", "case summary", or "patient presentation".
- Acode-importRead an existing repository's structure into the project cwd as a normalised snapshot the agent can analyse without re-walking the tree on every turn.
- Acodex-interactive-capability-mapTurn a long-form article, thread, memo, or product narrative into a compact clickable capability map with a workflow loop, use-case matrix, and responsive detail panel.