[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-canva-edit-design":3,"mdc--20vboa-key":36,"related-repo-openai-canva-edit-design":766,"related-org-openai-canva-edit-design":864},{"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-edit-design","edit and reformat existing Canva designs","Make edits to an existing Canva design — change or fix text, replace\u002Finsert\u002Fdelete 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.",{"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},"Editing","editing",{"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:10:01.952811",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-edit-design","---\nname: canva-edit-design\ndescription: Make edits to an existing Canva design — change or fix text, replace\u002Finsert\u002Fdelete 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.\n---\n\n# Canva Design Editing\n\nThe 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.\n\n## The Transaction Protocol (always these steps, in order)\n\n1. **`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.\n2. **`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.\n3. **`Canva:commit-editing-transaction`** — save. See the approval gate below. After committing, the `transaction_id` is invalid; a new edit needs a new transaction.\n4. **`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).\n\n## Capabilities — what the API CAN and CANNOT do\n\n### CAN (operations on `perform-editing-operations`)\n- **Text content**: `replace_text` (whole element), `find_and_replace_text` (substring)\n- **Text formatting** (`format_text`): font size, weight (normal\u002Fbold), style (normal\u002Fitalic), color, alignment, line height, underline, strikethrough, links, list level\u002Fmarker\n- **Media**: `update_fill` (replace image\u002Fvideo), `insert_fill` (add image\u002Fvideo), `delete_element`\n- **Layout**: `position_element`, `resize_element`\n- **Metadata**: `update_title`\n- **Autofill mapping**: `update_autofill_field` (fixed-page designs only)\n\n### CANNOT\n- Change font **family\u002Ftypeface** (only size, weight, style)\n- Add **new text elements** (you can only insert media, not new text boxes)\n- Change background colors or gradients\n- Add, remove, or reorder pages\u002Fslides\n- Modify animations, transitions, or element opacity (except on newly inserted fills)\n- Group\u002Fungroup elements, or restyle shapes (only text inside shapes is editable)\n\nWhen 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.\n\n## Responsive pages — restricted operation set\n\nSome pages come back marked `is_responsive: true`. On those pages, ONLY these operations are allowed:\n`update_title`, `replace_text`, `update_fill`, `delete_element`, `find_and_replace_text`.\n\nBefore 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.\n\n## The commit approval gate (required)\n\n`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.\n\n- Do NOT commit without approval.\n- Do NOT tell the user changes are saved before the commit call has succeeded.\n- After a successful commit, give the user a direct link to open the design in Canva.\n- If a commit fails, all changes are lost — start a new transaction to retry.\n\n> 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.\n\n## Workflow\n\n### Step 1: Resolve the design\n- Short link (`canva.link\u002F...`) → `Canva:resolve-shortlink` to get the URL.\n- Full Canva URL → extract the design ID (the segment after `\u002Fdesign\u002F`).\n- Raw design ID (starts with `D`) → use directly; do NOT search.\n- Nothing provided → ask for the design ID or link.\n\n### Step 2: Start the transaction and inspect\nCall `Canva:start-editing-transaction`. Show the thumbnail(s). Use the returned content to locate the exact `element_id`s you need to target. (If you only needed to look, call `cancel-editing-transaction` and stop.)\n\n### Step 3: Build and perform operations\nTranslate 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.\n\n### Step 4: Preview and commit\nShow the resulting thumbnail and a plain-language list of what changed. Ask for approval, then `commit-editing-transaction`. Share the edit link.\n\n## Rules\n- Always remember and reuse the `transaction_id` and `pages` array within a transaction.\n- Never leave a transaction uncommitted without telling the user their draft was discarded.\n- For destructive ops (`delete_element`, large `find_and_replace_text`), confirm scope before performing.\n- Prefer one batched `perform-editing-operations` call over many small ones.\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,50,64,71,194,200,215,349,355,402,407,413,457,501,507,518,541,558,564,570,625,631,659,665,684,690,702,708],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"canva-design-editing",[47],{"type":48,"value":49},"text","Canva Design Editing",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54,56,62],{"type":48,"value":55},"The canonical, safe way to apply edits to an existing Canva design. Every Canva skill that mutates a design should follow this exact protocol: ",{"type":42,"tag":57,"props":58,"children":59},"strong",{},[60],{"type":48,"value":61},"start a transaction → perform operations → commit (with approval)",{"type":48,"value":63},". Changes are draft-only until committed and are PERMANENTLY LOST if not committed.",{"type":42,"tag":65,"props":66,"children":68},"h2",{"id":67},"the-transaction-protocol-always-these-steps-in-order",[69],{"type":48,"value":70},"The Transaction Protocol (always these steps, in order)",{"type":42,"tag":72,"props":73,"children":74},"ol",{},[75,115,159,180],{"type":42,"tag":76,"props":77,"children":78},"li",{},[79,89,91,97,99,105,107,113],{"type":42,"tag":57,"props":80,"children":81},{},[82],{"type":42,"tag":83,"props":84,"children":86},"code",{"className":85},[],[87],{"type":48,"value":88},"Canva:start-editing-transaction",{"type":48,"value":90}," — pass the ",{"type":42,"tag":83,"props":92,"children":94},{"className":93},[],[95],{"type":48,"value":96},"design_id",{"type":48,"value":98},". Remember the returned ",{"type":42,"tag":83,"props":100,"children":102},{"className":101},[],[103],{"type":48,"value":104},"transaction_id",{"type":48,"value":106}," and the ",{"type":42,"tag":83,"props":108,"children":110},{"className":109},[],[111],{"type":48,"value":112},"pages",{"type":48,"value":114}," array; both are required by later calls. ALWAYS show the user the thumbnail(s) returned here.",{"type":42,"tag":76,"props":116,"children":117},{},[118,127,129,134,136,141,143,149,151,157],{"type":42,"tag":57,"props":119,"children":120},{},[121],{"type":42,"tag":83,"props":122,"children":124},{"className":123},[],[125],{"type":48,"value":126},"Canva:perform-editing-operations",{"type":48,"value":128}," — apply edits. Pass the ",{"type":42,"tag":83,"props":130,"children":132},{"className":131},[],[133],{"type":48,"value":104},{"type":48,"value":135},", the ",{"type":42,"tag":83,"props":137,"children":139},{"className":138},[],[140],{"type":48,"value":112},{"type":48,"value":142}," array from the previous response, the ",{"type":42,"tag":83,"props":144,"children":146},{"className":145},[],[147],{"type":48,"value":148},"page_index",{"type":48,"value":150}," of the first page being changed, and an ",{"type":42,"tag":83,"props":152,"children":154},{"className":153},[],[155],{"type":48,"value":156},"operations",{"type":48,"value":158}," array. Batch multiple operations into a single call wherever possible.",{"type":42,"tag":76,"props":160,"children":161},{},[162,171,173,178],{"type":42,"tag":57,"props":163,"children":164},{},[165],{"type":42,"tag":83,"props":166,"children":168},{"className":167},[],[169],{"type":48,"value":170},"Canva:commit-editing-transaction",{"type":48,"value":172}," — save. See the approval gate below. After committing, the ",{"type":42,"tag":83,"props":174,"children":176},{"className":175},[],[177],{"type":48,"value":104},{"type":48,"value":179}," is invalid; a new edit needs a new transaction.",{"type":42,"tag":76,"props":181,"children":182},{},[183,192],{"type":42,"tag":57,"props":184,"children":185},{},[186],{"type":42,"tag":83,"props":187,"children":189},{"className":188},[],[190],{"type":48,"value":191},"Canva:cancel-editing-transaction",{"type":48,"value":193}," — discard the draft instead of saving (e.g. the user rejects the preview, or you opened a transaction only to inspect the design).",{"type":42,"tag":65,"props":195,"children":197},{"id":196},"capabilities-what-the-api-can-and-cannot-do",[198],{"type":48,"value":199},"Capabilities — what the API CAN and CANNOT do",{"type":42,"tag":201,"props":202,"children":204},"h3",{"id":203},"can-operations-on-perform-editing-operations",[205,207,213],{"type":48,"value":206},"CAN (operations on ",{"type":42,"tag":83,"props":208,"children":210},{"className":209},[],[211],{"type":48,"value":212},"perform-editing-operations",{"type":48,"value":214},")",{"type":42,"tag":216,"props":217,"children":218},"ul",{},[219,245,263,294,317,332],{"type":42,"tag":76,"props":220,"children":221},{},[222,227,229,235,237,243],{"type":42,"tag":57,"props":223,"children":224},{},[225],{"type":48,"value":226},"Text content",{"type":48,"value":228},": ",{"type":42,"tag":83,"props":230,"children":232},{"className":231},[],[233],{"type":48,"value":234},"replace_text",{"type":48,"value":236}," (whole element), ",{"type":42,"tag":83,"props":238,"children":240},{"className":239},[],[241],{"type":48,"value":242},"find_and_replace_text",{"type":48,"value":244}," (substring)",{"type":42,"tag":76,"props":246,"children":247},{},[248,253,255,261],{"type":42,"tag":57,"props":249,"children":250},{},[251],{"type":48,"value":252},"Text formatting",{"type":48,"value":254}," (",{"type":42,"tag":83,"props":256,"children":258},{"className":257},[],[259],{"type":48,"value":260},"format_text",{"type":48,"value":262},"): font size, weight (normal\u002Fbold), style (normal\u002Fitalic), color, alignment, line height, underline, strikethrough, links, list level\u002Fmarker",{"type":42,"tag":76,"props":264,"children":265},{},[266,271,272,278,280,286,288],{"type":42,"tag":57,"props":267,"children":268},{},[269],{"type":48,"value":270},"Media",{"type":48,"value":228},{"type":42,"tag":83,"props":273,"children":275},{"className":274},[],[276],{"type":48,"value":277},"update_fill",{"type":48,"value":279}," (replace image\u002Fvideo), ",{"type":42,"tag":83,"props":281,"children":283},{"className":282},[],[284],{"type":48,"value":285},"insert_fill",{"type":48,"value":287}," (add image\u002Fvideo), ",{"type":42,"tag":83,"props":289,"children":291},{"className":290},[],[292],{"type":48,"value":293},"delete_element",{"type":42,"tag":76,"props":295,"children":296},{},[297,302,303,309,311],{"type":42,"tag":57,"props":298,"children":299},{},[300],{"type":48,"value":301},"Layout",{"type":48,"value":228},{"type":42,"tag":83,"props":304,"children":306},{"className":305},[],[307],{"type":48,"value":308},"position_element",{"type":48,"value":310},", ",{"type":42,"tag":83,"props":312,"children":314},{"className":313},[],[315],{"type":48,"value":316},"resize_element",{"type":42,"tag":76,"props":318,"children":319},{},[320,325,326],{"type":42,"tag":57,"props":321,"children":322},{},[323],{"type":48,"value":324},"Metadata",{"type":48,"value":228},{"type":42,"tag":83,"props":327,"children":329},{"className":328},[],[330],{"type":48,"value":331},"update_title",{"type":42,"tag":76,"props":333,"children":334},{},[335,340,341,347],{"type":42,"tag":57,"props":336,"children":337},{},[338],{"type":48,"value":339},"Autofill mapping",{"type":48,"value":228},{"type":42,"tag":83,"props":342,"children":344},{"className":343},[],[345],{"type":48,"value":346},"update_autofill_field",{"type":48,"value":348}," (fixed-page designs only)",{"type":42,"tag":201,"props":350,"children":352},{"id":351},"cannot",[353],{"type":48,"value":354},"CANNOT",{"type":42,"tag":216,"props":356,"children":357},{},[358,370,382,387,392,397],{"type":42,"tag":76,"props":359,"children":360},{},[361,363,368],{"type":48,"value":362},"Change font ",{"type":42,"tag":57,"props":364,"children":365},{},[366],{"type":48,"value":367},"family\u002Ftypeface",{"type":48,"value":369}," (only size, weight, style)",{"type":42,"tag":76,"props":371,"children":372},{},[373,375,380],{"type":48,"value":374},"Add ",{"type":42,"tag":57,"props":376,"children":377},{},[378],{"type":48,"value":379},"new text elements",{"type":48,"value":381}," (you can only insert media, not new text boxes)",{"type":42,"tag":76,"props":383,"children":384},{},[385],{"type":48,"value":386},"Change background colors or gradients",{"type":42,"tag":76,"props":388,"children":389},{},[390],{"type":48,"value":391},"Add, remove, or reorder pages\u002Fslides",{"type":42,"tag":76,"props":393,"children":394},{},[395],{"type":48,"value":396},"Modify animations, transitions, or element opacity (except on newly inserted fills)",{"type":42,"tag":76,"props":398,"children":399},{},[400],{"type":48,"value":401},"Group\u002Fungroup elements, or restyle shapes (only text inside shapes is editable)",{"type":42,"tag":51,"props":403,"children":404},{},[405],{"type":48,"value":406},"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.",{"type":42,"tag":65,"props":408,"children":410},{"id":409},"responsive-pages-restricted-operation-set",[411],{"type":48,"value":412},"Responsive pages — restricted operation set",{"type":42,"tag":51,"props":414,"children":415},{},[416,418,424,426,431,432,437,438,443,444,449,450,455],{"type":48,"value":417},"Some pages come back marked ",{"type":42,"tag":83,"props":419,"children":421},{"className":420},[],[422],{"type":48,"value":423},"is_responsive: true",{"type":48,"value":425},". On those pages, ONLY these operations are allowed:\n",{"type":42,"tag":83,"props":427,"children":429},{"className":428},[],[430],{"type":48,"value":331},{"type":48,"value":310},{"type":42,"tag":83,"props":433,"children":435},{"className":434},[],[436],{"type":48,"value":234},{"type":48,"value":310},{"type":42,"tag":83,"props":439,"children":441},{"className":440},[],[442],{"type":48,"value":277},{"type":48,"value":310},{"type":42,"tag":83,"props":445,"children":447},{"className":446},[],[448],{"type":48,"value":293},{"type":48,"value":310},{"type":42,"tag":83,"props":451,"children":453},{"className":452},[],[454],{"type":48,"value":242},{"type":48,"value":456},".",{"type":42,"tag":51,"props":458,"children":459},{},[460,462,467,469,474,476,481,482,487,488,493,494,499],{"type":48,"value":461},"Before calling ",{"type":42,"tag":83,"props":463,"children":465},{"className":464},[],[466],{"type":48,"value":212},{"type":48,"value":468},", check the ",{"type":42,"tag":83,"props":470,"children":472},{"className":471},[],[473],{"type":48,"value":112},{"type":48,"value":475}," array. If any operation targets a responsive page with an unsupported op (e.g. ",{"type":42,"tag":83,"props":477,"children":479},{"className":478},[],[480],{"type":48,"value":260},{"type":48,"value":310},{"type":42,"tag":83,"props":483,"children":485},{"className":484},[],[486],{"type":48,"value":308},{"type":48,"value":310},{"type":42,"tag":83,"props":489,"children":491},{"className":490},[],[492],{"type":48,"value":316},{"type":48,"value":310},{"type":42,"tag":83,"props":495,"children":497},{"className":496},[],[498],{"type":48,"value":285},{"type":48,"value":500},"), do NOT make the call — tell the user that operation isn't supported on that page and offer an alternative.",{"type":42,"tag":65,"props":502,"children":504},{"id":503},"the-commit-approval-gate-required",[505],{"type":48,"value":506},"The commit approval gate (required)",{"type":42,"tag":51,"props":508,"children":509},{},[510,516],{"type":42,"tag":83,"props":511,"children":513},{"className":512},[],[514],{"type":48,"value":515},"commit-editing-transaction",{"type":48,"value":517}," 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.",{"type":42,"tag":216,"props":519,"children":520},{},[521,526,531,536],{"type":42,"tag":76,"props":522,"children":523},{},[524],{"type":48,"value":525},"Do NOT commit without approval.",{"type":42,"tag":76,"props":527,"children":528},{},[529],{"type":48,"value":530},"Do NOT tell the user changes are saved before the commit call has succeeded.",{"type":42,"tag":76,"props":532,"children":533},{},[534],{"type":48,"value":535},"After a successful commit, give the user a direct link to open the design in Canva.",{"type":42,"tag":76,"props":537,"children":538},{},[539],{"type":48,"value":540},"If a commit fails, all changes are lost — start a new transaction to retry.",{"type":42,"tag":542,"props":543,"children":544},"blockquote",{},[545],{"type":42,"tag":51,"props":546,"children":547},{},[548,550,556],{"type":48,"value":549},"Note for composing skills: a skill that already collects a single up-front approval for a batch of changes (e.g. ",{"type":42,"tag":83,"props":551,"children":553},{"className":552},[],[554],{"type":48,"value":555},"canva-implement-feedback",{"type":48,"value":557},") 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.",{"type":42,"tag":65,"props":559,"children":561},{"id":560},"workflow",[562],{"type":48,"value":563},"Workflow",{"type":42,"tag":201,"props":565,"children":567},{"id":566},"step-1-resolve-the-design",[568],{"type":48,"value":569},"Step 1: Resolve the design",{"type":42,"tag":216,"props":571,"children":572},{},[573,594,607,620],{"type":42,"tag":76,"props":574,"children":575},{},[576,578,584,586,592],{"type":48,"value":577},"Short link (",{"type":42,"tag":83,"props":579,"children":581},{"className":580},[],[582],{"type":48,"value":583},"canva.link\u002F...",{"type":48,"value":585},") → ",{"type":42,"tag":83,"props":587,"children":589},{"className":588},[],[590],{"type":48,"value":591},"Canva:resolve-shortlink",{"type":48,"value":593}," to get the URL.",{"type":42,"tag":76,"props":595,"children":596},{},[597,599,605],{"type":48,"value":598},"Full Canva URL → extract the design ID (the segment after ",{"type":42,"tag":83,"props":600,"children":602},{"className":601},[],[603],{"type":48,"value":604},"\u002Fdesign\u002F",{"type":48,"value":606},").",{"type":42,"tag":76,"props":608,"children":609},{},[610,612,618],{"type":48,"value":611},"Raw design ID (starts with ",{"type":42,"tag":83,"props":613,"children":615},{"className":614},[],[616],{"type":48,"value":617},"D",{"type":48,"value":619},") → use directly; do NOT search.",{"type":42,"tag":76,"props":621,"children":622},{},[623],{"type":48,"value":624},"Nothing provided → ask for the design ID or link.",{"type":42,"tag":201,"props":626,"children":628},{"id":627},"step-2-start-the-transaction-and-inspect",[629],{"type":48,"value":630},"Step 2: Start the transaction and inspect",{"type":42,"tag":51,"props":632,"children":633},{},[634,636,641,643,649,651,657],{"type":48,"value":635},"Call ",{"type":42,"tag":83,"props":637,"children":639},{"className":638},[],[640],{"type":48,"value":88},{"type":48,"value":642},". Show the thumbnail(s). Use the returned content to locate the exact ",{"type":42,"tag":83,"props":644,"children":646},{"className":645},[],[647],{"type":48,"value":648},"element_id",{"type":48,"value":650},"s you need to target. (If you only needed to look, call ",{"type":42,"tag":83,"props":652,"children":654},{"className":653},[],[655],{"type":48,"value":656},"cancel-editing-transaction",{"type":48,"value":658}," and stop.)",{"type":42,"tag":201,"props":660,"children":662},{"id":661},"step-3-build-and-perform-operations",[663],{"type":48,"value":664},"Step 3: Build and perform operations",{"type":42,"tag":51,"props":666,"children":667},{},[668,670,675,677,682],{"type":48,"value":669},"Translate the user's request into concrete operations. Confirm scope first when a ",{"type":42,"tag":83,"props":671,"children":673},{"className":672},[],[674],{"type":48,"value":242},{"type":48,"value":676}," string could match in multiple places or contexts — ask which instances they mean. Batch all operations into one ",{"type":42,"tag":83,"props":678,"children":680},{"className":679},[],[681],{"type":48,"value":212},{"type":48,"value":683}," call when you can.",{"type":42,"tag":201,"props":685,"children":687},{"id":686},"step-4-preview-and-commit",[688],{"type":48,"value":689},"Step 4: Preview and commit",{"type":42,"tag":51,"props":691,"children":692},{},[693,695,700],{"type":48,"value":694},"Show the resulting thumbnail and a plain-language list of what changed. Ask for approval, then ",{"type":42,"tag":83,"props":696,"children":698},{"className":697},[],[699],{"type":48,"value":515},{"type":48,"value":701},". Share the edit link.",{"type":42,"tag":65,"props":703,"children":705},{"id":704},"rules",[706],{"type":48,"value":707},"Rules",{"type":42,"tag":216,"props":709,"children":710},{},[711,730,735,754],{"type":42,"tag":76,"props":712,"children":713},{},[714,716,721,723,728],{"type":48,"value":715},"Always remember and reuse the ",{"type":42,"tag":83,"props":717,"children":719},{"className":718},[],[720],{"type":48,"value":104},{"type":48,"value":722}," and ",{"type":42,"tag":83,"props":724,"children":726},{"className":725},[],[727],{"type":48,"value":112},{"type":48,"value":729}," array within a transaction.",{"type":42,"tag":76,"props":731,"children":732},{},[733],{"type":48,"value":734},"Never leave a transaction uncommitted without telling the user their draft was discarded.",{"type":42,"tag":76,"props":736,"children":737},{},[738,740,745,747,752],{"type":48,"value":739},"For destructive ops (",{"type":42,"tag":83,"props":741,"children":743},{"className":742},[],[744],{"type":48,"value":293},{"type":48,"value":746},", large ",{"type":42,"tag":83,"props":748,"children":750},{"className":749},[],[751],{"type":48,"value":242},{"type":48,"value":753},"), confirm scope before performing.",{"type":42,"tag":76,"props":755,"children":756},{},[757,759,764],{"type":48,"value":758},"Prefer one batched ",{"type":42,"tag":83,"props":760,"children":762},{"className":761},[],[763],{"type":48,"value":212},{"type":48,"value":765}," call over many small ones.",{"items":767,"total":863},[768,785,799,811,826,839,851],{"slug":769,"name":769,"fn":770,"description":771,"org":772,"tags":773,"stars":25,"repoUrl":26,"updatedAt":784},"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},[774,777,780,783],{"name":775,"slug":776,"type":15},"Accessibility","accessibility",{"name":778,"slug":779,"type":15},"Charts","charts",{"name":781,"slug":782,"type":15},"Data Visualization","data-visualization",{"name":23,"slug":24,"type":15},"2026-06-30T19:00:57.102",{"slug":786,"name":786,"fn":787,"description":788,"org":789,"tags":790,"stars":25,"repoUrl":26,"updatedAt":798},"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},[791,794,795],{"name":792,"slug":793,"type":15},"Creative","creative",{"name":17,"slug":18,"type":15},{"name":796,"slug":797,"type":15},"Imaging","imaging","2026-08-28T15:09:11.185865",{"slug":800,"name":800,"fn":801,"description":802,"org":803,"tags":804,"stars":25,"repoUrl":26,"updatedAt":810},"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},[805,806,807],{"name":792,"slug":793,"type":15},{"name":23,"slug":24,"type":15},{"name":808,"slug":809,"type":15},"Graphics","graphics","2026-08-28T15:09:07.42507",{"slug":812,"name":812,"fn":813,"description":814,"org":815,"tags":816,"stars":25,"repoUrl":26,"updatedAt":825},"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},[817,818,819,822],{"name":792,"slug":793,"type":15},{"name":808,"slug":809,"type":15},{"name":820,"slug":821,"type":15},"Marketing","marketing",{"name":823,"slug":824,"type":15},"Social Media","social-media","2026-08-28T15:10:07.282096",{"slug":827,"name":827,"fn":828,"description":829,"org":830,"tags":831,"stars":25,"repoUrl":26,"updatedAt":838},"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},[832,833,834,835],{"name":792,"slug":793,"type":15},{"name":23,"slug":24,"type":15},{"name":808,"slug":809,"type":15},{"name":836,"slug":837,"type":15},"Templates","templates","2026-08-28T15:10:03.050113",{"slug":840,"name":840,"fn":841,"description":842,"org":843,"tags":844,"stars":25,"repoUrl":26,"updatedAt":850},"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},[845,846,847],{"name":792,"slug":793,"type":15},{"name":17,"slug":18,"type":15},{"name":848,"slug":849,"type":15},"Video","video","2026-08-28T15:09:07.765245",{"slug":852,"name":852,"fn":853,"description":854,"org":855,"tags":856,"stars":25,"repoUrl":26,"updatedAt":862},"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},[857,858,859],{"name":792,"slug":793,"type":15},{"name":796,"slug":797,"type":15},{"name":860,"slug":861,"type":15},"Photography","photography","2026-08-28T15:09:10.386974",499,{"items":865,"total":1066},[866,887,910,927,943,962,981,995,1011,1025,1037,1050],{"slug":867,"name":867,"fn":868,"description":869,"org":870,"tags":871,"stars":884,"repoUrl":885,"updatedAt":886},"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},[872,875,878,881],{"name":873,"slug":874,"type":15},"Documents","documents",{"name":876,"slug":877,"type":15},"Healthcare","healthcare",{"name":879,"slug":880,"type":15},"Insurance","insurance",{"name":882,"slug":883,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-08-02T05:48:07.395855",{"slug":888,"name":888,"fn":889,"description":890,"org":891,"tags":892,"stars":907,"repoUrl":908,"updatedAt":909},"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},[893,896,898,901,904],{"name":894,"slug":895,"type":15},".NET","dotnet",{"name":897,"slug":888,"type":15},"ASP.NET Core",{"name":899,"slug":900,"type":15},"Blazor","blazor",{"name":902,"slug":903,"type":15},"C#","csharp",{"name":905,"slug":906,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":911,"name":911,"fn":912,"description":913,"org":914,"tags":915,"stars":907,"repoUrl":908,"updatedAt":926},"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},[916,919,922,925],{"name":917,"slug":918,"type":15},"Apps SDK","apps-sdk",{"name":920,"slug":921,"type":15},"ChatGPT","chatgpt",{"name":923,"slug":924,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":928,"name":928,"fn":929,"description":930,"org":931,"tags":932,"stars":907,"repoUrl":908,"updatedAt":942},"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},[933,936,939],{"name":934,"slug":935,"type":15},"API Development","api-development",{"name":937,"slug":938,"type":15},"CLI","cli",{"name":940,"slug":941,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":944,"name":944,"fn":945,"description":946,"org":947,"tags":948,"stars":907,"repoUrl":908,"updatedAt":961},"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},[949,952,955,958],{"name":950,"slug":951,"type":15},"Cloudflare","cloudflare",{"name":953,"slug":954,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":956,"slug":957,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":959,"slug":960,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":963,"name":963,"fn":964,"description":965,"org":966,"tags":967,"stars":907,"repoUrl":908,"updatedAt":980},"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},[968,971,974,977],{"name":969,"slug":970,"type":15},"Productivity","productivity",{"name":972,"slug":973,"type":15},"Project Management","project-management",{"name":975,"slug":976,"type":15},"Strategy","strategy",{"name":978,"slug":979,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":982,"name":982,"fn":983,"description":984,"org":985,"tags":986,"stars":907,"repoUrl":908,"updatedAt":994},"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},[987,988,990,993],{"name":23,"slug":24,"type":15},{"name":989,"slug":982,"type":15},"Figma",{"name":991,"slug":992,"type":15},"Frontend","frontend",{"name":923,"slug":924,"type":15},"2026-04-12T05:06:47.939943",{"slug":996,"name":996,"fn":997,"description":998,"org":999,"tags":1000,"stars":907,"repoUrl":908,"updatedAt":1010},"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},[1001,1002,1005,1006,1007],{"name":23,"slug":24,"type":15},{"name":1003,"slug":1004,"type":15},"Design System","design-system",{"name":989,"slug":982,"type":15},{"name":991,"slug":992,"type":15},{"name":1008,"slug":1009,"type":15},"UI Components","ui-components","2026-05-10T05:59:52.971881",{"slug":1012,"name":1012,"fn":1013,"description":1014,"org":1015,"tags":1016,"stars":907,"repoUrl":908,"updatedAt":1024},"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},[1017,1018,1019,1022,1023],{"name":23,"slug":24,"type":15},{"name":1003,"slug":1004,"type":15},{"name":1020,"slug":1021,"type":15},"Documentation","documentation",{"name":989,"slug":982,"type":15},{"name":991,"slug":992,"type":15},"2026-05-16T06:07:47.821474",{"slug":1026,"name":1026,"fn":1027,"description":1028,"org":1029,"tags":1030,"stars":907,"repoUrl":908,"updatedAt":1036},"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},[1031,1032,1033,1034,1035],{"name":23,"slug":24,"type":15},{"name":989,"slug":982,"type":15},{"name":991,"slug":992,"type":15},{"name":1008,"slug":1009,"type":15},{"name":905,"slug":906,"type":15},"2026-05-16T06:07:40.583615",{"slug":1038,"name":1038,"fn":1039,"description":1040,"org":1041,"tags":1042,"stars":907,"repoUrl":908,"updatedAt":1049},"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},[1043,1046,1047,1048],{"name":1044,"slug":1045,"type":15},"Animation","animation",{"name":940,"slug":941,"type":15},{"name":792,"slug":793,"type":15},{"name":23,"slug":24,"type":15},"2026-05-02T05:31:48.48485",{"slug":1051,"name":1051,"fn":1052,"description":1053,"org":1054,"tags":1055,"stars":907,"repoUrl":908,"updatedAt":1065},"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},[1056,1057,1058,1061,1064],{"name":792,"slug":793,"type":15},{"name":23,"slug":24,"type":15},{"name":1059,"slug":1060,"type":15},"Image Generation","image-generation",{"name":1062,"slug":1063,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",578]