Files
english/.opencode/skills/ai-artist/references/validation-workflow.md
2026-04-12 01:06:31 +07:00

3.9 KiB

AI Artist Validation Workflow

Agent instructions for mandatory validation interview before image generation.

Step 1: Parse Arguments

Extract from user input:

  • concept: The subject/description (required)
  • --mode: search (default), creative, or wild
  • --skip: If present, use defaults and skip to Step 4

Defaults for --skip mode: Style=Photorealistic, Mood=Professional, Colors=Auto, Aspect=16:9

Step 2: Interview User

Use AskUserQuestion with these 4 questions in a single call:

{"questions": [
  {"question": "Visual style?", "header": "Style", "multiSelect": false, "options": [
    {"label": "Photorealistic (Recommended)", "description": "Professional photography, 8K"},
    {"label": "Cinematic", "description": "Film-like, dramatic lighting"},
    {"label": "Illustration", "description": "Digital art, stylized"},
    {"label": "Minimalist", "description": "Clean, white space"}
  ]},
  {"question": "Mood?", "header": "Mood", "multiSelect": false, "options": [
    {"label": "Professional", "description": "Corporate, trustworthy"},
    {"label": "Energetic", "description": "Dynamic, bold"},
    {"label": "Calm", "description": "Peaceful, serene"},
    {"label": "Dramatic", "description": "High contrast, intense"}
  ]},
  {"question": "Colors?", "header": "Colors", "multiSelect": false, "options": [
    {"label": "Auto-select (Recommended)", "description": "AI chooses"},
    {"label": "Warm tones", "description": "Oranges, reds"},
    {"label": "Cool tones", "description": "Blues, greens"},
    {"label": "High contrast", "description": "Blacks, neons"}
  ]},
  {"question": "Aspect ratio?", "header": "Ratio", "multiSelect": false, "options": [
    {"label": "16:9 (Recommended)", "description": "Widescreen"},
    {"label": "1:1", "description": "Square"},
    {"label": "9:16", "description": "Vertical"},
    {"label": "4:3", "description": "Standard"}
  ]}
]}

Dynamic questions (ask separately if concept matches):

  • "banner/poster/thumbnail" → Ask about text space
  • "product/showcase" → Ask about background preference

Step 3: Build Prompt

Map answers to keywords:

Style Keywords
Photorealistic photorealistic, professional photography, 8K, RAW
Cinematic cinematic, film still, anamorphic, dramatic lighting
Illustration digital illustration, artistic, stylized
Minimalist minimalist, clean design, white space
Mood Keywords
Professional professional, clean, corporate, polished
Energetic dynamic, bold, vibrant, high energy
Calm serene, peaceful, soft, tranquil
Dramatic dramatic, high contrast, intense, moody
Colors Keywords
Auto-select (none)
Warm tones warm palette, golden tones, amber
Cool tones cool palette, blue tones, teal
High contrast high contrast, bold blacks, neon

Template: [concept], [style], [mood], [colors]. Professional quality. NEVER add watermarks.

Step 4: Confirm & Generate

Show preview, then ask confirmation:

{"questions": [{"question": "Generate?", "header": "Confirm", "multiSelect": false, "options": [
  {"label": "Yes, generate (Recommended)", "description": "Proceed"},
  {"label": "Edit prompt", "description": "Modify first"},
  {"label": "Start over", "description": "Re-answer"}
]}]}

If "Edit prompt": Ask user for edited text, use that instead. If "Start over": Return to Step 2.

Run generation:

cd .opencode/skills/ai-artist && .venv/bin/python3 scripts/generate.py "[concept]" \
  -o ./generated-$(date +%Y%m%d-%H%M%S).png \
  --mode [mode] \
  -ar [ratio] \
  -v

Error Handling

Error Action
API key missing Tell user to set GEMINI_API_KEY
Model error Suggest --model flash
No concept Ask user for concept

Output

[OK] Image generated: [path]
    Style: [style] | Mood: [mood] | Aspect: [ratio]

Tip: Use --skip to bypass interview next time.