From claude-code-config
Provides expert prompt engineering, templates, and guidelines for FLUX.2 [klein] T2I/I2I image generation, photo editing, and multi-reference workflows.
npx claudepluginhub anastasiyaw/claude-code-configThis skill uses the workspace's default tool permissions.
Official BFL prompting guide requires **connected prose**, not keyword lists.
Guides optimal prompting for BFL FLUX image models with T2I, I2I, JSON structures, typography, hex colors, multi-reference editing, and FLUX.2/FLUX.1 best practices.
Generates images from text prompts using fal.ai FLUX.1/2 Pro/Dev/Schnell and SDXL models. Configures image sizes, guidance scale, inference steps, LoRA, seeds, batching via TypeScript/Python APIs.
Provides prompting techniques for AI image generation and editing models on Replicate, using natural language, photographic terms, and iteration. Useful for writing prompts or building image features.
Share bugs, ideas, or general feedback.
Official BFL prompting guide requires connected prose, not keyword lists. Write: who/what is in the image, where, in what style, materials/light/camera, and — for editing — what must remain unchanged.
| Axis | Options | Notes |
|---|---|---|
| Size | 4B / 9B | 9B better for complex instructions; 4B fastest |
| Mode | Distilled / Base | Distilled = 4 steps, CFG≈1.0; Base = 50 steps, CFG≈4.0 |
| License | 4B Apache-2.0 / 9B Non-Commercial | Check before commercial use |
| Task | T2I / Edit (I2I) / Multi-reference | Edit requires input_image; up to 4 ref images via API |
9B uses Qwen3 8B text embedder → solid multilingual support (Russian works natively).
Text in image → always in straight quotes, specify position. Without this: garbled glyphs.
Заголовок: "ТОЧНЫЙ ТЕКСТ". Шрифт жирный гротеск, ровный кернинг. Других надписей не добавлять.
Negatives → positives → don't say "don't change X", say "preserve X"
❌ "не меняй освещение"
✅ "Сохрани освещение, перспективу и лицо"
Multi-reference → simplify text, use explicit indexing
"Возьми персонажа из image 2 и помести рядом с объектом из image 1."
Distilled for previews, Base for finals
Фотореалистичная предметная фотография [объект] на [фон], ракурс [сверху/на уровне глаз/крупный план], мягкий студийный свет, реалистичные материалы и фактуры, аккуратные тени, высокая детализация. Без логотипов и водяных знаков.
Каталожный product shot: [товар] в центре кадра, фон [описание], чистая композиция, цвет товара строго [HEX или словом], реалистичные отражения, нейтральный стиль, как для e-commerce.
Минималистичная иконка: [смысл/символ], плоский дизайн, 2–3 цвета, чёткий силуэт, без мелких деталей. Без текста.
Персонаж: [кто], внешний вид: [рост/пропорции/одежда], выражение лица [эмоция], стиль [аниме/3D/иллюстрация], палитра [цвета], фон простой. Сохранить узнаваемость: [признак 1], [признак 2].
Набор стикеров одного персонажа (6 штук): радость, злость, удивление, смущение, сон, восторг. Единый стиль, толстый контур, яркая палитра, прозрачный фон, без текста.
Постер [стиль]. Вверху крупный заголовок: "ТОЧНЫЙ ТЕКСТ". Шрифт: жирный гротеск, ровный кернинг, читаемо. Ниже подзаголовок: "Ещё одна строка". Остальные надписи не добавлять.
UI‑мокап мобильного приложения [тематика]. 3 экрана в одной сетке. Читаемые заголовки на русском в кавычках: "[Экран 1]", "[Экран 2]", "[Экран 3]". Минималистичная дизайн‑система, много воздуха, аккуратная типографика, без лишнего декоративного шума.
Бесшовная текстура (seamless): [материал], равномерное освещение, без объектов, без текста, высокая детализация, натуральные вариации, без резких пятен.
Это то же изображение, но: [что изменить]. Сохрани: [освещение / перспектива / лицо / композиция / стиль]. Сделай результат фотореалистичным и согласованным по теням и отражениям.
Это то же изображение, но добавь на [табличку/вывеску] точный текст: "[ТЕКСТ]". Сохрани стиль таблички, фон и освещение. Текст должен быть читаемым. Больше текста не добавляй.
Это то же изображение, но возьми персонажа из image 2 и помести рядом с персонажем из image 1. Сохрани реалистичные тени, масштаб и общую атмосферу сцены.
| Mode | Steps | guidance_scale | Use for |
|---|---|---|---|
| Distilled | 4 | ~1.0 | Fast previews, interactive |
| Base | 50 | ~4.0 | Final renders, detail/diversity |
steps / guidance not exposed in klein API (unlike flex) — control via prompt + seed + resolutionprompt, input_image, input_image_2..4, seed, width, height, safety_tolerance, output_format, webhook
import os, time, requests
BFL_API_KEY = os.environ["BFL_API_KEY"]
# 1. Create task
create = requests.post(
"https://api.bfl.ai/v1/flux-2-klein-4b",
headers={"x-key": BFL_API_KEY, "Content-Type": "application/json"},
json={
"prompt": 'Это то же изображение, но добавь на вывеску текст "ОТКРЫТО". '
"Сохрани фон, освещение и перспективу. Больше текста не добавляй.",
"input_image": "https://example.com/your-image.png",
"seed": 42,
"output_format": "png",
},
timeout=60,
)
task = create.json()
# 2. Poll until ready
while True:
time.sleep(0.5)
data = requests.get(task["polling_url"], headers={"x-key": BFL_API_KEY}).json()
if data["status"] == "Ready":
print("Done:", data["result"]["sample"]) # signed URL
break
if data["status"] in ("Error", "Failed"):
raise RuntimeError(data)
import torch
from PIL import Image
from diffusers import Flux2KleinPipeline
pipe = Flux2KleinPipeline.from_pretrained(
"black-forest-labs/FLUX.2-klein-4B", torch_dtype=torch.bfloat16
).to("cuda")
# T2I
image = pipe(
prompt='Постер "КОФЕ". Жирный гротеск, ровный кернинг, без других надписей.',
height=1024, width=1024,
guidance_scale=1.0, num_inference_steps=4,
generator=torch.Generator("cuda").manual_seed(42),
).images[0]
# Edit (I2I)
base = Image.open("input.png").convert("RGB").resize((1024, 1024))
edited = pipe(
prompt="Это то же изображение, но замени фон на светлую кухню. "
"Сохрани объект, освещение и перспективу.",
image=[base],
height=1024, width=1024,
guidance_scale=1.0, num_inference_steps=4,
).images[0]
| Problem | Cause | Fix |
|---|---|---|
| Garbled text / glyphs | Text not quoted explicitly | Exact string in quotes; say "no other text" |
| Blurry / artifacts | Distilled 4-step compromise | Switch to Base (50 steps) for finals |
| Style drift in edit | Missing preservation clause | Always add "Сохрани: свет/лицо/композицию" |
| Multi-reference "soup" | Overloaded prompt + conflicting refs | Simplify text; use "image 1 / image 2" indexing |
| Wrong resolution | Input not multiple of 16 | Pre-resize input to ×16, ≤4MP |