asset-creator

For each asset, fetch multiple reference icons before selecting the best match. The agent specifies the exact number of icons to read per asset.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "asset-creator" with this command: npx skills add outscal/video-generator/outscal-video-generator-asset-creator

Asset Creator Skill

For each asset, fetch multiple reference icons before selecting the best match. The agent specifies the exact number of icons to read per asset.

logo

  • Fetch reference icons

  • Use EXACTLY as-is. Zero modifications.

  • If no matching references found: Write the name of that brand/entity inside a visual box.

icon

  • Fetch reference icons

  • Use EXACTLY as-is. Zero modifications.

  • If no matching references found: Create from scratch, keep simple like icons

customized

  • Fetch reference icons

  • If a reference matches description → use as-is

  • Only if NO reference matches → tweak the closest one

  • If no direct references found → search for similar references, understand their shape, and create the asset

character

  • NO icon fetching

  • Use to create from scratch

Attribute Purpose Example

viewBox

Internal coordinate system "0 0 100 100"

xmlns

XML namespace (required) "http://www.w3.org/2000/svg"

Attribute Purpose

x , y

Position (top-left corner)

width , height

Dimensions

rx , ry

Corner radius

fill

Fill color

<circle cx="50" cy="50" r="40" fill="#EF4444"/>

Attribute Purpose

cx , cy

Center position

r

Radius

<ellipse cx="50" cy="50" rx="40" ry="25" fill="#10B981"/>

Attribute Purpose

cx , cy

Center position

rx , ry

X and Y radii

<line x1="10" y1="10" x2="90" y2="90" stroke="#000" stroke-width="2"/>

<polyline points="10,90 50,10 90,90" fill="none" stroke="#000" stroke-width="2"/>

<polygon points="50,10 90,90 10,90" fill="#F59E0B"/>

Command Name Parameters Example

M

Move to x, y M 10 10

L

Line to x, y L 90 90

H

Horizontal line x H 50

V

Vertical line y V 50

C

Cubic Bezier x1,y1 x2,y2 x,y C 20,20 80,20 90,90

Q

Quadratic Bezier x1,y1 x,y Q 50,0 90,90

A

Arc rx ry rotation large-arc sweep x y A 25 25 0 0 1 50 50

Z

Close path

Z

Lowercase commands use relative coordinates (relative to current position).

<!-- Triangle --> <path d="M 50 10 L 90 90 L 10 90 Z" fill="#8B5CF6"/>

<!-- Curved shape --> <path d="M 10 50 Q 50 10 90 50 T 170 50" stroke="#000" fill="none"/>

<g transform="translate(50, 50)" fill="#3B82F6"> <circle r="20"/> <rect x="-10" y="25" width="20" height="10"/> </g>

Transform Syntax Example

Translate translate(x, y)

translate(50, 50)

Scale scale(s) or scale(sx, sy)

scale(2)

Rotate rotate(deg) or rotate(deg, cx, cy)

rotate(45)

Skew skewX(deg) or skewY(deg)

skewX(10)

<rect fill="#3B82F6" /* Fill color / fill-opacity="0.8" / Fill transparency / stroke="#1D4ED8" / Stroke color / stroke-width="2" / Stroke width / stroke-opacity="0.9" / Stroke transparency / stroke-linecap="round" / Line end style: butt | round | square / stroke-linejoin="round" / Corner style: miter | round | bevel / stroke-dasharray="5 3" / Dash pattern */ />

<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"> <style> .primary { fill: #3B82F6; } .secondary { fill: #EF4444; } .outline { fill: none; stroke: #000; stroke-width: 2; } </style>

<circle class="primary" cx="50" cy="50" r="30"/> </svg>

<defs> <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%"> <stop offset="0%" stop-color="#3B82F6"/> <stop offset="100%" stop-color="#8B5CF6"/> </linearGradient> </defs>

<rect fill="url(#grad1)" x="10" y="10" width="80" height="80"/>

Transform Syntax Example

Translate translate(x, y)

translate(50, 50)

Scale scale(s) or scale(sx, sy)

scale(2)

Rotate rotate(deg) or rotate(deg, cx, cy)

rotate(45)

Skew skewX(deg) or skewY(deg)

skewX(10)

Reference defined elements:

<defs> <circle id="dot" r="5"/> </defs>

<use href="#dot" x="20" y="20" fill="red"/> <use href="#dot" x="50" y="50" fill="blue"/> <use href="#dot" x="80" y="80" fill="green"/>

<defs> <linearGradient id="linear" x1="0%" y1="0%" x2="100%" y2="100%"> <stop offset="0%" stop-color="#3B82F6"/> <stop offset="100%" stop-color="#EF4444"/> </linearGradient> </defs>

<defs> <clipPath id="circle-clip"> <circle cx="50" cy="50" r="40"/> </clipPath> </defs>

<rect clip-path="url(#circle-clip)" x="0" y="0" width="100" height="100" fill="#3B82F6"/>

<defs> <mask id="fade-mask"> <linearGradient id="fade" x1="0%" y1="0%" x2="100%" y2="0%"> <stop offset="0%" stop-color="white"/> <stop offset="100%" stop-color="black"/> </linearGradient> <rect fill="url(#fade)" width="100" height="100"/> </mask> </defs>

<rect mask="url(#fade-mask)" fill="#3B82F6" width="100" height="100"/>

  • Always use viewBox - Enables proper scaling

  • Use transparent background - No background rect unless needed

  • Group related elements - Use <g> for organization and shared transforms

  • Use meaningful IDs - For gradients, clips, and reusable elements

  • Optimize paths - Remove unnecessary precision (2 decimal places max)

  • Use classes for styling - Separate presentation from structure

<svg viewBox="minX minY width height" xmlns="http://www.w3.org/2000/svg">

Parameter Meaning

minX

Left edge X coordinate (usually 0)

minY

Top edge Y coordinate (usually 0)

width

Internal width in SVG units

height

Internal height in SVG units

(0,0) ─────────────────────────► X (width) │ │ (25%,25%) (75%,25%) │ ●────────────────● │ │ │ │ │ (50%,50%) │ │ │ ● │ │ │ center │ │ │ │ │ ●────────────────● │ (25%,75%) (75%,75%) │ ▼ Y (height)

Position Formula

Top-left (0, 0)

Top-center (width/2, 0)

Center (width/2, height/2)

Bottom-center (width/2, height)

Keep icon centers within 10%-90% of viewBox to prevent clipping:

availableSpace = viewBoxSize * 0.8 maxScale = availableSpace / iconViewBoxSize

Process:

  • Identify the attachment point in the icon's original coordinate space (e.g., gun barrel tip)

  • Position the effect at that coordinate using transform="translate(x, y)"

Example: Gun with muzzle flash

<!-- Gun icon with viewBox 0 0 512 512, barrel tip at (486, 175) --> <svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"> <path d="M79.238 115.768..." fill="#333"/> <!-- Gun icon -->

<!-- Position muzzle flash at barrel tip coordinates --> <g transform="translate(486, 175)"> <polygon points="0,0 15,-8 12,0 15,8" fill="#FF6600"> <animate attributeName="opacity" values="1;0;1" dur="0.1s" repeatCount="indefinite"/> </polygon> </g> </svg>

Finding attachment points:

Icon Type Attachment Point How to Find

Guns/Weapons Barrel tip Rightmost X, mid-height Y in icon's coordinate space

Swords/Blades Blade tip Topmost or rightmost point in icon's coordinate space

Characters Hand position Look for arm/hand path segments, note their coordinates

Vehicles Exhaust/Wheels Bottom or rear coordinates in icon's coordinate space

Debugging tip: Add a visible circle at the attachment point to verify position:

<circle cx="486" cy="175" r="5" fill="red"/> <!-- Shows barrel tip location -->

Target Transform

45° (up-right) rotate(45) ✓

135° (down-right) rotate(135) ✓

270° (left) rotate(270) or rotate(-90) ✓

❌ Wrong: rotate(-45) for 45° gives 315° (up-left), not 45°

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

shorts-script-personality

No summary provided by upstream source.

Repository SourceNeeds Review
General

video-creator

No summary provided by upstream source.

Repository SourceNeeds Review
General

script-writer-personality

No summary provided by upstream source.

Repository SourceNeeds Review
General

video-director

No summary provided by upstream source.

Repository SourceNeeds Review