Asset Generation
SkillSearchAdds an asset generation skill so your agent creates brand-safe images and videos and finds them across apps.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Asset Generation skill
About this skill
Use Assets for brand-safe image or video generation, human picker UI, search/list/export actions, and cross-app asset selection. Use when a visual needs to be generated, refined, found, or handed off to another app.
What this skill tells your AI
The instructions your AI receives, as published by builderio/agent-native in templates/assets/.agents/skills/asset-generation/SKILL.md and read by ahel’s review.
Rule
Use the Assets app when a workflow needs reusable brand media, a human picker, or generated image/video assets that another app can reference by ID and URL.
Visual authority and brief
Assets produces media; it does not invent a replacement brand language. Before generating, resolve the user's explicit subject, audience, message, format, and must-preserve constraints, then the active library, preset, or linked design system and its custom instructions, then approved Creative Context references. Impeccable-inspired guidance is a quality lens for composition, hierarchy, restraint, and finish — never a reason to override those sources.
Compile the request into a short art-direction brief: visual role, subject,
composition and crop, palette or material treatment, lighting or medium,
exact visible text if any, semantic constraints, and exclusions. Classify the
slot as produce (new media), direct (an existing approved asset), or
semantic (a UI/icon/diagram the caller should build with its own primitives).
Do not generate a decorative photo where the caller needs a semantic graphic.
If brand context is missing, make the result clearly exploratory rather than
claiming a brand match.
Choose The Path
- Use
generate-assetwhen a person should get newly generated, on-brand image candidates and choose the winner in the inline picker. It matches a library whenlibraryIdis omitted, generates candidates, returns the picker filtered to those run IDs, and works in in-app chat plus external MCP hosts. - Use
open-asset-pickerwhen a person should browse, search, or select an existing asset inside an embedded picker, or when you want the picker to handle generation itself. It still opens/librarywith the iframe/bridge contract. The normal human Library workspace is/libraryand/library/:id. PassmediaType: "image"by default, ormediaType: "video"for video libraries. - Use unattended actions when the agent already knows what to do:
search-assets,list-assets,import-style-from-url,generate-image,generate-image-batch,generate-video,refresh-generation-run, andexport-asset. - In chat, consume composer
@references as structured generation inputs:brand-kitmaps tolibraryId,templatemaps totemplateId, andmedia-typechooses image generation versus video generation. If no mention is available, useview-screen,list-libraries, andlist-templatesto choose explicit args. - Use Templates when the user asks for a repeatable output format like social
image, blog hero, or diagram. Call
list-templatesand passtemplateIdthrough generation/refinement actions. Templates may be global or associated with one brand kit; only associated templates can pin images, skeletons, or a canonical logo.*-generation-presetactions are deprecated aliases. - Use generation sessions when another person needs to continue improving a candidate. Sessions carry the brief, preset, active asset, feedback, and run IDs without requiring the original chat thread.
- Use chat-driven
restyle-imageandedit-imagefor preserving subjects, applying library style, and making targeted changes. Do not surface separate restyle, edit, or quality-tier buttons in host UIs. - Use browser/deep-link fallback when the host cannot render MCP Apps inline (CLIs and code editors like Claude Code and Codex). Surface the returned picker link. When the user opens it, they can either click an asset — the page auto-copies a short handoff summary for them to paste back into chat — or simply tell you which one in words (e.g. "use image A" / "the second one"). Both are first-class; don't insist on the paste-back if they just name the pick.
Image Workflows
- Read the
creative-contextskill and retrieve visual references separately from factual evidence. RespectcontextMode: "off", pinned packs, and the exact reuse ladder before generation: approved native asset unchanged, compose approved pieces, lightly adapt a real example, condition generation on narrow references, then net-new only when the relevant corpus is empty. - For human-in-the-loop generation, call
generate-assetfirst and preserve the returned picker/candidate metadata. For unattended generation, pick or match the library withlist-librariesormatch-library. If the user wants a default look rather than a brand library, calllist-library-presetsand thencreate-library-from-preset; the resulting library is editable and reusable like any other library. - For one asset, call
generate-image; for multiple independent slots, callgenerate-image-batchwith stableslotIdvalues. - Image generation actions are synchronous. After
generate-imageorgenerate-image-batchreturns, use its compactimages/ asset summaries directly; do not callget-generation-run,refresh-generation-run, or regenerate just to verify image runs. Useget-assetfor full asset details and the audit-run actions for prompts, references, and settings. A result withdraftPendingApproval: truecame from a kit the user can draft in but not save into. Offer the candidate and say it needs a kit editor to be saved;save-generated-imagewill refuse, so do not call it or retry. Video carries the same marker on the initial async reply and on everyrefresh-generation-runresult, so it survives the poll. - For template-backed work, pass a mentioned or selected
templateId; for handoff work, passsessionId. - Let the server choose a small deterministic reference set unless the user
named exact assets. Canonical style anchors come from
assetLibraries.settings.canonicalStyleAssetIdsandassets.metadata.isStyleAnchor; they must remain subordinate to explicit library, preset, and per-run constraints rather than introducing a second visual language. - Pass
tier: "fast"for exploration,tier: "best"for final/high-value output, ortier: "auto"when there is no clear preference.- Model/ratio compatibility: Gemini image models accept any
aspectRatio, butgpt-image-2supports only1:1,2:3, and3:2. When the user needs another ratio (16:9, 9:16, 4:5, 21:9, …), pick a Gemini model rather thangpt-image-2— an unsupported pairing is rejected upstream. Source of truth issupportedAspectRatiosForModel/MODEL_ASPECT_RATIOSinshared/api.ts.
- Model/ratio compatibility: Gemini image models accept any
- Direct generation returns
id; picker selections returnassetId. Preserve that asset identifier withrunId,previewUrl,downloadUrl, andembedUrl. Preserve the immutablecontextPackIdand reuse labels on both generation run and output-asset metadata; rendered pixels are not provenance. - Use
refine-imagefor feedback on an existing asset,edit-imagefor targeted changes, andrestyle-imagewithsubjectAssetIdandstyleStrengthfor subject-preserving brand restyles. - If a designer will take over, call
create-generation-sessionorupdate-generation-session, thenprepare-generation-session-continuationwhen they want a chat preloaded with the session context.
For short vague prompts, enhance conservatively with library style context while
preserving the user's original prompt in run metadata. If a public website is
the style source, call import-style-from-url first so the library keeps the
hydrated browser-derived design brief. Use analyze-collection-style when a
collection needs upgraded vision brand analysis from image references before
generation. Brand QA scoring and best-of-N selection are deferred.
Generation success confirms a run and its provenance, not visual quality or brand match. Report the selected library, preset, style anchors, and whether the result used an Assets-grounded or fallback path. Claim a quality evaluator only when one actually ran.
Video Workflows
- Call
generate-videowith16:9or9:16and relevant image references. - Poll
refresh-generation-rununtil the run completes and returns a video asset. - Use
export-assetwhen another app needs a download URL or artifact type.
Cross-App Use
- Hosted default: connect
https://assets.agent-native.com/_agent-native/mcp. Do not put shared secrets in skill files. - Local customization: run
npx @agent-native/core@latest app-skill launch --localfrom the Assets app-skill manifest, or pass--into <path>for editable source. - For MCP callers,
generate-assetis the portable first choice because the same MCP App picker renders inline in Agent-Native chat, ChatGPT, and Claude when the host supports MCP Apps. Include exactassetId,runId, media type, and URLs in the final response so the caller can attach or embed the media. IncludepresetIdandsessionIdwhen present.
Don't
- Do not call image/video providers directly from another app.
- Do not treat
imagesas the app identity; the app id isassets. - Do not use picker UI for unattended generation when direct actions are enough.
- Do not use copyrighted screenshots or named studio/brand image sets as preset references. Use broad textual guidance and user-provided references instead.
Signals
- GitHub stars
- 7k
- Forks
- 613
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
asset-generation- Source
- github.com/builderio/agent-native