canva-implement-feedback
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".
What this skill does
# Feedback to Finished A deck has been out for review — stakeholders have left comments scattered across slides. This skill reads every thread, summarises what reviewers actually want, makes the clear-cut changes directly, and flags anything ambiguous for a human decision. ## Canva Editing API — What You Can and Cannot Do Before triaging feedback, you MUST know these constraints. This avoids wasted back-and-forth with the user on changes that are impossible via the API. ### What the API CAN do (via `perform-editing-operations`) - **Text content**: replace entire text elements (`replace_text`), find-and-replace substrings (`find_and_replace_text`) - **Text formatting**: font size, font weight (bold), font style (italic), text color, text alignment, line height, text decoration (underline), strikethrough, links, list formatting - **Media**: replace images/videos (`update_fill`), insert new images/videos (`insert_fill`), delete elements (`delete_element`) - **Layout**: reposition elements (`position_element`), resize elements (`resize_element`) - **Metadata**: update design title (`update_title`) ### What the API CANNOT do - Change font family/typeface — only size, weight, and style are supported - Add new text elements — you can only insert media (images/videos), not new text boxes - Change background colors or gradients - Add, remove, or reorder pages/slides - Modify animations or transitions - Change element opacity (except on newly inserted fills) - Group/ungroup elements - Modify shapes (color, border, etc.) — only text within shapes can be edited ### Triage rule When a comment requests something in the "CANNOT do" list, classify it as **Requires manual action**. Don't dwell on the limitation — simply note it in the summary and move on. These are normal; most design reviews will have a mix of API-supported and manual changes. Save the details for the manual changes checklist at the end (Step 7). ## Workflow ### Step 1: Resolve the Design - If the user provides a short link (`canva.link`), call `Canva:resolve-shortlink` to get the design URL - If the user provides a full Canva URL, extract the design ID from the URL - If the user provides a **design ID** directly (typically starts with `D`, e.g. `DABcd1234ef`), use it as `design_id`; **do not** use `Canva:search-designs` for a raw ID - Otherwise ask for the design ID or link ### Step 2: Read All Feedback - Call `Canva:list-comments` with the design ID to get every comment thread - For each thread with replies, call `Canva:list-replies` to capture the full conversation - Call `Canva:get-design-content` to read the current text on every page ### Step 3: Triage the Feedback Classify each comment thread into one of these categories: - **Actionable** — a change that the API supports and you can reasonably interpret. Use your best judgement — if a comment says "make the title punchier", rewrite it to be punchier rather than flagging it as ambiguous. If a comment says "fix the spacing", look at the design content and make a reasonable adjustment. Only escalate to the user when you genuinely cannot determine what the reviewer intends (e.g., two reviewers directly contradict each other, or a comment references something you can't find in the design). - **Requires manual action** — the reviewer wants something the API cannot do (font family change, new text element, background change, page reorder, etc.). Note these briefly in the summary — full details go in the manual changes checklist (Step 7). - **Resolved** — already addressed, explicitly marked done, or is a positive acknowledgement (e.g., "LGTM", "looks good") Present a summary to the user organised by category: what you plan to change, what needs clarification, what must be done manually, and what you're skipping. ### Step 4: Get User Approval — ONE time only - Present the plan and wait for the user to approve - If the user wants adjustments, update the plan and confirm once more **This is the only confirmation point in the entire workflow. Once the user says yes, go.** ### Step 5: Apply and Commit the Changes **Do NOT ask the user again.** They already approved. Execute all of these in sequence immediately: - Call `Canva:start-editing-transaction` to begin an editing session - Call `Canva:perform-editing-operations` to make each approved change (batch all operations in a single call where possible) - Call `Canva:commit-editing-transaction` to save — do NOT ask "shall I commit?" or "ready to save?" - Show the thumbnail from the editing response to the user as confirmation ### Step 7: Present Remaining Manual Changes After committing (or if no API-supported changes were possible), present a clear checklist of everything that still needs to be done manually in the Canva editor: ``` ## Changes to make manually in Canva 1. **Slide 3 — Change heading font to Montserrat** Reviewer: @Sarah | Why: API cannot change font family → Open slide 3, select the heading, change font to Montserrat 2. **Slide 7 — Add a new text box for the disclaimer** Reviewer: @James | Why: API cannot add new text elements → Add a text box below the chart with: "Source: Q3 2025 internal data" 3. ... ``` Include the slide number, what to change, who requested it, and step-by-step instructions so the user can work through the list quickly. ### Step 8: Resolve Comment Threads - After committing, call `Canva:reply-to-comment` on each actionable thread to note what was changed - For "Requires manual action" threads, reply noting what was done as the closest alternative and what still needs manual attention - This closes the feedback loop so reviewers can see their comments were addressed ## Rules - Be helpful, not cautious — interpret feedback generously and make your best attempt at a change rather than labelling it "ambiguous" and giving up. The user can always reject your changes in the approval step. - Only escalate to the user when you genuinely can't figure out the intent — two reviewers directly contradict each other, or a comment references something you can't find in the design - When reviewers disagree, present both sides and let the user decide - Show the summary of planned changes and wait for approval ONCE — after that, execute everything without further confirmation - NEVER ask "shall I commit?", "ready to save?", or any variation — the user's initial approval covers the entire edit-and-commit flow - Manual changes are normal and expected — don't over-explain or apologise for API limitations, just include them in the checklist - Batch operations: use a single `perform-editing-operations` call with multiple operations rather than one call per change
Related in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.