Skip to content
Content
Skill

/vgl

Maximum control over AI image generation — write structured VGL (Visual Generation Language) JSON that explicitly controls every visual attribute. Define exact object placement, lighting direction, camera angle, lens focal length, composition, color scheme, and artistic style as

From plugin
bria-skill
749 skills1 agent

Claude Code

$ npx -y skills add Bria-AI/bria-skill --skill vgl --agent claude-code

SKILL.md

vgl.SKILL.md
name: vgl
description: Maximum control over AI image generation — write structured VGL (Visual Generation Language) JSON that explicitly controls every visual attribute. Define exact object placement, lighting direction, camera angle, lens focal length, composition, color scheme, and artistic style as deterministic JSON instead of ambiguous natural language. Use this skill when you need reproducible image generation, precise control over scene composition, or want to convert a natural language image request into a structured JSON schema for Bria Fibo models. Triggers on requests for structured prompts, controllable generation, VGL JSON, deterministic image descriptions, or Bria/FIBO structured_prompt format.
license: MIT
metadata:
  author: Bria AI
  version: "1.4.0"

Bria VGL — Full Control Over Image Generation

Define every visual attribute as structured JSON instead of hoping natural language gets it right. VGL (Visual Generation Language) gives you explicit, deterministic control over objects, lighting, camera settings, composition, and style for Bria's Fibo models.

> **Related Skill**: Use **[bria-ai](../bria-ai/SKILL.md)** to execute these VGL prompts via the Bria API. VGL defines the structured control format; bria-ai handles generation, editing, and background removal.

Core Concept

VGL replaces ambiguous natural language prompts with deterministic JSON that explicitly declares every visual attribute: objects, lighting, camera settings, composition, and style. This ensures reproducible, controllable image generation.

Operation Modes

| Mode | Input | Output | Use Case | |------|-------|--------|----------| | **Generate** | Text prompt | VGL JSON | Create new image from description | | **Edit** | Image + instruction | VGL JSON | Modify reference image | | **Edit_with_Mask** | Masked image + instruction | VGL JSON | Fill grey masked regions | | **Caption** | Image only | VGL JSON | Describe existing image | | **Refine** | Existing JSON + edit | Updated VGL JSON | Modify existing prompt |

JSON Schema

Output a single valid JSON object with these required keys:

1. `short_description` (String)

Concise summary of image content, max 200 words. Include key subjects, actions, setting, and mood.

2. `objects` (Array, max 5 items)

Each object requires:

{
  "description": "Detailed description, max 100 words",
  "location": "center | top-left | bottom-right foreground | etc.",
  "relative_size": "small | medium | large within frame",
  "shape_and_color": "Basic shape and dominant color",
  "texture": "smooth | rough | metallic | furry | fabric | etc.",
  "appearance_details": "Notable visual details",
  "relationship": "Relationship to other objects",
  "orientation": "upright | tilted 45 degrees | facing left | horizontal | etc."
}

**Human subjects** add:

{
  "pose": "Body position description",
  "expression": "winking | joyful | serious | surprised | calm",
  "clothing": "Attire description",
  "action": "What the person is doing",
  "gender": "Gender description",
  "skin_tone_and_texture": "Skin appearance"
}

**Object clusters** add:

{
  "number_of_objects": 3
}

**Size guidance**: If a person is the main subject, use `"medium-to-large"` or `"large within frame"`.

3. `background_setting` (String)

Overall environment, setting, and background elements not in `objects`.

4. `lighting` (Object)

{
  "conditions": "bright daylight | dim indoor | studio lighting | golden hour | blue hour | overcast",
  "direction": "front-lit | backlit | side-lit from left | top-down",
  "shadows": "long, soft shadows | sharp, defined shadows | minimal shadows"
}

5. `aesthetics` (Object)

{
  "composition": "rule of thirds | symmetrical | centered | leading lines | medium shot | close-up",
  "color_scheme": "monochromatic blue | warm complementary | high contrast | pastel",
  "mood_atmosphere": "serene | energetic | mysterious | joyful | dramatic | peaceful"
}

For people as main subject, specify shot type in composition: `"medium shot"`, `"close-up"`, `"portrait composition"`.

6. `photographic_characteristics` (Object)

{
  "depth_of_field": "shallow | deep | bokeh background",
  "focus": "sharp focus on subject | soft focus | motion blur",
  "camera_angle": "eye-level | low angle | high angle | dutch angle | bird's-eye",
  "lens_focal_length": "wide-angle | 50mm standard | 85mm portrait | telephoto | macro"
}

**For people**: Prefer `"standard lens (35mm-50mm)"` or `"portrait lens (50mm-85mm)"`. Avoid wide-angle unless specified.

7. `style_medium` (String)

`"photograph"` | `"oil painting"` | `"watercolor"` | `"3D render"` | `"digital illustration"` | `"pencil sketch"`

Default to `"photograph"` unless explicitly requested otherwise.

8. `artistic_style` (String)

If not photograph, describe characteristics in max 3 words: `"impressionistic, vibrant, textured"`

For photographs, use `"realistic"` or similar.

9. `context` (String)

Describe the image type/purpose:

  • `"High-fashion editorial photograph for magazine spread"`
  • `"Concept art for fantasy video game"`
  • `"Commercial product photography for e-commerce"`

10. `text_render` (Array)

**Default: empty array `[]`**

Only populate if user explicitly provides exact text content:

{
  "text": "Exact text from user (never placeholder)",
  "location": "center | top-left | bottom",
  "size": "small | medium | large",
  "color": "white | red | blue",
  "font": "serif typeface | sans-serif | handwritten | bold impact",
  "appearance_details": "Metallic finish | 3D effect | etc."
}

Exception: Universal text integral to objects (e.g., "STOP" on stop sign).

11. `edit_instruction` (String)

Single imperative command describing the edit/generation.

Edit Instruction Formats

For Standard Edits (no mask)

Start with action verb, describe changes, never reference "original image":

| Category | Rewritten Instruct

Read more
@bria-ai
Ships withbria-skill

Generate, edit, and precisely control images directly from your AI coding agent using Bria.ai's commercially-safe models.

749 skills1 agent
Get the whole plugin

Stars on GitHub

Momentum

stars in total
74
Star history of Bria-AI/bria-skill on GitHub, a chart by star-history.com

Other skills on bria-skill.

automotive

automotive

Vehicle/automotive image editing for cars, trucks, SUVs, motorcycles — car scenes, reflections, tires refinement with…

@bria-ai@bria-aiInstall Skill
bria-ai

bria-ai

Image generation, photo editing, background removal — transparent PNG images, cutouts, ecommerce packshots, product catalogs,…

@bria-ai@bria-aiInstall Skill
image-utils

image-utils

Classic image manipulation with Python Pillow - resize, crop, composite, format conversion, watermarks, brightness/contrast…

@bria-ai@bria-aiInstall Skill
remove-background

remove-background

Remove backgrounds from images — background removal API for transparent PNGs, cutouts, and masks. Segment foreground from…

@bria-ai@bria-aiInstall Skill
video-remove-background

video-remove-backgroun…

Remove backgrounds from videos — video background removal API for transparent videos, alpha-channel clips, and green-screen-free…

@bria-ai@bria-aiInstall Skill
ad-delayer

ad-delayer

Turn a finished, flat ad image back into editable layers — background, product shot, logo, headline, body copy and CTA, each…

@bria-ai@bria-aiInstall Skill

More skills from other plugins.

prompt-lookup

prompt-lookup

Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…

@gh-f@gh-fInstall Skill
ppt-master

ppt-master

AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…

@hugohe3@hugohe3Install Skill
morph-ppt

morph-ppt

Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…

officecli11d33k
@iofficeai@iofficeaiInstall Skill

Questions about vgl.

Which coding agents can use vgl?
vgl installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.