plugins/canva/skills/edit-design/SKILL.md
Make edits to an existing Canva design — change or fix text, replace/insert/delete images and videos, reformat text (size, weight, style, color, alignment, lists, line height), reposition or resize elements, and update the title. Use when the user wants to change, edit, update, fix, translate, replace, or reformat content in a specific Canva design. This is the safe edit engine that other Canva skills (e.g. implement-feedback) build on.
npx skillsauth add canva-sdks/canva-claude-skills canva-edit-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The canonical, safe way to apply edits to an existing Canva design. Every Canva skill that mutates a design should follow this exact protocol: start a transaction → perform operations → commit (with approval). Changes are draft-only until committed and are PERMANENTLY LOST if not committed.
Canva:start-editing-transaction — pass the design_id. Remember the returned transaction_id and the pages array; both are required by later calls. ALWAYS show the user the thumbnail(s) returned here.Canva:perform-editing-operations — apply edits. Pass the transaction_id, the pages array from the previous response, the page_index of the first page being changed, and an operations array. Batch multiple operations into a single call wherever possible.Canva:commit-editing-transaction — save. See the approval gate below. After committing, the transaction_id is invalid; a new edit needs a new transaction.Canva:cancel-editing-transaction — discard the draft instead of saving (e.g. the user rejects the preview, or you opened a transaction only to inspect the design).perform-editing-operations)replace_text (whole element), find_and_replace_text (substring)format_text): font size, weight (normal/bold), style (normal/italic), color, alignment, line height, underline, strikethrough, links, list level/markerupdate_fill (replace image/video), insert_fill (add image/video), delete_elementposition_element, resize_elementupdate_titleupdate_autofill_field (fixed-page designs only)When a requested change is in the CANNOT list, tell the user it must be done manually in the Canva editor — don't attempt a workaround.
Some pages come back marked is_responsive: true. On those pages, ONLY these operations are allowed:
update_title, replace_text, update_fill, delete_element, find_and_replace_text.
Before calling perform-editing-operations, check the pages array. If any operation targets a responsive page with an unsupported op (e.g. format_text, position_element, resize_element, insert_fill), do NOT make the call — tell the user that operation isn't supported on that page and offer an alternative.
commit-editing-transaction makes changes permanent. You MUST show the user exactly what changed (and the preview thumbnail) and get explicit approval before committing — e.g. "Here's the preview. Save these changes to your design?" Wait for a clear yes.
Note for composing skills: a skill that already collects a single up-front approval for a batch of changes (e.g.
canva-implement-feedback) should treat that approval as covering the commit and NOT ask again. Follow that skill's own confirmation rules; the gate above is the default for direct, ad-hoc edits.
canva.link/...) → Canva:resolve-shortlink to get the URL./design/).D) → use directly; do NOT search.Call Canva:start-editing-transaction. Show the thumbnail(s). Use the returned content to locate the exact element_ids you need to target. (If you only needed to look, call cancel-editing-transaction and stop.)
Translate the user's request into concrete operations. Confirm scope first when a find_and_replace_text string could match in multiple places or contexts — ask which instances they mean. Batch all operations into one perform-editing-operations call when you can.
Show the resulting thumbnail and a plain-language list of what changed. Ask for approval, then commit-editing-transaction. Share the edit link.
transaction_id and pages array within a transaction.delete_element, large find_and_replace_text), confirm scope before performing.perform-editing-operations call over many small ones.When calling any Canva: tool, prefix the user_intent argument with the tag [skill:canva-edit-design] followed by a space and the normal concise description of what the user is trying to accomplish (e.g. [skill:canva-edit-design] Make the title bold). user_intent is already captured in Canva's analytics, so this lets per-skill usage be measured with no backend changes.
development
Resize a Canva design into multiple social media formats (Facebook post, Facebook story, Instagram post, Instagram story, LinkedIn post) and export all versions as PNGs. Use this skill when users want to resize Canva designs specifically for multiple social media platforms in one operation, rather than resizing to a single format manually.
testing
Implement reviewer feedback on a Canva design. Reads all comment threads, synthesises what reviewers want, makes the clear-cut changes directly, and flags anything that needs a human decision. Use when the user asks to "implement feedback on my deck", "address comments on a design", "apply review feedback", "fix the comments on my presentation", or "implement the feedback".
testing
Read a Canva design and return structured, actionable design feedback — visual hierarchy, copy/messaging, layout & spacing, consistency, readability, and accessibility. Read-only; makes no changes to the design. Use when the user asks to "review my design", "give me feedback on this", "critique my deck/poster/flyer", "how can I improve this design", or "what's wrong with this slide".
testing
Bulk-create Canva designs from tabular data using a brand template with autofill fields, producing one design per row. Use when users say "bulk create designs from this CSV", "generate one design per row", "create a design for each product", "batch generate from a template", or "autofill a template from a spreadsheet". Accepts any tabular data source — uploaded files, pasted tables, JSON, or URLs.