Academic Presentations
Gabberflast/academic-pptx-skill
Plans and structures academic decks for conference talks, seminars, thesis defenses and grant briefings, with argument-first slides, and leaves file creation to the PPTX skill.
Produces a new course in the look of an imported deck by copying the layout that fits each page and rewriting that copy's content element by element.
$ npx skills add THU-MAIC/OpenMAIC --skill style-clone -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install THU-MAIC/OpenMAIC style-clone --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/agent-runtime/style-clone .claude/skills/style-clone && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "style-clone" agent skill from https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/style-clone into .claude/skills/style-clone/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "style-clone", 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.
$skill-installer install https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/style-cloneType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add THU-MAIC/OpenMAIC --skill style-clone -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install THU-MAIC/OpenMAIC style-clone --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/agent-runtime/style-clone .agents/skills/style-clone && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "style-clone" agent skill from https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/style-clone into .agents/skills/style-clone/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "style-clone", 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 THU-MAIC/OpenMAIC --skill style-clone -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install THU-MAIC/OpenMAIC style-clone --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/agent-runtime/style-clone .cursor/skills/style-clone && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "style-clone" agent skill from https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/style-clone into .cursor/skills/style-clone/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "style-clone", 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.
$ gemini skills install https://github.com/THU-MAIC/OpenMAIC.git --path skills/agent-runtime/style-clone--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add THU-MAIC/OpenMAIC --skill style-clone -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install THU-MAIC/OpenMAIC style-clone --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/agent-runtime/style-clone .gemini/skills/style-clone && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "style-clone" agent skill from https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/style-clone into .gemini/skills/style-clone/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "style-clone", 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 THU-MAIC/OpenMAIC style-cloneInstalls 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 THU-MAIC/OpenMAIC --skill style-clone -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/agent-runtime/style-clone .github/skills/style-clone && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "style-clone" agent skill from https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/style-clone into .github/skills/style-clone/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "style-clone", 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 THU-MAIC/OpenMAIC --skill style-clone -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install THU-MAIC/OpenMAIC style-clone --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/THU-MAIC/OpenMAIC.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/agent-runtime/style-clone .opencode/skills/style-clone && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "style-clone" agent skill from https://github.com/THU-MAIC/OpenMAIC/tree/main/skills/agent-runtime/style-clone into .opencode/skills/style-clone/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "style-clone", 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.
style-cloneProduces a new course in the look of an imported deck by copying the layout that fits each page and rewriting that copy's content element by element.
When a session has an imported deck, or a .pptx to import, and the ask is to teach new material in its design, this skill makes each new page look as though the deck's author drew it, covering palette, typography, background treatment and the way a page is divided. For every page the agent picks the source layout that fits, copies it with duplicate_scene and rewrites the copy's content element by element. The learner-facing name for this mode is 名师复刻, and the learner should never see talk of templates, clones or source pages.
The skill argues that describing a style to a generator does not transfer it: generate_scene redraws a page from its outline entry in the house look, and in one real run exact hex values and font names written into every page's material facts showed up on none of the pages. Copying the element tree does preserve the design. Earlier attempts failed because the only content editor replaced whole blocks and flattened formatting, so the skill relies on element-level tools, read_stage at source detail for exact JSON and patch_stage to write one path at a time. It is not for slide-for-slide imports (pptx-import) or for copying a teacher's speaking voice (teacher-style-clone).
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 32f5923. 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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
OpenMAIC Deck Style Clone loads about 4.9k tokens when it runs. Until then it costs about 189 tokens; SKILL.md has 3,033 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); files beside SKILL.md are not scanned.
The full file from THU-MAIC/OpenMAIC at commit 32f5923, republished under its MIT licence (© THU-MAIC). 3,033 words, ~4,883 tokens.
.claude/skills/style-clone/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.The user has a deck by someone whose slides are worth copying. Your job is to produce new pages that look like that deck made them — its palette, its typography, its background treatment, its way of dividing a page — while the teaching content on those pages is entirely new. New content in the old style is the whole point of this mode, not the exception.
The route is copy, then refine. For every page in the new course you pick the
source layout that fits it, duplicate_scene that layout, and rewrite the copy's
content element by element. The design is preserved because you copied it, not
because you described it.
Generation is not an alternative for a copied page. generate_scene re-rolls a page from its
outline entry and draws in the house look, and no free-text slot on it overrides
that: a real run that wrote the source deck's exact hex values and font names
into materialFacts on every page produced pages where those values appear
zero times. Describing a style to a generator does not transfer it. Copying
the element tree does.
The learner-facing name for this mode is 「名师复刻」. Never show the learner the machinery — no talk of templates, clones or source pages. They should just see a course that looks like it came from one hand.
Copy-then-refine failed the first time it was tried, and the reason was the editing tools, not the approach. The only content editor then was a whole-block text setter, and 35 of one run's 44 edits went through it: each one replaced a block wholesale and flattened everything inside it, so a title's size and colour left with its words, contrast pairs came apart, and tables that resisted editing were shipped still carrying the old subject's text.
Those lossy ops are gone from the agent surface. What replaced them is an element-level, full-fidelity seam of three parts:
read_stage with path:/scenes/<order|id> and detail:"source" returns the page's exact persisted JSON —
background, each text element's defaultColor and defaultFontName, the
inline color / font-size / font-family inside its content HTML, shape
fills, and exact geometry. It is your fidelity source and your address space:
the paths you read are the paths you write.patch_stage writes one scene-root JSON Pointer path with op:"set"
or op:"remove". /content/canvas/elements/0/content replaces one text
element's rich-text HTML and touches nothing else on the page; a <span> keeps
its colour and size while its words change. Address the leaf, and everything you
did not name keeps the value you copied.add_element (a complete, id-less element JSON, id assigned by the server)
and delete_element are the only ways the element set changes — a patch may
not add, remove, rename or retype an element, which is exactly the guard that
keeps a borrowed design intact.So one atomic patch is the entry point for every content rewrite, whatever the
element is — a paragraph at /content/canvas/elements/3/content, a shape's label at
/content/canvas/elements/3/text/content, a table cell at
/content/canvas/elements/5/data/0/0/text, a code line at
/content/canvas/elements/9/lines/1/content, a formula's latex, a chart's label. There
is no per-type editor to hunt for and no growing list of per-type operations: read
the source JSON, find the path that holds the words, write that path.
slide-dsl is the field manual — which field holds the words in each of the
ten element types, the pointer rules, what values are legal, which field the
renderer reads when two disagree, and what the renderer really does with the HTML
you write.
Two guarantees are what make this trustworthy on someone else's design: a rejected patch changes nothing (a bad path, an unknown field or unsafe HTML fails loud with the page exactly as it was), and nothing is normalised — no colour, font or theme value is rewritten toward a house palette. The deck's look survives because the tool has no opinion about it.
stage-design governs the build of the stage this produces, and
curriculum-planner governs a series of them; both still apply, and this skill
shapes only how the pages get their look. page-clone carries the per-page
mechanics of the loop in Step 4 — read it before the first page. slide-dsl is
the field-level truth about the JSON you are patching, slide-craft is the
design law any page still has to satisfy, and pro-editing is loaded mid-run
when a refined page comes out broken.
Getting the deck in and reading it are preparation, and preparation is not a result. A real run read the skills, imported a 36-page reference deck, and ended its turn on 「已确认当前课堂已保存 36 页原始课件……我不会覆盖这些页面」 — the layout library ready, the user's own course not one page written. The user asked for a lesson and got an inventory of someone else's.
A turn ends in exactly one of three states:
duplicate_scene and refined, persisted, not merely chosen;ask_user is waiting on a decision only the user can make;A statement about what you have imported, catalogued, confirmed or intend to do next is none of those, however true it is. Once the deck is in, run straight through — catalogue, plan, then page after page through Step 4's loop — and do not hand the turn back between them.
Call list_scenes first. If the source deck's pages are already persisted in this
stage, it is imported — skip to Step 2. Otherwise the user's .pptx goes
through import_pptx, which lands its pages as real scenes you can read and copy.
A returned import is not news worth a turn: continue into Step 2 in the same turn
that imported it.
The imported pages are material, not deliverables. They are the layout
library this whole skill runs on, and every page you ship is a copy of one of
them made with duplicate_scene. Never rewrite a source page in place: editing
the library destroys the template for every later page that needed it, and a run
that did exactly that left the original course mangled with nothing to fall back
to. Decide at the end, with the user, whether the source pages stay in the deck
or get removed with edit_deck delete — not before you have copied everything
you need out of them.
If the user actually wants the file itself served slide-for-slide with no new
content, that is pptx-import, not this skill.
Read the source deck for its layout roles, not its subject: the small set of page forms the author reuses. A deck rarely has more than six.
list_scenes for the inventory, then read a sample spread across the deck —
the cover, a section divider, a plain content page, a two-column or
image-plus-text page, a data or table page, the closing page. Sample by
variety, not by position; the first five pages of a deck are usually the same
two forms.
Read each sample with read_stage detail:"source". The default tree view
strips exactly the fields a layout is made of — background, colours, fonts,
inline marks — so a catalogue built from it is a catalogue of text.
For every role write down, in your own reasoning, its template scene id and its capacity:
Capacity is the number that decides everything later — the commonest way a copied page fails is content the layout was never sized for.
Note the shared visual language across roles too — the palette, the heading
treatment, how emphasis is marked — because a page you generate rather than copy
(a quiz, an interactive page: forms a .pptx has no layout for) still has to
sit next to the copied ones without a visible seam.
Plan the course the user actually asked for in conversation, with an explicit title, type, and brief for every page. The plan is about content; the deck is about form, and the two are decided separately — do not let the source deck's page order become the new course's structure unless the user asked for a like-for-like rebuild.
Call create_stage for that planned course, then settle the cast and call set_roster — the classroom is still a classroom.
This is the core loop. For each outline entry, in ascending page order:
.pptx library, call generate_scene directly for this page
with its explicit order, title, type, and brief. Do not insert an
empty page with edit_deck and hand-author its content. Check that the
generated page follows the source palette and typography noted in Step 2,
then continue with the next outline entry. Only the copied-page branch below
forbids generate_scene.duplicate_scene({ templateSceneId, targetOrder, title }) — an exact copy
of the template at the position you want. Pass a title that names the NEW
page; the copy inherits the template's outline brief, and a page still called
「第 3 章回顾」 misleads the learner and the narration step alike.read_stage the copy with detail:"source". Work from the copy's own
element ids, never the template's.patch_stage set op per slot on the
exact path that holds its words and nothing else. slide-dsl says which path
that is for each element type — content, text/content, a cell's text, a
line's content, latex. Preserve the inline structure while you change the
words: a slot whose source had a coloured <span> keeps a coloured <span>;
one that had three <p> paragraphs stays three paragraphs. Source HTML in,
source HTML out.generate_image({ prompt, aspectRatio?, styleHint? }) for the visual, then
patch_stage set its returned src onto the layout's existing image element
(/content/canvas/elements/N/src), or add_element a full-fidelity image element where
the layout has none. Match aspectRatio to
the box, and put the deck's palette and art direction into styleHint — a deck
built on flat diagrams must not suddenly grow a glossy stock photo. Never leave
an empty frame, and never invent a src: if generate_image is not registered
in this session, say so in one sentence and leave the layout without an image
rather than with a broken one.page-clone's rule
applied page after page: cut the wording to what the layout holds →
delete_element the slots you cannot meaningfully fill → move to a roomier
template from the library (and edit_deck delete the abandoned copy) → and only
as a last resort add_element a copy of a neighbouring slot, with its box
already set into their rhythm. From the third of those on, you are drawing
rather than copying, and it shows if you are careless.Then the next page. Each page's copy and its edits are that page's durable
checkpoint, exactly as stage-design requires. One read_stage detail:"source"
at the start of a page is enough — every patch_stage result carries the page's
fresh inventory back.
This is the failure that shipped last time, so it gets its own pass. Before a page
is done, read it back with read_stage detail:"text" — every text-bearing
element as { path, id, type, text } plus one page-wide combinedText — and check
it for the source course's words. One call gives you the whole page, which is what
makes this cheap, and each entry carries the pointer you would fix it at. Reading
all of it is the point, not re-reading the slots you remember editing.
The places residue actually hides:
Every element ends up deliberately replaced, deliberately kept, or deleted. A slot
you neither replaced nor deleted is a bug — the old subject leaking into the new
course — and anything carried over is a claim in the new course: if it is
stale, or belongs to the old subject, it goes. set, remove, or delete_element
whatever the sweep turns up, at the path it handed you.
This pass covers what the page shows. What it says is swept the same way once narration exists, in Step 7 — and that half is the one that has shipped residue.
Copied text is almost never the length the layout was designed around. Spend
render_scene_preview calls where they buy something: the first page copied
from a given template, and any later page whose text is visibly longer than what
it replaced. Skip the rest — previews cost calls, and the second page in a proven
template rarely surprises you.
When a page overflows or breaks, load pro-editing and converge inside its budget
of two preview rounds. Shorten the words first: a borrowed layout is a
statement about how much can be said on one page, and cutting text preserves the
design where moving boxes destroys it. Patch a box only when the text is already
tight. If two rounds have not converged, move that content to a roomier
template or name the page to the user. Do not ship a page with text running off it.
A duplicated page arrives silent. Call generate_actions for each one; it
connects TTS by default, so audio lands with the narration rather than needing a
separate pass.
Pass a styleDirective that keeps the teaching persona consistent with the source
course's register — how formal it is, how it addresses the learner, how much it
explains versus asserts. A deck whose look is faithfully reproduced but narrated
in a completely different voice does not read as the same author's work.
If the session also has a recording or handout by the same teacher, run
teacher-style-clone for the delivery profile and feed its findings into the
styleDirective. The two skills compose: that one supplies the voice, this one
supplies the look.
Then read every page back with read_stage detail:"source" and check what the narration says,
not only that each speech action has an audioId. Narration is written from the
page's content plus its outline brief, and that brief was inherited from the
template — so residue arrives through it even when the visible text is clean. A
real run's new page on model self-evolution came back narrated
「今天的课程就全部结束了……深度学习的基础知识……」: the reference deck's own closing line,
on a page that was neither a closing page nor about deep learning, with nothing
wrong on the slide itself.
The narration has to be about the new course. The source course's name, its
subject vocabulary, and its stage-of-course phrasing are residue wherever they
turn up — and a wrap-up line 「今天的课程就全部结束了」 on a page that is not the last
page is residue even when the subject is right. Fix what you find with
patch_stage on the exact /actions/N/text pointer, then generate_tts that page: reworded narration is
a silent page until it is re-synthesized.
duplicate_scene, then one
patch_stage set op per content slot. generate_scene on a page you copied throws away the design
you came for, and style directives passed to it do not survive into the page.detail:"source" before you patch. The default inventory strips
the colours, fonts and inline marks that are the entire point of the clone.read_stage detail:"text" before it ships — table cells, shape labels, code and
small type included.generate_actions; the source course's subject, name or wrap-up wording in a
narration line is the same bug as its words on the slide; patch_stage plus
generate_tts is the fix.ask_user, or on a finished deck — never on a report that the deck is imported
and the layouts are understood.© THU-MAIC, 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 1 other file in skills/agent-runtime/style-clone of THU-MAIC/OpenMAIC.
Open the folder on GitHubat commit 32f5923
OpenMAIC Deck Style Clone 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 |
|---|---|---|---|---|---|---|
| OpenMAIC Deck Style Clone this skillTHU-MAIC/OpenMAIC | 40k | — | ~4.9k | Automated safety check: Pass | MIT | |
| Academic PresentationsGabberflast/academic-pptx-skill | 1.1k | 1 repos | ~1.9k | Automated safety check: Pass | Proprietary | |
| Slide Deck Image GeneratorSpaceZephyr/design-buddy | 174 | — | ~6.5k | Automated safety check: Pass | None | |
| PPT as CodeRussell-cell/PPT-as-code | 191 | — | ~11k | Automated safety check: Pass | MIT | |
| Academic Paper to PPTXYuan1z0825/nature-skills | 46k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Nano BananaEvoScientist/EvoSkills | 475 | 2 repos | ~3.5k | Automated safety check: Pass | Apache-2.0 |
Gabberflast/academic-pptx-skill
Plans and structures academic decks for conference talks, seminars, thesis defenses and grant briefings, with argument-first slides, and leaves file creation to the PPTX skill.
SpaceZephyr/design-buddy
Turns written content into designed slide images from an outline, merges them into PPTX or PDF, and can borrow styles from a registry of brand design systems.
Russell-cell/PPT-as-code
Plans and builds HTML-based web presentations through staged quick, basic or advanced workflows, with optional visualization planning, motion, a workbench and PPTX export handoff.
Yuan1z0825/nature-skills
Creates or revises a Chinese-language academic PPTX deck from a scientific paper or reading notes, reusing the paper's figures and adding speaker notes.
EvoScientist/EvoSkills
Generate professional presentation slides and high-quality illustrations using Gemini image generation API (Nano Banana 2), with interactive browser-based review and iterative editing.
dmccreary/ibook-skills
Generates a 13-slide LinkedIn carousel (a "document post" — PPTX/PDF) that showcases an intelligent textbook's key features, with real screenshots, mascot art, and metrics pulled from the project.
THU-MAIC/OpenMAIC
Guides setup, classroom generation and secondary development for OpenMAIC, the multi-agent interactive classroom, one confirmed phase at a time.
THU-MAIC/OpenMAIC
Designs a Chinese K-12 classroom for one OpenMAIC stage around the core-literacy model, using authentic tasks, performance assessment and observable evidence.
THU-MAIC/OpenMAIC
Maps the structure of an OpenMAIC stage document so an agent can find the right path, read it and patch quizzes, widgets, actions and project pages without guessing.
THU-MAIC/OpenMAIC
Designs a review-and-practice lesson around an independent first attempt, targeted feedback, supported practice, a fresh independent check and a next step.
THU-MAIC/OpenMAIC
Derives a reusable personal skill for course-making from a representative sample of the user's own past classrooms and chat history, confirmed with them before saving.
THU-MAIC/OpenMAIC
Plans a multi-classroom series such as a seven-day course, clarifies the brief in rounds, gets sign-off on the full lesson list, then builds each stage in a shared folder.
Works with
Categories
Produces a new course in the look of an imported deck by copying the layout that fits each page and rewriting that copy's content element by element. pptx to import, and the ask is to teach new material in its design, this skill makes each new page look as though the deck's author drew it, covering palette, typography, background treatment and the way a page is divided. For every page the agent picks the source layout that fits, copies it with duplicate_scene and rewrites the copy's content element by element.
OpenMAIC Deck Style Clone fits situations like: teaching new material in the design of an imported deck; making a course read as though one author drew every page; turning an imported .pptx into a library of layouts for new pages.
Run `npx skills add THU-MAIC/OpenMAIC --skill style-clone -a claude-code`. Or copy the skill folder (skills/agent-runtime/style-clone in THU-MAIC/OpenMAIC) into .claude/skills/style-clone in your project. Claude Code loads it when a task matches its description.
Run `npx skills add THU-MAIC/OpenMAIC --skill style-clone -a codex`. Or copy the skill folder (skills/agent-runtime/style-clone in THU-MAIC/OpenMAIC) into .agents/skills/style-clone 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 THU-MAIC/OpenMAIC --skill style-clone -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/style-clone, .gemini/skills/style-clone, .github/skills/style-clone and .opencode/skills/style-clone in your project.
SKILL.md names no scripts, command-line tools or credentials: OpenMAIC Deck Style Clone is instructions for the agent only. Our summary lists: An imported deck, or a .pptx file to import, in the OpenMAIC runtime.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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. Review the folder before installing.
OpenMAIC Deck Style Clone is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.9k tokens (SKILL.md is roughly 20k 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 OpenMAIC Deck Style Clone: Academic Presentations (Gabberflast/academic-pptx-skill, 1.1k stars), Slide Deck Image Generator (SpaceZephyr/design-buddy, 174 stars), PPT as Code (Russell-cell/PPT-as-code, 191 stars) and Academic Paper to PPTX (Yuan1z0825/nature-skills, 46k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
THU-MAIC (a GitHub organization) maintains it in THU-MAIC/OpenMAIC, which has 40,120 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on October 8, 2026.
Source: THU-MAIC/OpenMAIC on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.