Load this on-demand when the user asks about presets or brand consistency.
Each preset is stored as ~/.banana/presets/NAME.json:
{
"name": "tech-saas",
"description": "Clean tech SaaS brand",
"colors": ["#2563EB", "#1E40AF", "#F8FAFC"],
"style": "clean minimal tech illustration, flat vectors, soft shadows",
"typography": "bold geometric sans-serif",
"lighting": "bright diffused studio, no harsh shadows",
"mood": "professional, trustworthy, modern",
"default_ratio": "16:9",
"default_resolution": "2K"
}
When a preset is active, Claude uses its values as defaults for the Reasoning Brief: 1. Colors → inform palette descriptions in Context and Style components 2. Style → becomes the base for the Style component 3. Typography → used for any text rendering 4. Lighting → becomes the base for the Lighting component 5. Mood → influences Action and Context components
User instructions always override preset values. If a user says "make it dark" but the preset has bright lighting, follow the user's instruction.
# List presets
presets.py list
# Show details
presets.py show tech-saas
# Create interactively (Claude fills in details from conversation)
presets.py create NAME --colors "#hex,#hex" --style "..." --mood "..."
# Delete
presets.py delete NAME --confirm