genart.dev

Composition

Composition design skills — golden ratio, rule of thirds, visual balance

Composition Skills

Composition skills teach AI agents how to arrange visual elements for balanced, intentional generative art. Load these via the load_skill tool.

Available skills

golden-ratio

The golden ratio (1.618...) creates naturally pleasing proportions. Apply it to:

  • Canvas division — split the composition at 61.8% / 38.2%
  • Element sizing — scale elements by successive golden ratio factors
  • Spiral placement — arrange elements along a golden spiral
load_skill({ skill: "golden-ratio" })

rule-of-thirds

Divide the canvas into a 3x3 grid. Place focal points at intersection points for dynamic, balanced compositions.

  • Grid intersections — 4 power points at 1/3 and 2/3 of width/height
  • Horizontal bands — sky/ground, foreground/background divisions
  • Off-center focus — avoid centering the main subject
load_skill({ skill: "rule-of-thirds" })

visual-balance

Distribute visual weight evenly across the composition. Visual weight is influenced by:

  • Size — larger elements are heavier
  • Color — warm and saturated colors are heavier
  • Contrast — high-contrast elements draw more attention
  • Position — elements near the edges feel heavier
  • Density — clusters of small elements balance single large elements

symmetry

Apply symmetrical or asymmetrical balance:

  • Reflective symmetry — mirror elements across an axis
  • Rotational symmetry — repeat elements around a center point
  • Asymmetrical balance — balance unequal elements through visual weight

contrast

Use contrast to create visual hierarchy and interest:

  • Value contrast — light vs. dark
  • Color contrast — complementary or high-saturation differences
  • Scale contrast — large vs. small elements
  • Density contrast — sparse vs. dense areas

Using skills in algorithms

When a skill is loaded, the AI agent receives principles and examples that inform how it writes or modifies algorithm code. For example, applying golden-ratio might lead to:

const PHI = 1.618033988749895;
const primarySize = WIDTH / PHI;
const secondarySize = primarySize / PHI;

Skills are referenced in the .genart file's skills array:

{
  "skills": ["golden-ratio", "complementary"]
}