Design Templates
Prerequisites
- Read
navigation or call view-screen when the current template or design
is unclear.
- Treat built-in and user-created entries as one template concept. Their
ownership and available share/delete actions differ, but creation uses the
same action.
Workflow
- Resolve the starting point. When the user mentions a template, past
design, or prior work, call both
list-design-templates and list-designs
before generating. Match the requested name or id; ask only when multiple
plausible results remain.
- Save a reusable template. Call
save-design-as-template with the source
designId. The action snapshots inline screens, canvas dimensions,
defaults, linked design system, and locked layers.
- Create from a template. Call
create-design-from-template with the
resolved templateId. Pass designSystemId only when the user selected an
override; the action access-checks it and returns the effective linked id.
- Stop after a pure copy. If there is no prompt and no pending design-system
adaptation, open the copied design and do not start generation.
- Adapt copied screens. When the user supplied a prompt or chose a
different accessible design system, call
get-design-snapshot exactly once,
then refine the existing unlocked content with edit-design. Never call
generate-design, delete the copied screens, or recreate the template from
scratch.
- Verify. Read back the copied design and confirm its screens, canvas
dimensions, linked design system, and locked-layer boundaries before
reporting completion.
The Template On Follow-Up Requests
A copied screen is edited in place. After the first refinement saves, the
design's own files are the result, not the template — so a later turn that
reads only get-design-snapshot has no idea what the template specified, and
fonts and artboard dimensions drift a little further on each request.
The two facts that drift are cheap, so they arrive on their own. view-screen
reports design.createdFromTemplate on every turn for a template-created
design, carrying lockedDimensions per screen and lockedFonts. Both are
captured from the template at copy time, so they describe the template even
after the design has been edited many times. Honour them in every
edit-design pass: never resize the artboard, change a canvasFrames width or
height, switch the primary viewport, or substitute a typeface to fit new
content.
Call get-design-template --designId="<id>" when you need more than those two
facts — the template's original markup, or its locked layers — for example
before a structural edit or when the user asks how far the design has moved
from its template. The full template files are large, which is why they are a
deliberate second call rather than part of every turn.
Locked Layers
data-agent-native-locked="true" is authoritative. Keep each locked element
and all descendants byte-for-byte unchanged during adaptation. If the user
explicitly wants one changed, ask them to unlock it in the Layers panel first.
Ownership
- Built-in templates cannot be renamed, shared, or deleted.
- Owned user templates may be shared with the standard resource sharing UI and
deleted with
delete-design-template.
- Do not model templates as ordinary
designs rows and do not invent alternate
template action names.
Related Skills
design-generation — creating and refining Design screens.
design-systems — applying linked systems and tokens.
sharing — access and sharing rules for user-created templates.
1---2name: design-templates3description: Find, save, copy, and adapt Design templates. Use when the user references a template, a prior design, or wants a reusable starting point.4---56# Design Templates78## Prerequisites910- Read `navigation` or call `view-screen` when the current template or design11 is unclear.12- Treat built-in and user-created entries as one template concept. Their13 ownership and available share/delete actions differ, but creation uses the14 same action.1516## Workflow17181. **Resolve the starting point.** When the user mentions a template, past19 design, or prior work, call both `list-design-templates` and `list-designs`20 before generating. Match the requested name or id; ask only when multiple21 plausible results remain.222. **Save a reusable template.** Call `save-design-as-template` with the source23 `designId`. The action snapshots inline screens, canvas dimensions,24 defaults, linked design system, and locked layers.253. **Create from a template.** Call `create-design-from-template` with the26 resolved `templateId`. Pass `designSystemId` only when the user selected an27 override; the action access-checks it and returns the effective linked id.284. **Stop after a pure copy.** If there is no prompt and no pending design-system29 adaptation, open the copied design and do not start generation.305. **Adapt copied screens.** When the user supplied a prompt or chose a31 different accessible design system, call `get-design-snapshot` exactly once,32 then refine the existing unlocked content with `edit-design`. Never call33 `generate-design`, delete the copied screens, or recreate the template from34 scratch.356. **Verify.** Read back the copied design and confirm its screens, canvas36 dimensions, linked design system, and locked-layer boundaries before37 reporting completion.3839## The Template On Follow-Up Requests4041A copied screen is edited in place. After the first refinement saves, the42design's own files are the *result*, not the template — so a later turn that43reads only `get-design-snapshot` has no idea what the template specified, and44fonts and artboard dimensions drift a little further on each request.4546The two facts that drift are cheap, so they arrive on their own. `view-screen`47reports `design.createdFromTemplate` on every turn for a template-created48design, carrying `lockedDimensions` per screen and `lockedFonts`. Both are49captured from the template at copy time, so they describe the template even50after the design has been edited many times. Honour them in every51`edit-design` pass: never resize the artboard, change a `canvasFrames` width or52height, switch the primary viewport, or substitute a typeface to fit new53content.5455Call `get-design-template --designId="<id>"` when you need more than those two56facts — the template's original markup, or its locked layers — for example57before a structural edit or when the user asks how far the design has moved58from its template. The full template files are large, which is why they are a59deliberate second call rather than part of every turn.6061## Locked Layers6263`data-agent-native-locked="true"` is authoritative. Keep each locked element64and all descendants byte-for-byte unchanged during adaptation. If the user65explicitly wants one changed, ask them to unlock it in the Layers panel first.6667## Ownership6869- Built-in templates cannot be renamed, shared, or deleted.70- Owned user templates may be shared with the standard resource sharing UI and71 deleted with `delete-design-template`.72- Do not model templates as ordinary `designs` rows and do not invent alternate73 template action names.7475## Related Skills7677- `design-generation` — creating and refining Design screens.78- `design-systems` — applying linked systems and tokens.79- `sharing` — access and sharing rules for user-created templates.