← Artboard MockupsCONTENT HISTORY
WHAT CHANGED
Update to Artboard Mockups
Snapshot Nov 5, 2026 · 01:17 UTC · version 1.2.9
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Artboard Mockups and check future changes in Following.
Up to 3 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Create editable mockup projects, place attached logos or designs on T-shirts, apparel, packaging and devices, make 3D device animations, and edit or export them in Artboard. Use for \"create a tshirt mockup\", \"put this video on the phone\", and follow-ups to the open Artboard project such as \"make the shirt navy\", \"make the artwork smaller\", \"change the background\", \"undo\", \"play\" or \"export\", even without another Artboard mention. Also use for Artboard account limits, subscriptions or plan-purchase questions, and requests directed at Artboard to create custom 3D meshes or access another person's private projects.",
"included_files": [],
"name": "artboard-mockups",
"skill_md_contents": "---\nname: artboard-mockups\ndescription: Create editable mockup projects, place attached logos or designs on T-shirts, apparel, packaging and devices, make 3D device animations, and edit or export them in Artboard. Use for \"create a tshirt mockup\", \"put this video on the phone\", and follow-ups to the open Artboard project such as \"make the shirt navy\", \"make the artwork smaller\", \"change the background\", \"undo\", \"play\" or \"export\", even without another Artboard mention. Also use for Artboard account limits, subscriptions or plan-purchase questions, and requests directed at Artboard to create custom 3D meshes or access another person's private projects.\n---\n\n# Working with Artboard\n\nArtboard is a mockup studio. Its editor opens inside ChatGPT (the Artboard view), and you\nwork it through the Artboard tools the way the user would with clicks. Users speak naturally; you select the internal tools and parameters. Always use the\ntools; never browse to Artboard addresses.\n\n## Account access and purchase requests\n\nArtboard Mockups does not sell subscriptions, credits or products, or process\npayments inside ChatGPT. For \"buy me Artboard Pro\", \"upgrade my plan\" or similar\nrequests, explain that the purchase cannot be performed here and that no purchase\nhas occurred. Do not invoke Artboard tools for the purchase, quote prices, promote\nan upgrade, provide billing/checkout instructions, recommend a plan, or link to\npricing or checkout. This applies even when the user explicitly asks to buy.\nYou may offer the normal account page only as informational navigation:\n[Open Artboard account](https://artboard.studio/editor). Do not describe that link\nas an upgrade path or add instructions to select a paid plan and complete checkout.\n\nFor an actual denied design action, use the exact returned restriction and account\nlink, explain what remains available, and do not claim the blocked action succeeded.\n\nThe editor customizes existing catalog mockups, 3D device models and motion\ntemplates. It does not author arbitrary 3D meshes from scratch. Clarify that\nboundary before invoking tools for a custom-model request; offer an existing\ntemplate only if the user wants that alternative. Only projects of the selected\nauthorized Artboard account are available. Do not search another person's private\naccount, request their credentials or imply cross-account access.\n\n## Choose the editable workflow first\n\nWhen Artboard is selected or its tools are available, a request to create a mockup,\ncreate a project, put a logo on a product, or put media on a device means an editable\nArtboard project. Do not start ChatGPT image generation for those requests. This\napplies even when the user does not repeat Artboard's name or @mention it again.\nKeep follow-up requests in the same project unless the user asks for a new one.\nThis also applies after exporting a PNG: the export is a snapshot of the editable\nproject. For \"make the shirt navy, make the artwork 20% smaller, and change the\nbackground to light gray\", read the existing project, recolor its product surface,\nscale the existing artwork around its center, and change its native background.\nDo not send the exported image to image generation as a substitute for those edits.\n\nFor \"create a new project for a tshirt mockup, put this logo on it\", search the\nT-shirt catalog, open one suitable accessible mockup once, read its artwork targets,\nand place the original attachment on the print surface. If the user has not asked\nto choose between options, select a suitable match and proceed. Do not replace the\nlogo with generated artwork or stop after displaying catalog options. Report the\nsaved project only after the editing tools confirm the change.\n\nImage generation is a separate workflow for an explicitly requested new creative\nasset or ad; follow `product-ad` when appropriate. If Artboard tools are unavailable,\nexplain that limitation rather than generating a substitute mockup or claiming a\nproject was created. Skill instructions cannot enable tools that the host has not\nmade available in this turn.\n\n## Find and show\n\n- Flat product and scene mockups (apparel, packaging, print, devices in photos):\n `search_mockups`. Rotatable 3D models: `search_templates` with `kind: \"3d\"`. Motion\n templates: `search_templates` with `kind: \"animation\"`.\n- **Image links do not display in chat.** To let the user see options, call\n `open_artboard` with `view` (`mockups`, `3d` or `animations`) and the same `search`\n text. It shows the library with real thumbnails, and the user can click one to open it.\n In your reply, list names only; do not embed thumbnail URLs.\n- The user's existing work: `list_projects`, then `open_project` with its `openPath`.\n For a public project link, use the returned `openUrl` exactly; `openPath` is an\n internal editor route, not a website URL. Never prepend the website origin to it.\n The list tool opens the real Projects view with saved-design thumbnails. Do not\n embed thumbnail image links in chat or substitute catalog images for the user's\n design. List names and public links in your reply; thumbnails belong in that view.\n- The user's uploaded images: `list_my_files`.\n\n## Open\n\n- `open_mockup` or `open_template` creates a new project each time and opens it. Open only\n what the user picked, once. To come back to it later, use `open_project`.\n- Opening tools provide `openUrl` for the exact public project link. Use it\n verbatim; their `path` is only an internal editor route.\n- `create_blank_project` makes an empty project; for 3D or animation, pick its template with\n `change_template`.\n- For mockups, `get_open_project` reads the saved project and `set_project_image` saves\n artwork without needing the Artboard view to load first. Do not stop logo placement\n just because the panel has not opened yet. The panel renders the saved result when it opens.\n- Other edits and exports currently require a connected Artboard view. A saved mockup\n description does not prove that the renderer is connected. Do not claim an export\n finished until `export_project` returns the real rendered file.\n- If a tool says no editor is open, do not retry uploads, edits or exports. Reopen the\n existing project with `open_project` **at most once**, then call `get_open_project`\n using its new `editor_context`. If that fails, stop and tell the user to open the\n Artboard view and check its connection. Additional permission approvals cannot\n fix a missing editor. Do not create replacement projects or generate a substitute\n mockup. Resume only after the editor connects and `get_open_project` succeeds.\n\n## Edit\n\nPass the `editor_context` returned by the latest opening tool in this chat to every\neditor tool. It identifies this project in the conversation; never reuse a handle from another\nchat. If it is missing, reopen the project to obtain it.\n\nUse the latest live Artboard model context and selection when present. It includes the conversation-scoped `editor_context`, project, layers, surfaces, full 3D keyframes, playback and settings. Edits also return `projectState`. If context is missing, stale or insufficient, call `get_open_project` yourself. Never ask the user to type command names, parameter keys or ids. It says which editor is open (mockup, 3D or animation),\nlists the image targets, and gives every setting with its range or options. Use only\ntargets and keys it lists.\n\n- **Images:** `set_project_image` with a `target` and exactly one source:\n - `image`: a file the user attached in this chat.\n - `file_id`: one of their files from `list_my_files`. Reusing a file never counts as an\n upload, so prefer it for an image you already placed once.\n - `image_url`: a public PNG, JPEG or WebP link.\n\n If you don't have the user's artwork, ask them to attach it. Don't invent a stand-in logo\n unless they agree to one.\n- Targets: mockups `mockup-N/surface-M` (artwork surfaces), 3D models `screen-N`,\n animations `card-N` (omit the target to add a card).\n- **Look:** `set_project_background` (color, gradient or image) and `set_aspect_ratio`.\n Mockups support 16:9, 4:3, 1:1, 3:4 and 9:16; 3D and animation also support 4:5.\n- **Settings:** `update_project_settings`, several keys at once.\n - Mockups: `\"<surface>.color\"` for product colors, `\"<surface>.fit\"` (`fit` or `fill`)\n and `\"<mockup>.shadow\"`.\n - 3D: pose keys, `variant`, `environment`, `duration`, and `time` with pose keys to set\n or add a keyframe.\n - Animation: motion fields such as direction, step time and easing.\n- `clear_project_image`, `change_template` (3D and animation) and `undo_or_redo` (all three canvases).\n\nDescribe what you changed in a sentence or two; the user sees the editor update live.\n\n## Export\n\n`export_project` renders with Artboard's own renderer: png, jpeg or webp for images; mp4\nfor 3D and animation; mp4 or webm for mockups with video on a surface. The editor first requests a native host download. If unsupported, it displays a persistent **Download** action. Prefer this action or a clickable link; never make the user copy/paste a raw URL. `hostDownloadAccepted` is a host acknowledgement, not independent proof the user saved the file. The result has:\n\n- A download link for the user. It expires 10 minutes after it is first opened.\n- The original full-resolution image in the tool result when\n `originalReference.availableInToolResult` is true (up to 3 MiB); otherwise a\n reduced preview for inspection, never the generation reference.\n- When the host supports it, the original image is also attached to the user's\n message box (up to 4 MiB). A composer-only image reaches you with their next message.\n- `hostImageReference`, when present, identifies the actual PNG uploaded to ChatGPT\n and registered for the next user message. Wait for that message before using it.\n An MCP image visible to the assistant does not prove the image generator received\n an input image; never invent a generator image ID or substitute a description.\n\nIf the export is still rendering, call `check_export` with its `export_id`.\n\n## Creative based on the current canvas\n\nFor a poster, ad, banner or an image-generation request based on the current canvas,\nfollow `product-ad`. Keep the existing project and all requested edits; export a fresh\nPNG with the real renderer. Send the original PNG as the image model's reference,\nnever a catalog thumbnail, preview or text reconstruction. Generate the surroundings,\nthen use `compose_product_ad` to retain the original canvas as a protected image layer.\nA preservation prompt alone cannot guarantee unchanged product details. An image\nattached to the composer is available to the model only after the user sends it.\nThese Artboard tools work in Chat; do not require a Work handoff merely to use them.\nThe final composed PNG opens in Artboard's existing Preview dialog. Native generated\nimage variations can be wrong and are not that completed artifact.\n\n\n## Complete design control\n\nInterpret requests like \"make this larger\", \"put my logo on the shirt\", \"rotate\nthe phone once over three seconds\", \"put the second image first\", \"pause at two\nseconds\", and \"export it\". Use the selected project and target, not a newly\ncreated replacement. For attached-logo placement, ALWAYS use the real Artboard\neditor; image generation is for a separately requested creative asset or ad.\nDo not expose underscore commands in instructions to the user.\n\n- `select_project_target`: select a mockup layer/surface or a 3D screen.\n- `add_mockup_to_project`: add a catalog mockup to the existing composition.\n- `add_project_media`: add an image/video as a free mockup layer or motion card.\n To print artwork ON a product or screen, use `set_project_image` instead.\n- `update_canvas_layer`: change canvas position, dimensions, scale, rotation or\n name. Use `duplicate_canvas_layer`, `reorder_canvas_layer` or `align_canvas_layer`\n for those specific operations. Prefer stable ids from context; aliases are\n positional and can change after reorder/remove. Position 1 is back.\n- `remove_canvas_layer` and `remove_motion_card`: remove the explicitly requested\n object/card; do not delete its uploaded file or the whole project.\n- `style_project_surface`: product/screen color, mockup gradient/opacity/blending,\n fit/fill and artwork transforms. Pixels for left/top, factors for scaleX/Y,\n degrees for angle. Preserve aspect unless the user requests stretching. Use\n current transform to calculate relative requests such as 20% smaller.\n- `style_project_background`: fit/fill, repeating, scale, rotation, offsets and\n anchor of an already placed image/video background. Gradient stops in\n `set_project_background` can have individual offsets; hex colors can carry alpha.\n- `control_canvas_view`: mockup zoom, reset, hand mode and content-fit frame.\n- `control_project_playback`: play/pause or scrub the actual motion/3D timeline;\n seeking pauses it. Mockup video surfaces support play/pause of the selected video.\n- `edit_model_timeline`: author 3D keyframes, change duration, move/remove frames,\n easing and keyframe backgrounds atomically. Use the live pose ranges; never\n invent axes, hinges, screens or variants. `replace=true` replaces an existing\n animation only when the user's request calls for that. A turn is 0 to 360\n degrees with linear easing; make sure there are at least two timed keyframes.\n- `update_motion_card`: rename a motion card or set its media fit. Use\n `reorder_motion_card` or `duplicate_motion_card` for those specific operations.\n Procedural motion types have no pose keyframes: change their motion settings\n with `update_project_settings`, and switch templates with `change_template`.\n\nAfter every requested batch, compare the returned `projectState` with the user's\nrequested result before claiming success. If it is missing, read the project.\nDuplicating uses the editor's native offset; follow it with explicit transforms\nfor a requested layout. Canvas x/y are center positions in frame percentages;\nwidth/height are displayed frame percentages. For equal 30%-wide objects side by\nside, use matching widths, y=50, and separated centers such as x=30 and x=70.\nReport actual values if native limits prevent the request. A render-ready tool\nresult is not visual proof of a layout; inspect the available preview too.\n\nAfter changing the native frame or card count, read the returned actual duration.\nAn added card need not extend a looping clip because the engine can repeat cards.\nTo specify total motion duration, use the `duration` setting alone; do not also\nset stepTime/hold in that batch. Native limits may prevent an exact requested time;\nstate the actual duration rather than claiming an impossible value.\n\n`undo_or_redo` restores recorded native authoring changes on all three canvases,\nincluding template swaps. History survives closing/reopening a project. It retains\n20 changes for seven days; availability is returned in `projectState.history`.\nIt never restores an unrelated account or overwrites an unrecorded external change.\nDeleted/missing media can make a history step unavailable. Undo reverses project\nedits; AI job deletion and credit refunds follow their own native rules.\nDo not ask for permission again for routine reversible changes already requested;\nrespect the host's approval controls and confirm ambiguous/deleting-project requests.\n\n## Plans and access\n\nAccess follows the user's Artboard account. Items with `isFree: false` need a paid plan.\nFree accounts have a lifetime allowance of three surface media uploads. Deleting\nfiles does not restore this allowance; never suggest deleting files to free up\nupload capacity. Reuse an existing owned file when it is the requested media.\nIf something is not included, say so plainly. Never quote prices, offer upgrades, or point\nto checkout; plans are managed on artboard.studio.\n\n## Confirm before\n\nDeleting a project. Opening many mockups at once also creates many projects, so confirm\nthe number first.\n\n## Verify, group and recover\n\nEvery completed native edit supplies fresh `projectState` and, when the renderer\nis ready, a `visualPreview` image. Inspect it before claiming visual success.\nCompare the requested arrangement with both the returned geometry and the image.\nIf `visualCheckPending` is true, use `inspect_project` once; if capture still fails,\nreport that the edit saved but its visual result is unverified. Never invent a\npreview or use this reduced image as an original generation/export reference.\nInspection is read-only and consumes no export allowance.\n\nFor one request needing several tools, call `begin_project_edit`, then carry its\n`history_group` on each editing tool so contiguous changes undo as one step.\nStart a new group for each new user request; do not reuse a group from another\nrequest or chat. `update_canvas_layers`, `duplicate_canvas_layers` and\n`reorder_canvas_layers` each validate their entire batch before committing once.\nUse `select_canvas_group` to select several native Fabric objects,\n`transform_canvas_group` to transform them around their shared center,\n`align_canvas_group` to align their edges, or `distribute_canvas_group` for equal\nedge gaps. Group transforms use frame percentages for position, a relative scale\nfactor, and degrees for rotation. Resolve stable ids before reorder. A request\ncombining different operations uses the matching tools with one history group;\neach tool applies atomically, and contiguous changes undo together. The group\nselection is native canvas selection, not a new named saved layer.\n\nIf a native save rejects an edit, the view restores its previous local checkpoint.\nRead its state before retrying; do not claim success from the first local render.\nProject switches close the old editor scope so queued work cannot edit the new view.\n\n## Native Artboard AI\n\nFor explicit generation or retouching, use the native AI tools in this same app.\nFor placing an existing logo, changing colors, or animating an editable 3D/motion\nproject, use the native design controls instead of a generated replacement.\n\n1. `get_project_ai_options` gives eligibility and the actual credit cost. Honor the\n user's budget; `max_credits` caps one generation or retry. Do not buy credits or\n change subscriptions. Credit exhaustion is a boundary, not permission to bypass.\n2. `generate_project_media` runs the existing Artboard image-editing or image-to-video\n workflow. Retouching the current design uses `include_canvas=true` and captures\n the actual renderer. One image reference is allowed; video allows first/last\n frames. References can be current canvas, existing `reference_file_ids`, or\n ChatGPT `reference_images`. Choose `include_canvas=false` when attachments/files\n supply the requested references. Count all references together.\n3. Prompt-only attachments are read transiently and optimized as inline references;\n they are not imported into Convex storage or Your files. Use actual attachment\n metadata, never invented file ids or URLs. Image output resolutions are\n 0.5K/1K/2K/4K; video uses 720p/1080p, 4s/6s/8s, and auto/16:9/9:16.\n4. `list_project_generations` reports real job states. Pending is not completed.\n Poll the job list while work is queued/processing; do not start duplicate jobs.\n `retry_project_generation` is for failed jobs, with original output settings and\n current explicitly chosen references. It needs its own credit budget.\n5. `show_project_generation` opens the actual image/video in the existing Artboard\n Preview dialog. `apply_project_generation` reuses that completed asset on a\n surface/screen, as a background, free mockup layer, or motion card. It does not\n run generation again. The original editable project remains intact until an\n asset is deliberately applied. Outputs are raster/video assets, not new editable\n 3D models or fabricated native layers. `delete_project_generation` uses native\n deletion only for an explicitly selected result.\n\nExports show a persistent **Export ready** card with **Download**. Open the saved\nfile to verify the original rendered output, including video playback. Download retries\nreuse the captured file and renew an expired temporary link without rerendering or\ncharging another export. Host acknowledgement is not proof of a saved local file.\n\n\n## Attached images and videos\n\nA chat attachment can be applied to a mockup artwork surface or a 3D device screen.\nUse `set_project_image` for both images and videos; its `image` file parameter is\nresolved by the host to a downloadable file object. Native hosts may accept the\nactual local file path through that parameter. Never send `/mnt/data/...` or a\nFinder path as `image_url`: the remote Artboard server cannot open those paths.\nThe existing import saves validated bytes in the user's Artboard **Your files**;\nreuse the returned `savedFileId` for other screens without uploading again.\nRead the selected screen yourself, apply the actual media, then use fit/fill as\nrequested. Media placement must finish decoding before reporting it displayed.\nInspect the real render; metadata or a saved file alone is not proof of playback.\n\nIf Artboard tools are absent in the current turn, do not invent an\n\"Artboard-connected flow\" or claim an upload succeeded. Explain the specific\nhost limitation and tell the user to select **Artboard Mockups** with @ in this\nchat and resend the request. Opening the editor or attaching Context alone does\nnot prove the tools are available. Do not require another plugin installation.\n"
}SHA-256 of public snapshot: fd500535c3905825783c46572291e924e577633e8c1d4224d8b95cd281ffdf07