[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-canva-implement-feedback":3,"mdc--c0ewk9-key":36,"related-repo-openai-canva-implement-feedback":657,"related-org-openai-canva-implement-feedback":757},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"canva-implement-feedback","implement reviewer feedback on Canva designs","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\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Automation","automation","tag",{"name":17,"slug":18,"type":15},"Collaboration","collaboration",{"name":20,"slug":21,"type":15},"Canva","canva",{"name":23,"slug":24,"type":15},"Design","design",4888,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-08-28T15:09:06.716242",null,661,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fcanva\u002Fskills\u002Fcanva-implement-feedback","---\nname: canva-implement-feedback\ndescription: 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\".\n---\n\n# Feedback to Finished\n\nA 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.\n\n## Canva Editing API — What You Can and Cannot Do\n\nBefore triaging feedback, you MUST know these constraints. This avoids wasted back-and-forth with the user on changes that are impossible via the API.\n\n### What the API CAN do (via `perform-editing-operations`)\n\n- **Text content**: replace entire text elements (`replace_text`), find-and-replace substrings (`find_and_replace_text`)\n- **Text formatting**: font size, font weight (bold), font style (italic), text color, text alignment, line height, text decoration (underline), strikethrough, links, list formatting\n- **Media**: replace images\u002Fvideos (`update_fill`), insert new images\u002Fvideos (`insert_fill`), delete elements (`delete_element`)\n- **Layout**: reposition elements (`position_element`), resize elements (`resize_element`)\n- **Metadata**: update design title (`update_title`)\n\n### What the API CANNOT do\n\n- Change font family\u002Ftypeface — only size, weight, and style are supported\n- Add new text elements — you can only insert media (images\u002Fvideos), not new text boxes\n- Change background colors or gradients\n- Add, remove, or reorder pages\u002Fslides\n- Modify animations or transitions\n- Change element opacity (except on newly inserted fills)\n- Group\u002Fungroup elements\n- Modify shapes (color, border, etc.) — only text within shapes can be edited\n\n### Triage rule\n\nWhen 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).\n\n## Workflow\n\n### Step 1: Resolve the Design\n\n- If the user provides a short link (`canva.link`), call `Canva:resolve-shortlink` to get the design URL\n- If the user provides a full Canva URL, extract the design ID from the URL\n- 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\n- Otherwise ask for the design ID or link\n\n### Step 2: Read All Feedback\n\n- Call `Canva:list-comments` with the design ID to get every comment thread\n- For each thread with replies, call `Canva:list-replies` to capture the full conversation\n- Call `Canva:get-design-content` to read the current text on every page\n\n### Step 3: Triage the Feedback\n\nClassify each comment thread into one of these categories:\n\n- **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).\n- **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).\n- **Resolved** — already addressed, explicitly marked done, or is a positive acknowledgement (e.g., \"LGTM\", \"looks good\")\n\nPresent 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.\n\n### Step 4: Get User Approval — ONE time only\n\n- Present the plan and wait for the user to approve\n- If the user wants adjustments, update the plan and confirm once more\n\n**This is the only confirmation point in the entire workflow. Once the user says yes, go.**\n\n### Step 5: Apply and Commit the Changes\n\n**Do NOT ask the user again.** They already approved. Execute all of these in sequence immediately:\n\n- Call `Canva:start-editing-transaction` to begin an editing session\n- Call `Canva:perform-editing-operations` to make each approved change (batch all operations in a single call where possible)\n- Call `Canva:commit-editing-transaction` to save — do NOT ask \"shall I commit?\" or \"ready to save?\"\n- Show the thumbnail from the editing response to the user as confirmation\n\n### Step 7: Present Remaining Manual Changes\n\nAfter 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:\n\n```\n## Changes to make manually in Canva\n\n1. **Slide 3 — Change heading font to Montserrat**\n   Reviewer: @Sarah | Why: API cannot change font family\n   → Open slide 3, select the heading, change font to Montserrat\n\n2. **Slide 7 — Add a new text box for the disclaimer**\n   Reviewer: @James | Why: API cannot add new text elements\n   → Add a text box below the chart with: \"Source: Q3 2025 internal data\"\n\n3. ...\n```\n\nInclude the slide number, what to change, who requested it, and step-by-step instructions so the user can work through the list quickly.\n\n### Step 8: Resolve Comment Threads\n\n- After committing, call `Canva:reply-to-comment` on each actionable thread to note what was changed\n- For \"Requires manual action\" threads, reply noting what was done as the closest alternative and what still needs manual attention\n- This closes the feedback loop so reviewers can see their comments were addressed\n\n## Rules\n\n- 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.\n- 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\n- When reviewers disagree, present both sides and let the user decide\n- Show the summary of planned changes and wait for approval ONCE — after that, execute everything without further confirmation\n- NEVER ask \"shall I commit?\", \"ready to save?\", or any variation — the user's initial approval covers the entire edit-and-commit flow\n- Manual changes are normal and expected — don't over-explain or apologise for API limitations, just include them in the checklist\n- Batch operations: use a single `perform-editing-operations` call with multiple operations rather than one call per change\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,50,56,63,68,84,200,206,249,255,267,273,279,364,370,411,417,422,454,459,465,478,486,492,502,546,552,557,569,574,580,606,612],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"feedback-to-finished",[47],{"type":48,"value":49},"text","Feedback to Finished",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54],{"type":48,"value":55},"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.",{"type":42,"tag":57,"props":58,"children":60},"h2",{"id":59},"canva-editing-api-what-you-can-and-cannot-do",[61],{"type":48,"value":62},"Canva Editing API — What You Can and Cannot Do",{"type":42,"tag":51,"props":64,"children":65},{},[66],{"type":48,"value":67},"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.",{"type":42,"tag":69,"props":70,"children":72},"h3",{"id":71},"what-the-api-can-do-via-perform-editing-operations",[73,75,82],{"type":48,"value":74},"What the API CAN do (via ",{"type":42,"tag":76,"props":77,"children":79},"code",{"className":78},[],[80],{"type":48,"value":81},"perform-editing-operations",{"type":48,"value":83},")",{"type":42,"tag":85,"props":86,"children":87},"ul",{},[88,115,125,158,183],{"type":42,"tag":89,"props":90,"children":91},"li",{},[92,98,100,106,108,114],{"type":42,"tag":93,"props":94,"children":95},"strong",{},[96],{"type":48,"value":97},"Text content",{"type":48,"value":99},": replace entire text elements (",{"type":42,"tag":76,"props":101,"children":103},{"className":102},[],[104],{"type":48,"value":105},"replace_text",{"type":48,"value":107},"), find-and-replace substrings (",{"type":42,"tag":76,"props":109,"children":111},{"className":110},[],[112],{"type":48,"value":113},"find_and_replace_text",{"type":48,"value":83},{"type":42,"tag":89,"props":116,"children":117},{},[118,123],{"type":42,"tag":93,"props":119,"children":120},{},[121],{"type":48,"value":122},"Text formatting",{"type":48,"value":124},": font size, font weight (bold), font style (italic), text color, text alignment, line height, text decoration (underline), strikethrough, links, list formatting",{"type":42,"tag":89,"props":126,"children":127},{},[128,133,135,141,143,149,151,157],{"type":42,"tag":93,"props":129,"children":130},{},[131],{"type":48,"value":132},"Media",{"type":48,"value":134},": replace images\u002Fvideos (",{"type":42,"tag":76,"props":136,"children":138},{"className":137},[],[139],{"type":48,"value":140},"update_fill",{"type":48,"value":142},"), insert new images\u002Fvideos (",{"type":42,"tag":76,"props":144,"children":146},{"className":145},[],[147],{"type":48,"value":148},"insert_fill",{"type":48,"value":150},"), delete elements (",{"type":42,"tag":76,"props":152,"children":154},{"className":153},[],[155],{"type":48,"value":156},"delete_element",{"type":48,"value":83},{"type":42,"tag":89,"props":159,"children":160},{},[161,166,168,174,176,182],{"type":42,"tag":93,"props":162,"children":163},{},[164],{"type":48,"value":165},"Layout",{"type":48,"value":167},": reposition elements (",{"type":42,"tag":76,"props":169,"children":171},{"className":170},[],[172],{"type":48,"value":173},"position_element",{"type":48,"value":175},"), resize elements (",{"type":42,"tag":76,"props":177,"children":179},{"className":178},[],[180],{"type":48,"value":181},"resize_element",{"type":48,"value":83},{"type":42,"tag":89,"props":184,"children":185},{},[186,191,193,199],{"type":42,"tag":93,"props":187,"children":188},{},[189],{"type":48,"value":190},"Metadata",{"type":48,"value":192},": update design title (",{"type":42,"tag":76,"props":194,"children":196},{"className":195},[],[197],{"type":48,"value":198},"update_title",{"type":48,"value":83},{"type":42,"tag":69,"props":201,"children":203},{"id":202},"what-the-api-cannot-do",[204],{"type":48,"value":205},"What the API CANNOT do",{"type":42,"tag":85,"props":207,"children":208},{},[209,214,219,224,229,234,239,244],{"type":42,"tag":89,"props":210,"children":211},{},[212],{"type":48,"value":213},"Change font family\u002Ftypeface — only size, weight, and style are supported",{"type":42,"tag":89,"props":215,"children":216},{},[217],{"type":48,"value":218},"Add new text elements — you can only insert media (images\u002Fvideos), not new text boxes",{"type":42,"tag":89,"props":220,"children":221},{},[222],{"type":48,"value":223},"Change background colors or gradients",{"type":42,"tag":89,"props":225,"children":226},{},[227],{"type":48,"value":228},"Add, remove, or reorder pages\u002Fslides",{"type":42,"tag":89,"props":230,"children":231},{},[232],{"type":48,"value":233},"Modify animations or transitions",{"type":42,"tag":89,"props":235,"children":236},{},[237],{"type":48,"value":238},"Change element opacity (except on newly inserted fills)",{"type":42,"tag":89,"props":240,"children":241},{},[242],{"type":48,"value":243},"Group\u002Fungroup elements",{"type":42,"tag":89,"props":245,"children":246},{},[247],{"type":48,"value":248},"Modify shapes (color, border, etc.) — only text within shapes can be edited",{"type":42,"tag":69,"props":250,"children":252},{"id":251},"triage-rule",[253],{"type":48,"value":254},"Triage rule",{"type":42,"tag":51,"props":256,"children":257},{},[258,260,265],{"type":48,"value":259},"When a comment requests something in the \"CANNOT do\" list, classify it as ",{"type":42,"tag":93,"props":261,"children":262},{},[263],{"type":48,"value":264},"Requires manual action",{"type":48,"value":266},". 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).",{"type":42,"tag":57,"props":268,"children":270},{"id":269},"workflow",[271],{"type":48,"value":272},"Workflow",{"type":42,"tag":69,"props":274,"children":276},{"id":275},"step-1-resolve-the-design",[277],{"type":48,"value":278},"Step 1: Resolve the Design",{"type":42,"tag":85,"props":280,"children":281},{},[282,303,308,359],{"type":42,"tag":89,"props":283,"children":284},{},[285,287,293,295,301],{"type":48,"value":286},"If the user provides a short link (",{"type":42,"tag":76,"props":288,"children":290},{"className":289},[],[291],{"type":48,"value":292},"canva.link",{"type":48,"value":294},"), call ",{"type":42,"tag":76,"props":296,"children":298},{"className":297},[],[299],{"type":48,"value":300},"Canva:resolve-shortlink",{"type":48,"value":302}," to get the design URL",{"type":42,"tag":89,"props":304,"children":305},{},[306],{"type":48,"value":307},"If the user provides a full Canva URL, extract the design ID from the URL",{"type":42,"tag":89,"props":309,"children":310},{},[311,313,318,320,326,328,334,336,342,344,349,351,357],{"type":48,"value":312},"If the user provides a ",{"type":42,"tag":93,"props":314,"children":315},{},[316],{"type":48,"value":317},"design ID",{"type":48,"value":319}," directly (typically starts with ",{"type":42,"tag":76,"props":321,"children":323},{"className":322},[],[324],{"type":48,"value":325},"D",{"type":48,"value":327},", e.g. ",{"type":42,"tag":76,"props":329,"children":331},{"className":330},[],[332],{"type":48,"value":333},"DABcd1234ef",{"type":48,"value":335},"), use it as ",{"type":42,"tag":76,"props":337,"children":339},{"className":338},[],[340],{"type":48,"value":341},"design_id",{"type":48,"value":343},"; ",{"type":42,"tag":93,"props":345,"children":346},{},[347],{"type":48,"value":348},"do not",{"type":48,"value":350}," use ",{"type":42,"tag":76,"props":352,"children":354},{"className":353},[],[355],{"type":48,"value":356},"Canva:search-designs",{"type":48,"value":358}," for a raw ID",{"type":42,"tag":89,"props":360,"children":361},{},[362],{"type":48,"value":363},"Otherwise ask for the design ID or link",{"type":42,"tag":69,"props":365,"children":367},{"id":366},"step-2-read-all-feedback",[368],{"type":48,"value":369},"Step 2: Read All Feedback",{"type":42,"tag":85,"props":371,"children":372},{},[373,386,399],{"type":42,"tag":89,"props":374,"children":375},{},[376,378,384],{"type":48,"value":377},"Call ",{"type":42,"tag":76,"props":379,"children":381},{"className":380},[],[382],{"type":48,"value":383},"Canva:list-comments",{"type":48,"value":385}," with the design ID to get every comment thread",{"type":42,"tag":89,"props":387,"children":388},{},[389,391,397],{"type":48,"value":390},"For each thread with replies, call ",{"type":42,"tag":76,"props":392,"children":394},{"className":393},[],[395],{"type":48,"value":396},"Canva:list-replies",{"type":48,"value":398}," to capture the full conversation",{"type":42,"tag":89,"props":400,"children":401},{},[402,403,409],{"type":48,"value":377},{"type":42,"tag":76,"props":404,"children":406},{"className":405},[],[407],{"type":48,"value":408},"Canva:get-design-content",{"type":48,"value":410}," to read the current text on every page",{"type":42,"tag":69,"props":412,"children":414},{"id":413},"step-3-triage-the-feedback",[415],{"type":48,"value":416},"Step 3: Triage the Feedback",{"type":42,"tag":51,"props":418,"children":419},{},[420],{"type":48,"value":421},"Classify each comment thread into one of these categories:",{"type":42,"tag":85,"props":423,"children":424},{},[425,435,444],{"type":42,"tag":89,"props":426,"children":427},{},[428,433],{"type":42,"tag":93,"props":429,"children":430},{},[431],{"type":48,"value":432},"Actionable",{"type":48,"value":434}," — 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).",{"type":42,"tag":89,"props":436,"children":437},{},[438,442],{"type":42,"tag":93,"props":439,"children":440},{},[441],{"type":48,"value":264},{"type":48,"value":443}," — 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).",{"type":42,"tag":89,"props":445,"children":446},{},[447,452],{"type":42,"tag":93,"props":448,"children":449},{},[450],{"type":48,"value":451},"Resolved",{"type":48,"value":453}," — already addressed, explicitly marked done, or is a positive acknowledgement (e.g., \"LGTM\", \"looks good\")",{"type":42,"tag":51,"props":455,"children":456},{},[457],{"type":48,"value":458},"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.",{"type":42,"tag":69,"props":460,"children":462},{"id":461},"step-4-get-user-approval-one-time-only",[463],{"type":48,"value":464},"Step 4: Get User Approval — ONE time only",{"type":42,"tag":85,"props":466,"children":467},{},[468,473],{"type":42,"tag":89,"props":469,"children":470},{},[471],{"type":48,"value":472},"Present the plan and wait for the user to approve",{"type":42,"tag":89,"props":474,"children":475},{},[476],{"type":48,"value":477},"If the user wants adjustments, update the plan and confirm once more",{"type":42,"tag":51,"props":479,"children":480},{},[481],{"type":42,"tag":93,"props":482,"children":483},{},[484],{"type":48,"value":485},"This is the only confirmation point in the entire workflow. Once the user says yes, go.",{"type":42,"tag":69,"props":487,"children":489},{"id":488},"step-5-apply-and-commit-the-changes",[490],{"type":48,"value":491},"Step 5: Apply and Commit the Changes",{"type":42,"tag":51,"props":493,"children":494},{},[495,500],{"type":42,"tag":93,"props":496,"children":497},{},[498],{"type":48,"value":499},"Do NOT ask the user again.",{"type":48,"value":501}," They already approved. Execute all of these in sequence immediately:",{"type":42,"tag":85,"props":503,"children":504},{},[505,517,529,541],{"type":42,"tag":89,"props":506,"children":507},{},[508,509,515],{"type":48,"value":377},{"type":42,"tag":76,"props":510,"children":512},{"className":511},[],[513],{"type":48,"value":514},"Canva:start-editing-transaction",{"type":48,"value":516}," to begin an editing session",{"type":42,"tag":89,"props":518,"children":519},{},[520,521,527],{"type":48,"value":377},{"type":42,"tag":76,"props":522,"children":524},{"className":523},[],[525],{"type":48,"value":526},"Canva:perform-editing-operations",{"type":48,"value":528}," to make each approved change (batch all operations in a single call where possible)",{"type":42,"tag":89,"props":530,"children":531},{},[532,533,539],{"type":48,"value":377},{"type":42,"tag":76,"props":534,"children":536},{"className":535},[],[537],{"type":48,"value":538},"Canva:commit-editing-transaction",{"type":48,"value":540}," to save — do NOT ask \"shall I commit?\" or \"ready to save?\"",{"type":42,"tag":89,"props":542,"children":543},{},[544],{"type":48,"value":545},"Show the thumbnail from the editing response to the user as confirmation",{"type":42,"tag":69,"props":547,"children":549},{"id":548},"step-7-present-remaining-manual-changes",[550],{"type":48,"value":551},"Step 7: Present Remaining Manual Changes",{"type":42,"tag":51,"props":553,"children":554},{},[555],{"type":48,"value":556},"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:",{"type":42,"tag":558,"props":559,"children":563},"pre",{"className":560,"code":562,"language":48},[561],"language-text","## Changes to make manually in Canva\n\n1. **Slide 3 — Change heading font to Montserrat**\n   Reviewer: @Sarah | Why: API cannot change font family\n   → Open slide 3, select the heading, change font to Montserrat\n\n2. **Slide 7 — Add a new text box for the disclaimer**\n   Reviewer: @James | Why: API cannot add new text elements\n   → Add a text box below the chart with: \"Source: Q3 2025 internal data\"\n\n3. ...\n",[564],{"type":42,"tag":76,"props":565,"children":567},{"__ignoreMap":566},"",[568],{"type":48,"value":562},{"type":42,"tag":51,"props":570,"children":571},{},[572],{"type":48,"value":573},"Include the slide number, what to change, who requested it, and step-by-step instructions so the user can work through the list quickly.",{"type":42,"tag":69,"props":575,"children":577},{"id":576},"step-8-resolve-comment-threads",[578],{"type":48,"value":579},"Step 8: Resolve Comment Threads",{"type":42,"tag":85,"props":581,"children":582},{},[583,596,601],{"type":42,"tag":89,"props":584,"children":585},{},[586,588,594],{"type":48,"value":587},"After committing, call ",{"type":42,"tag":76,"props":589,"children":591},{"className":590},[],[592],{"type":48,"value":593},"Canva:reply-to-comment",{"type":48,"value":595}," on each actionable thread to note what was changed",{"type":42,"tag":89,"props":597,"children":598},{},[599],{"type":48,"value":600},"For \"Requires manual action\" threads, reply noting what was done as the closest alternative and what still needs manual attention",{"type":42,"tag":89,"props":602,"children":603},{},[604],{"type":48,"value":605},"This closes the feedback loop so reviewers can see their comments were addressed",{"type":42,"tag":57,"props":607,"children":609},{"id":608},"rules",[610],{"type":48,"value":611},"Rules",{"type":42,"tag":85,"props":613,"children":614},{},[615,620,625,630,635,640,645],{"type":42,"tag":89,"props":616,"children":617},{},[618],{"type":48,"value":619},"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.",{"type":42,"tag":89,"props":621,"children":622},{},[623],{"type":48,"value":624},"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",{"type":42,"tag":89,"props":626,"children":627},{},[628],{"type":48,"value":629},"When reviewers disagree, present both sides and let the user decide",{"type":42,"tag":89,"props":631,"children":632},{},[633],{"type":48,"value":634},"Show the summary of planned changes and wait for approval ONCE — after that, execute everything without further confirmation",{"type":42,"tag":89,"props":636,"children":637},{},[638],{"type":48,"value":639},"NEVER ask \"shall I commit?\", \"ready to save?\", or any variation — the user's initial approval covers the entire edit-and-commit flow",{"type":42,"tag":89,"props":641,"children":642},{},[643],{"type":48,"value":644},"Manual changes are normal and expected — don't over-explain or apologise for API limitations, just include them in the checklist",{"type":42,"tag":89,"props":646,"children":647},{},[648,650,655],{"type":48,"value":649},"Batch operations: use a single ",{"type":42,"tag":76,"props":651,"children":653},{"className":652},[],[654],{"type":48,"value":81},{"type":48,"value":656}," call with multiple operations rather than one call per change",{"items":658,"total":756},[659,676,692,704,719,732,744],{"slug":660,"name":660,"fn":661,"description":662,"org":663,"tags":664,"stars":25,"repoUrl":26,"updatedAt":675},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[665,668,671,674],{"name":666,"slug":667,"type":15},"Accessibility","accessibility",{"name":669,"slug":670,"type":15},"Charts","charts",{"name":672,"slug":673,"type":15},"Data Visualization","data-visualization",{"name":23,"slug":24,"type":15},"2026-06-30T19:00:57.102",{"slug":677,"name":677,"fn":678,"description":679,"org":680,"tags":681,"stars":25,"repoUrl":26,"updatedAt":691},"adobe-batch-edit-photos","apply consistent photo adjustments","Apply consistent photo adjustments across a set of images so they look like they were edited together. Use this skill whenever the user says \"make my photos look cohesive\", \"give all these the same style\", \"apply a warm and golden feel to all of these\", \"make this cinematic\", \"match the look across my photos\", \"edit all my travel photos the same way\", \"batch edit these\", \"make these consistent\", \"fix my phone photos\", or uploads a folder of photos and wants a unified, polished result. Also triggers for requests like \"apply a preset to all of these\", \"make these look professional\", or \"they were shot in mixed lighting — can you fix them all\". Outputs direct final image URLs plus an in-chat preview grid and optional Firefly Board link. Access: 🔐 Signed-In required | Gen AI: ❌\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[682,685,688],{"name":683,"slug":684,"type":15},"Creative","creative",{"name":686,"slug":687,"type":15},"Editing","editing",{"name":689,"slug":690,"type":15},"Imaging","imaging","2026-08-28T15:09:11.185865",{"slug":693,"name":693,"fn":694,"description":695,"org":696,"tags":697,"stars":25,"repoUrl":26,"updatedAt":703},"adobe-create-mockups","create product and scene mockups","Use when a user wants to see their logo, design, or sketch on a product or scene mockup — mugs, t-shirts, business cards, hats, phone screens, posters, billboards, or similar. Triggers on \"create mockups\", \"show my logo on products\", or any logo upload with a request to visualize it on items. Access: 🔐 Signed-In required | Gen AI: ✅ Adobe Firefly via `image_generate` used for design creation, sketch polishing, and mockup scene generation\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[698,699,700],{"name":683,"slug":684,"type":15},{"name":23,"slug":24,"type":15},{"name":701,"slug":702,"type":15},"Graphics","graphics","2026-08-28T15:09:07.42507",{"slug":705,"name":705,"fn":706,"description":707,"org":708,"tags":709,"stars":25,"repoUrl":26,"updatedAt":718},"adobe-create-social-variations","export platform-ready social media assets","Resize, crop, or export any image or video into platform-ready social media assets using Adobe Creative Cloud tools. Use this skill when a user wants to prepare a photo, image, or video for one or more social platforms — Instagram, TikTok, LinkedIn, Facebook, YouTube, Snapchat, Pinterest, Threads, or X\u002FTwitter. Triggers on: \"prepare my image for Instagram\", \"resize for TikTok\", \"get this ready to post\", \"make versions for all platforms\", \"social media sizes\", \"crop for stories\", \"export for LinkedIn\", \"resize my video for social\", \"make social media assets\", or any request to adapt a photo or video for specific platforms. Handles subject-aware cropping, AI canvas expansion, test previews before full runs, and same-ratio video resizing.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[710,711,712,715],{"name":683,"slug":684,"type":15},{"name":701,"slug":702,"type":15},{"name":713,"slug":714,"type":15},"Marketing","marketing",{"name":716,"slug":717,"type":15},"Social Media","social-media","2026-08-28T15:10:07.282096",{"slug":720,"name":720,"fn":721,"description":722,"org":723,"tags":724,"stars":25,"repoUrl":26,"updatedAt":731},"adobe-design-from-template","create visual designs from templates","Create any visual design using Adobe Express templates — flyers, posters, social media posts (Instagram, Facebook, LinkedIn), business cards, invitations, greeting cards, resumes, cover letters, brochures, newsletters, certificates, presentations, YouTube thumbnails, email headers, logos, menus, and labels. Use this skill whenever the user wants to make, design, or build any visual — even if they just say \"make me a flyer\", \"design a poster\", \"I need something for Instagram\", \"create an event invite\", or \"make a business card\". Also handles browsing templates, editing text, replacing images, changing backgrounds, animating, and exporting designs. Access: 🔐 Signed-In required | Gen AI: ❌ by default — image replacement only where the surface permits generative AI (e.g. Codex); none on Claude\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[725,726,727,728],{"name":683,"slug":684,"type":15},{"name":23,"slug":24,"type":15},{"name":701,"slug":702,"type":15},{"name":729,"slug":730,"type":15},"Templates","templates","2026-08-28T15:10:03.050113",{"slug":733,"name":733,"fn":734,"description":735,"org":736,"tags":737,"stars":25,"repoUrl":26,"updatedAt":743},"adobe-edit-quick-cut","create video sizzle reels","Create a punchy sizzle reel from a video using Adobe Quick Cut. Use this skill whenever a user wants to cut, trim, or shorten a video into highlights — including phrases like \"make a sizzle reel\", \"make a highlight reel\", \"quick cut this\", \"cut the best parts\", \"shorten this video\", \"make a highlight clip\", \"summarize this video visually\", or any request to produce a shorter edited version of a video. Use this skill for Quick Cut requests before suggesting manual editing in Premiere. Requires the user to upload a video file.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[738,739,740],{"name":683,"slug":684,"type":15},{"name":686,"slug":687,"type":15},{"name":741,"slug":742,"type":15},"Video","video","2026-08-28T15:09:07.765245",{"slug":745,"name":745,"fn":746,"description":747,"org":748,"tags":749,"stars":25,"repoUrl":26,"updatedAt":755},"adobe-retouch-portraits","batch retouch portrait photos","Bulk-retouch a folder of portrait photos using Adobe tools — designed for wedding photographers and event photographers who need fast, walk-away batch processing. Use this skill when the user says \"retouch my photos\", \"batch process these portraits\", \"process my wedding photos\", \"clean up this folder of images\", \"run my headshots through Adobe\", or uploads\u002Fselects a folder of photos and wants them polished and ready to review. Automatically applies auto-straighten, auto-tone, and auto-light to every image. Outputs a preview grid and download folder. Access: 🔐 Signed-In required | Gen AI: ❌ by default — optional background-only cleanup only where the surface permits generative AI (e.g. Codex); none on Claude\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[750,751,752],{"name":683,"slug":684,"type":15},{"name":689,"slug":690,"type":15},{"name":753,"slug":754,"type":15},"Photography","photography","2026-08-28T15:09:10.386974",499,{"items":758,"total":959},[759,780,803,820,836,855,874,888,904,918,930,943],{"slug":760,"name":760,"fn":761,"description":762,"org":763,"tags":764,"stars":777,"repoUrl":778,"updatedAt":779},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[765,768,771,774],{"name":766,"slug":767,"type":15},"Documents","documents",{"name":769,"slug":770,"type":15},"Healthcare","healthcare",{"name":772,"slug":773,"type":15},"Insurance","insurance",{"name":775,"slug":776,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-08-02T05:48:07.395855",{"slug":781,"name":781,"fn":782,"description":783,"org":784,"tags":785,"stars":800,"repoUrl":801,"updatedAt":802},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[786,789,791,794,797],{"name":787,"slug":788,"type":15},".NET","dotnet",{"name":790,"slug":781,"type":15},"ASP.NET Core",{"name":792,"slug":793,"type":15},"Blazor","blazor",{"name":795,"slug":796,"type":15},"C#","csharp",{"name":798,"slug":799,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":804,"name":804,"fn":805,"description":806,"org":807,"tags":808,"stars":800,"repoUrl":801,"updatedAt":819},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[809,812,815,818],{"name":810,"slug":811,"type":15},"Apps SDK","apps-sdk",{"name":813,"slug":814,"type":15},"ChatGPT","chatgpt",{"name":816,"slug":817,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":821,"name":821,"fn":822,"description":823,"org":824,"tags":825,"stars":800,"repoUrl":801,"updatedAt":835},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[826,829,832],{"name":827,"slug":828,"type":15},"API Development","api-development",{"name":830,"slug":831,"type":15},"CLI","cli",{"name":833,"slug":834,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":837,"name":837,"fn":838,"description":839,"org":840,"tags":841,"stars":800,"repoUrl":801,"updatedAt":854},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[842,845,848,851],{"name":843,"slug":844,"type":15},"Cloudflare","cloudflare",{"name":846,"slug":847,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":849,"slug":850,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":852,"slug":853,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":856,"name":856,"fn":857,"description":858,"org":859,"tags":860,"stars":800,"repoUrl":801,"updatedAt":873},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[861,864,867,870],{"name":862,"slug":863,"type":15},"Productivity","productivity",{"name":865,"slug":866,"type":15},"Project Management","project-management",{"name":868,"slug":869,"type":15},"Strategy","strategy",{"name":871,"slug":872,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":875,"name":875,"fn":876,"description":877,"org":878,"tags":879,"stars":800,"repoUrl":801,"updatedAt":887},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[880,881,883,886],{"name":23,"slug":24,"type":15},{"name":882,"slug":875,"type":15},"Figma",{"name":884,"slug":885,"type":15},"Frontend","frontend",{"name":816,"slug":817,"type":15},"2026-04-12T05:06:47.939943",{"slug":889,"name":889,"fn":890,"description":891,"org":892,"tags":893,"stars":800,"repoUrl":801,"updatedAt":903},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[894,895,898,899,900],{"name":23,"slug":24,"type":15},{"name":896,"slug":897,"type":15},"Design System","design-system",{"name":882,"slug":875,"type":15},{"name":884,"slug":885,"type":15},{"name":901,"slug":902,"type":15},"UI Components","ui-components","2026-05-10T05:59:52.971881",{"slug":905,"name":905,"fn":906,"description":907,"org":908,"tags":909,"stars":800,"repoUrl":801,"updatedAt":917},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[910,911,912,915,916],{"name":23,"slug":24,"type":15},{"name":896,"slug":897,"type":15},{"name":913,"slug":914,"type":15},"Documentation","documentation",{"name":882,"slug":875,"type":15},{"name":884,"slug":885,"type":15},"2026-05-16T06:07:47.821474",{"slug":919,"name":919,"fn":920,"description":921,"org":922,"tags":923,"stars":800,"repoUrl":801,"updatedAt":929},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[924,925,926,927,928],{"name":23,"slug":24,"type":15},{"name":882,"slug":875,"type":15},{"name":884,"slug":885,"type":15},{"name":901,"slug":902,"type":15},{"name":798,"slug":799,"type":15},"2026-05-16T06:07:40.583615",{"slug":931,"name":931,"fn":932,"description":933,"org":934,"tags":935,"stars":800,"repoUrl":801,"updatedAt":942},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[936,939,940,941],{"name":937,"slug":938,"type":15},"Animation","animation",{"name":833,"slug":834,"type":15},{"name":683,"slug":684,"type":15},{"name":23,"slug":24,"type":15},"2026-05-02T05:31:48.48485",{"slug":944,"name":944,"fn":945,"description":946,"org":947,"tags":948,"stars":800,"repoUrl":801,"updatedAt":958},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[949,950,951,954,957],{"name":683,"slug":684,"type":15},{"name":23,"slug":24,"type":15},{"name":952,"slug":953,"type":15},"Image Generation","image-generation",{"name":955,"slug":956,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",578]