{"id":6126,"plugin_id":"plugin_asdk_app_6a97af93ebc88191961039f177688fa9","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T22:47:43.534Z","digest":"c1b2eb3ed70c5540bdf7f791c91ae23a36ac8ee33d9c1fafeb06c207ad0867a5","against":null,"payload":{"name":"canva","description":"Generate artwork with ImagineArt and build it into an editable Canva design — add real text layers, a logo and a CTA, then resize for each destination and export. Use when the user wants a finished, editable design rather than a flat generated image. Requires browser access to Canva.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":495},{"relative_path":"assets/ATTRIBUTION.md","size_in_bytes":945},{"relative_path":"assets/icon.svg","size_in_bytes":363},{"relative_path":"references/canva-ui.md","size_in_bytes":4188},{"relative_path":"references/errors.md","size_in_bytes":2325},{"relative_path":"references/models.md","size_in_bytes":3809},{"relative_path":"references/qa.md","size_in_bytes":745}],"skill_md_contents":"---\nname: canva\ndescription: Generate artwork with ImagineArt and build it into an editable Canva design — add real text layers, a logo and a CTA, then resize for each destination and export. Use when the user wants a finished, editable design rather than a flat generated image. Requires browser access to Canva.\n---\n\n# Canva Finishing\n\nThe deliverable is an **editable Canva design**, not a picture. If the result is a flat\nimage with text burned in, this skill failed — that is what Social Studio already does.\n\nRead `references/canva-ui.md` for the interface playbook and `references/models.md` before\ngenerating anything.\n\n## Tokens\n\n| Token | What it does |\n|---|---|\n| `/canva` | Generate artwork, build a design, add editable text |\n| `/resize` | Adapt an existing design to another size |\n| `/headline` | Change only the text on an existing design |\n| `/export-design` | Render and download the current Canva design |\n\n## Step 0 — check what you actually have\n\nBefore promising anything, establish three things:\n\n1. **Is the official `@Canva` connector available?** If it is, **prefer it** for anything it\n   exposes — creating, editing, resizing, Brand Kit. It is faster and more reliable than\n   driving the UI.\n2. **Is computer use available?** It needs the ChatGPT desktop app, macOS or Windows, a\n   Work or Codex plan, and granted permissions. You cannot switch it on yourself.\n3. **Is the user signed in to Canva?** Never attempt to authenticate on their behalf.\n\nIf none of the above is available, say so in one line, generate the assets anyway, and hand\nthem off with the sizes and text spelled out. **Never imply a Canva design was created when\nit wasn't.**\n\n## Before anything else — is this an edit or a build?\n\n**Inspect first. Generate only what the requested change actually needs.**\n\n\"Change the headline\", \"trim this clip\", \"export this\", \"move that\" are **edits**. They must\nnot generate new artwork, footage or music. Open what exists, find the specific element, and\nchange it.\n\nOnly generate when something genuinely required is missing. A six-second clip asked to be\nfive seconds gets **trimmed**, not regenerated.\n\n## The preservation rule\n\nOne rule, applied consistently:\n\n> **Preserve unrelated work. Modify exactly the element the user asked about. Verify the\n> change landed and that nothing else moved.**\n\nThis is not \"never replace anything\" — the user may well want an element replaced. It means\nnever touch what they didn't ask about. And note that *adding* is not automatically safe:\na layer placed on top can hide what's beneath it, and a clip on a new track can duplicate\naudio. Check what your addition covers.\n\n## The workflow\n\n1. **Establish the brief.** What it advertises, the headline, the CTA, and the\n   destinations (feed, story, both). Ask once, together.\n\n2. **Generate the artwork — with room for text.** This is the step that decides whether\n   the design works. Prompt for deliberate negative space where the headline and CTA will\n   sit; do not let the model render any text. See `references/canva-ui.md`.\n\n3. **Import.** Upload the generated asset through Canva's Uploads panel, then place it on\n   the page as a **new element**. Never replace an existing frame in a Brand Kit template.\n\n4. **Add text as real Canva text elements.** Headline, CTA, logo — each its own editable\n   element. This is the entire point of the skill.\n\n5. **Verify after every meaningful change.** Screenshot and read what is actually on the\n   canvas. Do not assume a click landed.\n\n6. **Resize per destination**, then export. Confirm the export finished before reporting.\n\n7. **Report what you verified and what you didn't**, explicitly.\n\n## Hard rules\n\n- **Never use fixed screen coordinates.** Find elements by what they look like, every time.\n  Canva's layout shifts by window size, account and release.\n- **Never bake text into the generated image.** Diffusion models cannot render reliable\n  letterforms, and baked text isn't editable — failing the whole purpose.\n- **If a step fails twice, stop.** Describe what you see rather than clicking blindly.\n- **Never claim an export exists without confirming it.**\n\n## Done means reopened, not saved\n\n\"The export downloaded\" is too weak. Before reporting success, confirm:\n\n- The **saved design** contains the headline, CTA and logo as **separate selectable\n  elements** — not flattened into the artwork.\n- The exported file exists **and** is the size that was asked for.\n- Every pre-existing element is still present.\n\nState explicitly what you verified and what you could not.\n\n## The follow-up edit test\n\n\"Change only the headline\" is the request that proves this skill works. It must change the\nheadline text and **nothing else** — not the image, not the CTA, not the layout, not the\nother sizes. Locate the existing text element, edit it in place, and verify by screenshot\nthat everything else is untouched.\n\nIf you cannot locate the element, say so. Do not rebuild the design.\n\n## Conventions\n\nNever print `org_id`, `folder_id`, or raw asset uuids.\n\n## When something fails\n\nRead `references/errors.md`. Identify the kind of failure before responding: pending jobs\nare waited on, technical errors retried at most twice, unsupported capabilities stated\nplainly, safety refusals never routed around, and every material change disclosed.\n\n## QA before delivery\n\nRun `references/qa.md` before calling this finished. Inspect the actual output — never\nclaim quality you have not observed, and say plainly what you could not verify.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}