genart.dev
Plugins

Compositing

Layer compositing — solid fills, gradients, images, and groups.

Compositing layers for backgrounds, overlays, and layer organization.

Installation

npm install @genart-dev/plugin-compositing

Layer Types

Type IDDisplay NameDescription
composite:solidSolidFlat color fill layer
composite:gradientGradientLinear or radial gradient fill
composite:imageImageImage layer with fit/fill/stretch modes
composite:groupGroupLayer group with shared blend mode and opacity

Properties

composite:solid

PropertyTypeDefaultDescription
colorcolor"#ffffff"Fill color
opacitynumber1.0Layer opacity (0-1)

composite:gradient

PropertyTypeDefaultDescription
typeselect"linear"Gradient type: linear, radial, conic
anglenumber180Gradient angle in degrees (linear only)
stopsarray[{"offset":0,"color":"#000"},{"offset":1,"color":"#fff"}]Color stop array
centerXnumber0.5Center X for radial/conic (0-1)
centerYnumber0.5Center Y for radial/conic (0-1)
radiusnumber0.5Radius for radial gradient (0-1)
opacitynumber1.0Layer opacity (0-1)

composite:image

PropertyTypeDefaultDescription
srcstring""Image source (URL or data URI)
fitselect"cover"Fit mode: cover, contain, fill, stretch
positionXnumber0.5Horizontal position (0-1)
positionYnumber0.5Vertical position (0-1)
opacitynumber1.0Layer opacity (0-1)

composite:group

PropertyTypeDefaultDescription
childrenarray[]Array of child layer IDs
blendModeselect"normal"Group blend mode
opacitynumber1.0Group opacity (0-1)
collapsedbooleanfalseCollapsed in layer panel

MCP Tools

ToolDescription
design_add_solidAdd a solid color fill layer
design_add_gradientAdd a gradient fill layer
design_add_imageAdd an image layer
design_add_groupCreate a layer group

Example

{
  "tool": "design_add_layer",
  "arguments": {
    "type": "composite:gradient",
    "properties": {
      "type": "radial",
      "stops": [
        { "offset": 0, "color": "#1a1a2e" },
        { "offset": 0.5, "color": "#16213e" },
        { "offset": 1, "color": "#0f3460" }
      ],
      "centerX": 0.5,
      "centerY": 0.4,
      "radius": 0.8
    }
  }
}