black-forest-labs/skills
Official skills from Black Forest Labs for FLUX image generation models. These skills provide prompting guidelines and API integration patterns following the https://agentskills.io specification.
This project provides official image generation skills for FLUX models, offering standardized prompting guidelines and API integration patterns following the agentskills.io specification. It functions as a technical resource for developers to implement text-to-image and image-to-image workflows through structured JSON prompting, hex color specification, and multi-reference editing. The repository includes a model selection guide for FLUX.1 and FLUX.2 variants and can be integrated directly into Claude Code as a plugin. Users can access documented API patterns for asynchronous polling, webhook verification, and rate limit management.
- Standardized prompting guidelines for FLUX.1 and FLUX.2 model families
- API integration patterns for polling, webhooks, and error handling
- Support for JSON structured prompting and precise hex color specification
full readme from github
BFL Skills
Official skills from Black Forest Labs for FLUX image generation models. These skills provide prompting guidelines and API integration patterns following the agentskills.io specification.
Installation
npx skills add black-forest-labs/skills
Or install individual skills:
# FLUX best practices only
npx skills add black-forest-labs/skills --skill flux-best-practices
# API integration only
npx skills add black-forest-labs/skills --skill bfl-api
Claude Code Plugin
You can also add this as a plugin marketplace in Claude Code:
/plugin marketplace add black-forest-labs/skills
/plugin install flux-best-practices@black-forest-labs
Skills Included
1. flux-best-practices
Comprehensive guide for all FLUX models including:
- Core Principles - Universal prompting best practices
- Model-Specific Guides - FLUX.2 ([klein], [max], [pro], [flex], [dev]) and FLUX.1
- T2I Prompting - Text-to-image patterns and techniques
- I2I Prompting - Image-to-image editing with FLUX.2 reference images
- JSON Structured Prompting - Complex scene composition
- Hex Color Prompting - Precise color specification (#RRGGBB)
- Typography - Text rendering and font styles
- Multi-Reference Editing - Using multiple reference images
- Negative Prompt Alternatives - Positive replacements (FLUX doesn't support negatives)
- Model Selection Guide - Choosing the right model for your use case
2. bfl-api
API integration guide covering:
- Endpoints - Complete endpoint documentation for all FLUX.2 and FLUX.1 models
- Polling Patterns - Async polling with exponential backoff
- Rate Limiting - Handling 24 concurrent requests
- Error Handling - Error codes and recovery strategies
- Webhook Integration - Production webhook setup and verification
- Code Examples - Python and TypeScript clients
Quick Reference
Model Selection
| Model | Best For | Pricing |
|---|---|---|
| FLUX.2 [klein] | Fastest generation, real-time | from $0.014/image |
| FLUX.2 [pro] | Production balanced | from $0.03/MP |
| FLUX.2 [flex] | Typography/text | from $0.06/MP |
| FLUX.2 [max] | Highest quality, grounding search | from $0.07/MP |
| FLUX.2 [dev] | Local development | Free (non-commercial) |
All FLUX.2 models support both text-to-image and image editing natively—no need for separate models. FLUX.1 models are also available.
Prompt Structure
[Subject] + [Action] + [Style] + [Context] + [Lighting] + [Technical]
Core Rules
- NO negative prompts - FLUX doesn't support them; describe what you want
- Be specific - More detail yields better results
- Use natural language - Prose style works best
- Specify lighting - Has the biggest impact on quality
- Quote text - Use "quoted text" for typography
- Hex colors - Use #RRGGBB with 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