BFL Skills

Skill

Official Black Forest Labs skills: teach agents to write strong FLUX image prompts (typography, exact color values, multi-reference editing) and call the BFL API to generate images, FLUX 3 short videos with sound, and product ads. Prompting needs no API; generation needs a BFL API key.

black-forest-labs/skills130
GitHub에서 보기
README

BFL Skills

Official Black Forest Labs skills for FLUX image and video generation.

Installation • What's inside • FLUX 3 reference • Image reference • Documentation • License


Each skill teaches your coding agent how to prompt a FLUX model well and drive the BFL API correctly, following the agentskills.io specification.

Every clip in the reel below came out of FLUX 3 in one request, sound and all: a night-market conversation in Thai, a honey macro, a paper boat in stop motion, sparklers on Super 8, rain in a noir alley.

FLUX 3 style reel: five styles, one model, audio on every shot

Installation

Everything at once:

npx skills add black-forest-labs/skills

Or start with one skill and add specialists as you need them:

# FLUX 3 video: the router pulls in the right specialist per request
npx skills add black-forest-labs/skills --skill flux-3-video

# Image prompting for every FLUX model
npx skills add black-forest-labs/skills --skill flux-image-best-practices

# BFL API integration (polling, webhooks, error handling)
npx skills add black-forest-labs/skills --skill bfl-api
Install individual FLUX 3 specialists
npx skills add black-forest-labs/skills --skill flux-3-prompt-doctor
npx skills add black-forest-labs/skills --skill flux-3-cinematic-inserts
npx skills add black-forest-labs/skills --skill flux-3-keyframes-continuation
npx skills add black-forest-labs/skills --skill flux-3-audio-dialogue
npx skills add black-forest-labs/skills --skill flux-3-generate
npx skills add black-forest-labs/skills --skill flux-3-archival-formats
npx skills add black-forest-labs/skills --skill flux-3-product-ads

Claude Code plugin

/plugin marketplace add black-forest-labs/skills
# Image skills
/plugin install flux-image-best-practices@black-forest-labs
# FLUX 3 video suite
/plugin install flux-3-video@black-forest-labs

What's inside

SkillWhat it teaches your agent
flux-image-best-practicesPrompting for every FLUX model: T2I and I2I patterns, JSON structured prompts, hex colors, typography, multi-reference editing, model selection
bfl-apiThe BFL API end to end: endpoints, async polling, rate limits, error recovery, webhooks, Python and TypeScript clients
flux-3-video (suite, below)Video generation with native audio, from a single shot to a finished product ad

The FLUX 3 video suite

Eight skills that hand off to each other. Install the router alone and it names the specialist a request needs; install only the specialists you use.

SkillUse it to
flux-3-videoRoute a general FLUX 3 request to the right specialist
flux-3-prompt-doctorGet a readiness verdict (READY / NEEDS INFO / REVISE) before spending a generation
flux-3-cinematic-insertsWrite text-to-video prompts with real shot craft, from a field guide of proven concepts
flux-3-keyframes-continuationBuild from your own images (i2v) or continue a clip (v2v)
flux-3-audio-dialogueDirect speech, voiceover, ambience, effects, and music
flux-3-generateConstruct requests, poll, download, and validate the result
flux-3-archival-formatsGive a shot a period look by naming the format: Super 8, VHS, 16mm, Hi8
flux-3-product-adsAssemble a finished product ad: voiceover, action-to-word sync, QC gates

FLUX 3 quick reference

Modes

Every request names its mode and carries the matching media field:

modeMedia fieldWhat the model does
t2vnoneGenerates the clip from your text alone
i2vkeyframesPuts your images on screen, pixel-exact, as pinned frames
v2vstart_videoContinues from the final frames of your clip
draft_enhancedraft_cacheReplays a chosen draft at full quality

Draft, then commit

A full render takes several minutes. Adding draft: true returns a fast, low-step preview plus a draft_cache, so you can settle concept and composition cheaply before paying for finish. draft_enhance then replays that cache at full quality with the same prompt and settings, so the final render is the shot you approved rather than a fresh attempt.

Judge a draft on event legibility, composition, and continuity. Softness and coarse texture are artifacts of low-step rendering and resolve at full quality.

FLUX image quick reference

Four FLUX.2 [max] generations, one prompt each, no retries. Clockwise from top left: exact quoted typography, hex-specified colors (#2F5D50, #E8A13D, #F2EDE4), flat-vector illustration, photoreal macro detail.

Letterpress storefront with exact quoted lettering: INK & QUARREL, EST. 1962 - FINE PRINTINGCeramic pour-over set with hex-specified green, amber, and off-white palette
Photoreal beekeeper close-up with bees in flight at golden hourIsometric flat-vector cutaway of a lighthouse interior

Model selection

ModelBest forPricing
FLUX.2 [klein]Fastest generation, real-timefrom $0.014/image
FLUX.2 [pro]Production balancedfrom $0.03/MP
FLUX.2 [flex]Typography/textfrom $0.06/MP
FLUX.2 [max]Highest quality, grounding searchfrom $0.07/MP
FLUX.2 [dev]Local developmentFree (non-commercial)

All FLUX.2 models handle both text-to-image and image editing natively. FLUX.1 models are also available.

Prompt structure

[Subject] + [Action] + [Style] + [Context] + [Lighting] + [Technical]

Core rules

  1. No negative prompts. FLUX doesn't support them; describe what you want instead.
  2. Be specific. More detail yields better results.
  3. Use natural language. Prose beats keyword lists.
  4. Specify lighting. It has the biggest impact on quality.
  5. Quote text. Use "quoted text" for typography.
  6. Hex colors. Use #RRGGBB alongside color names.

API quick start

import requests
import time

API_KEY = "your-api-key"
BASE_URL = "https://api.bfl.ai"

# Submit request
response = requests.post(
    f"{BASE_URL}/v1/flux-2-pro",
    headers={"x-key": API_KEY},
    json={"prompt": "A serene mountain landscape"}
)
polling_url = response.json()["polling_url"]

# Poll for result
while True:
    result = requests.get(polling_url, headers={"x-key": API_KEY})
    data = result.json()
    if data["status"] == "Ready":
        print(f"Result: {data['result']}")  # Expires in 10 min
        break
    time.sleep(2)

Documentation

License

MIT