export
Skill9 starsChanged 6 months agoMITView on GitHub
Export a selected element from the canvas as PNG, JPEG, OGraf bundle, Lottie, or video. Saves to the project's exports/ folder; the chat renders the result inline as an artifact card.
24 other projects use a version of this.
Adopted by
Most recently taken up by
- fjwood69/moritheir own version, first seen Nov 8, 2026
- soilmass/motion-design-agenttheir own version, first seen Nov 8, 2026
- hiddenjobs/job-search-mcptheir own version, first seen Nov 1, 2026
- FiredMosquito831/my-writing-companiontheir own version, first seen Nov 1, 2026
- otisbase/otis-agent-plugintheir own version, first seen Nov 1, 2026
- Anglesite/anglesite-skillstheir own version, first seen Oct 27, 2026
Used with
Projects with it also use menu, import and 8 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
sasly2048Skillmenu
Point the user to cc-atlas's full interactive menu (dashboard, project comparison, session replay, team activity, anomalies, goals) — screens that need a real terminal.
Also in 3 projects that use this
michaelenglandSkillimport
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.
Also in 3 projects that use this
kv0906Skillpreview
Render vault notes as styled HTML and open in browser. Turn markdown docs, decisions, progress reports into readable previews. Use for "/preview docs/project-a/checkout-flow.md", "/preview progress all", "/preview decide auth-approach", or when user wants to see a doc before sharing.
Also in 3 projects that use this
AnthropicSkillsearch
Search across all connected sources in one query. Trigger with "find that doc about...", "what did we decide on...", "where was the conversation about...", or when looking for a decision, document, or discussion that could live in chat, email, cloud storage, or a project tracker.
Also in 4 projects that use this
GoogleSkilldashboard
Configures and launches the GKE Capacity & Triage Dashboard scoped to a GCP project ID, GKE cluster name, or target ML workload ID. Uses the configure-and-launch-dashboard action and launch-workload-dashboard workflow to verify local dashboard health, discover cluster capacity, trigger live scans, and generate deep-linked URLs. Use when the user types "/dashboard", says "launch dashboard", "open dashboard", "show capacity", or "view triage dashboard" with a project, cluster, or workload. Don't use for general workload log querying or automated failure attribution (use the troubleshoot skill).
Also in 4 projects that use this
MicrosoftSkillreport
Turn an exploration (threads, findings, charts) into a single Markdown report — note, blog post, executive summary, KPI dashboard, slide brief, or multi-section analytical report, with embedded charts.
Also in 4 projects that use this
Other versions24 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 24
- pytorch/executorch★ 5.2ksame name
- Zafer-Liu/Data-Analysis-Agent★ 2.6ksame name
- ZimoLiao/scholaraio★ 585same name
- with-pebbly/aseprite-ai-artist★ 473same name
- ai-analyst-lab/ai-analyst★ 304same name
- yha9806/academic-writing-toolkit★ 54same name
- spmtitsolution/OpenBA-Kit★ 38same name
- fjwood69/mori★ 32same name
- hiddenjobs/job-search-mcp★ 25same name
- spotify/ads-agentic-tools★ 20same name
14 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository20 other files it gives its agents.
- AGENTS.mdAGENTS.md
- canvas-syncSkill
- cuj-guardianSkill
- frontend-designSkill
- grill-meSkill
- pr-evidenceSkill
- semantic-commitSkill
- ship-taskSkill
- verify-with-playwrightSkill
- animated-videoSkill
- create-design-systemSkill
- design-aesthetic-presetsSkill
- design-critiqueSkill
- design-md-authorSkill
- frontend-designSkill
- handoff-to-claude-codeSkill
- interactive-prototypeSkill
- make-tweakableSkill
- save-as-standalone-htmlSkill
- send-to-canvaSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 3 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 17 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 76
Ask (one ask_user call per decision, or batch where natural):
- Distinctive: line 111
When the user doesn't specify:
- Very specific: line 121
After a successful export, when iteration is plausible, call mcp__ask-user__ask_user:
- Distinctive: line 131
When the user picks one, route accordingly:
- Distinctive: line 147
Don't burn tool calls inspecting the same element multiple times in a turn.
“Common” is measured: kept by at least 6 in 10 of the 17 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Export
The user wants to take an element from the active design canvas and save it for use in another tool — usually a video editor (DaVinci Resolve, FCP, Premiere, CapCut), sometimes a presentation tool. Pick the right format, call the matching capability, then write a single short sentence.
Critical: do not narrate file creation
The host renders an ArtifactCard inline in the chat for every successful export — thumbnail + filename + size + Download / Preview / Discuss buttons. You don't need to tell the user what you saved or where it landed; the card already shows that. Your reply is a one-sentence header explaining the choice, not a status report.
Bad — narrates what the user can already see:
I've saved the cat banner as a PNG file at exports/cat-banner.png. The file is 2.3MB and 3840×2160 pixels with a transparent background. You can download it using the link.
Good — confirms intent + invites iteration:
Cat banner as a 2× transparent PNG — should work straight on a Resolve overlay track.
Better — confirms + offers next step via mcp__ask-user__ask_user:
Saved as a 2× transparent PNG. Want me to also drop a 4K version for hero use? (then call ask_user with kind:"enum", options:["Yes, 4K too", "No, this is enough"])
Capabilities
These are the tools the host registry exposes. Whatever runtime you're in (MCP today, OpenAI tools later), the names and arg shapes are identical. They all return an artifact envelope:
{ "ok": true, "kind": "image|video|html-graphics|lottie", "filename": "...", "url": "...", "mime": "...", "bytes": N, "metadata": { ... } }export_element— PNG or JPEG via real headless Chromium. Captures everything the browser actually renders (canvas, video, backdrop-filter, mix-blend-mode all work).export_ograf—.ograf.zipbundle for DaVinci Resolve 21+'s native HTML graphics import.
(More may be registered — check the tool list. Video / Lottie may have landed by the time you read this.)
Required args (every export)
projectId— the active project idroute— project-relative path to the page (e.g.02 Opening Title.html)selector— CSS selector for the target element
The host typically tells you these in the conversation context. If the user says "export this" without a clearer reference, the host's selected.selector is the canonical "this" — confirm with the user if you're unsure rather than guessing.
Naming
Pick a semantic name. The user will see it in the chat card and on disk. Generate from element role + intent:
img-cat-photo— better thanexport-001papo-de-montanha-thumbnail— better thandiv-banner-2xkdu-titling-resolve-template— better thangraphic
The server sanitizes (filesystem-safe chars only) and collision-suffixes (-2, -3) automatically. Don't include the extension.
Format picker — short rubric
| User said… | Use |
| "PNG", "transparent image", "thumbnail" | export_element with format: "png", backgroundColor: "transparent" |
| "JPEG", "smaller file", "for the web" | export_element with format: "jpeg", optional quality: 90 |
| "for DaVinci", "Resolve", "video editor" with static content | export_element PNG with alpha (drag straight onto upper video track) |
| "OGraf", "HTML graphics", "Resolve template" | export_ograf |
| "video", "MP4", "animated", "for a timeline" | export_video. Default duration: "auto" (matches the animation's natural length); pick a number only when the user explicitly asks for a specific length. FPS doesn't change animation speed — only smoothness — so 30 fps is the safe default. For Resolve overlays, prefer backgroundColor: "transparent" (ProRes 4444 with real alpha). |
| "4K", "8K", "high quality video" | export_video with resolution set + quality: "high" or "master". Vector content stays sharp at 4K/8K because the browser re-rasterizes at higher DPI. |
| Ambiguous | Use mcp__ask-user__ask_user with kind: "enum" and options like ["PNG (transparent)", "JPEG (smaller)", "OGraf (Resolve 21+)"] |
OGraf export — always elicit first
export_ograf is not a one-shot call. An OGraf bundle can be an overlay or a
whole page, animated or static, with or without inspector-editable fields —
and the right choice changes every time. Before calling export_ograf, run
a short ask_user elicitation. Then pass the answers as args.
Ask (one ask_user call per decision, or batch where natural):
- Scope —
kind:"enum", options["Just this element (overlay)", "The whole page"]→scope: "element"or"page". Element = transparent frame, CSS shadow-scoped, sized to the element. Page = keeps the page background, sized to the captured root. Forpage, pass the page's root wrapper asselector, notbody. - Animation — only if the element actually animates.
kind:"enum", options["Keep it animated", "Freeze it (static)"]→animated: true|false. Animated graphics stay seekable as Resolve scrubs the timeline. - Editable props — inspect the design, propose a concrete list, let the
user confirm/trim. e.g. "I can make these editable in Resolve's inspector:
Headline text, Headline size, Headline font, Background
color, Entrance duration — want all of them?" Each confirmed prop
becomes a
props[]entry with akey,label,type(text/number/color),control(text/background/color/fontSize/fontFamily/opacity/duration) and atargetCSS selector. Default to offering BOTHfontSizeANDfontFamilyfor every prominent text element — the user wants to resize and re-pick the font inside Resolve. Resolve's OGraf renderer is Chromium, so afontFamilyvalue resolves against the OS's installed fonts — typing "Helvetica Neue" or "JetBrains Mono" in the Inspector switches to that system font live. Emptyprops= a baked graphic (nothing editable) — fine if the user doesn't need it.
What the exporter now guarantees (these were hard-won — don't second-guess
them): HTML/CSS/images are inlined (no runtime fetch — Resolve's sandbox
blocks it); CSS @keyframes are made seekable so they follow Resolve's
timeline; the graphic is sized by true layout pixels. Declared props show
up as real inspector controls and update live via the OGraf data API.
One Resolve-side gotcha to tell the user: the imported clip's Composite Mode must be Normal (not Multiply) for a clean alpha overlay.
Defaults
When the user doesn't specify:
format→pngscale→2(high-DPI;4for hero shots if the file size cost is acceptable)backgroundColor→transparentfor PNG, omit for JPEG (which forces white)- video
resolution→4K,quality→high— this user works in 4K, so high quality is the baseline, not an opt-in. Only go smaller when the user explicitly asks for a lighter file.
Feedback loop
After a successful export, when iteration is plausible, call mcp__ask-user__ask_user:
{
"message": "How does this look?",
"kind": "enum",
"options": ["Looks good", "Try a different format", "Higher quality / 4K", "Adjust background"]
}When the user picks one, route accordingly:
- "Looks good" → done, no further calls
- "Try a different format" → ask which, then re-call the right capability
- "Higher quality / 4K" → re-call
export_elementwithscale: 4, orexport_videowithresolution: "4K",quality: "master" - "Adjust background" → re-call with
backgroundColorflipped
Don't ask after every export — only when the result might genuinely need iteration (complex element, ambiguous request, hero shot). For simple "give me a PNG" calls, just confirm and stop.
When NOT to use this skill
- The user wants to modify the design itself → that's the editor's normal flow, not export.
- The user wants to send the design to another tool with full editability (e.g. Canva) → that's a different capability if/when it's registered (not yet).
- The user already used the toolbar's Export button — don't re-export, just confirm what they got.
Tips
- Don't burn tool calls inspecting the same element multiple times in a turn.
- For batch ("export all five thumbnails"), call the same capability once per element. Each result becomes its own ArtifactCard.
- File collisions are handled by the server (
-2,-3suffix); don't add timestamps unless the user asked for one.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

