Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user asks to generate images via the Luma AI API (Dream Machine / Photon); collects a prompt and options interactively, then calls the API using the bundled script. Requires LUMA_API_KEY — will prompt the user if missing.
.claude/skills/davila7-luma-imagegen/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 195% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 173% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 215% | 0% |
Generates images using the Luma AI Photon model (Dream Machine API). Handles API key detection, interactive prompt collection, parameter selection, async polling, and final image download — all via the bundled scripts/luma_imagegen.py CLI.
modify_image_refLUMA_API_KEY in environment. If missing, guide the user (see below).scripts/luma_imagegen.py with the collected parameters.state: completed.output/luma/.Before any API call, check for the key:
bashpython3 ${CLAUDE_SKILL_DIR}/scripts/luma_imagegen.py --check-key
If LUMA_API_KEY is missing:
.env file or export it in their shell:bash export LUMA_API_KEY=your_key_here
--check-key command to verify.Ask these questions before running the generation:
1:1, 3:4, 4:3, 9:16, 16:9 (default), 9:21, 21:9"photon-1 (higher quality) or photon-flash-1 (faster and cheaper)?"Only ask what's needed — skip questions the user has already answered in their message.
bashpython3 ${CLAUDE_SKILL_DIR}/scripts/luma_imagegen.py \ --prompt "YOUR AUGMENTED PROMPT" \ --aspect-ratio 16:9 \ --model photon-1 \ [--image-ref "https://example.com/ref.jpg" --image-ref-weight 0.85] \ [--out output/luma/]
All flags: | Flag | Default | Description | |------|---------|-------------| | --prompt | (required) | Text description of the image | | --aspect-ratio | 16:9 | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 | | --model | photon-1 | photon-1 or photon-flash-1 | | --image-ref | — | Public URL for style/structure reference | | --image-ref-weight | 0.85 | Weight of reference image (0.0–1.0) | | --modify-ref | — | Base image URL to modify | | --modify-ref-weight | 0.5 | Weight for modification fidelity | | --out | output/luma/ | Output directory for downloaded images | | --poll-interval | 3 | Seconds between polling requests | | --check-key | — | Verify LUMA_API_KEY is set and exit |
output/luma/ with descriptive filenames (e.g., photon1_hero_16x9.png). The output directory is relative to the current working directory when the script is invoked.failure_reason from the API response.Reformat the user's description into a structured spec. Only make implied details explicit — do not invent new requirements.
Template (include only relevant lines):
Primary request: <user's main prompt>
Scene/background: <environment or setting>
Subject: <main subject>
Style/medium: <photo/illustration/3D/cinematic/etc>
Composition/framing: <wide/close-up/overhead; subject placement>
Lighting/mood: <lighting type and emotional tone>
Color palette: <dominant colors or palette notes>
Aspect ratio: <e.g., 16:9 landscape>
Avoid: <elements to exclude>Augmentation rules:
Primary request: a misty mountain lake at sunrise
Scene/background: alpine lake surrounded by pine trees, light morning fog
Style/medium: photorealistic nature photography
Composition/framing: wide panoramic, lake centered, mountains in background
Lighting/mood: golden hour, warm and serene
Aspect ratio: 16:9 landscape
Avoid: people, boats, watermarks, oversaturationPrimary request: a ceramic coffee mug on a wooden table
Scene/background: warm kitchen interior, soft bokeh background
Subject: minimalist white ceramic mug, steam rising
Style/medium: clean product photography
Lighting/mood: soft diffused window light
Aspect ratio: 1:1 square
Avoid: text, logos, harsh shadows, clutterphoton-flash-1 for quick iteration; switch to photon-1 for final quality.| Model | Speed | Quality | Best for | |-------|-------|---------|----------| | photon-1 | Slower | Higher | Final assets, complex scenes | | photon-flash-1 | Fast | Good | Rapid iteration, drafts |
The script uses only the Python standard library. No additional packages are required.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 30,591 | 3,497 | -89% | 1 | 1 | 0% | 2,821 | 2,109 | -25% | 0 | 0 | — |
case-02 | fail→fail | 11,122 | 3,423 | -69% | 1 | 1 | 0% | 1,843 | 2,051 | +11% | 0 | 0 | — |
case-03 | fail→fail | 9,027 | 5,605 | -38% | 1 | 1 | 0% | 1,469 | 1,997 | +36% | 0 | 0 | — |
case-04 | pass→pass | 10,453 | 7,188 | -31% | 1 | 1 | 0% | 1,908 | 2,334 | +22% | 0 | 0 | — |
case-05 | fail→pass | 10,208 | 3,077 | -70% | 1 | 1 | 0% | 1,688 | 2,167 | +28% | 0 | 0 | — |
case-06 | fail→pass | 4,735 | 3,309 | -30% | 1 | 1 | 0% | 756 | 2,232 | +195% | 0 | 0 | — |
case-07 | fail→pass | 10,966 | 4,927 | -55% | 1 | 1 | 0% | 1,756 | 2,497 | +42% | 0 | 0 | — |
case-08 | fail→pass | 5,227 | 4,198 | -20% | 1 | 1 | 0% | 871 | 2,378 | +173% | 0 | 0 | — |
case-09 | fail→pass | 3,884 | 1,591 | -59% | 1 | 1 | 0% | 634 | 1,998 | +215% | 0 | 0 | — |
case-10 | fail→pass | 4,891 | 2,349 | -52% | 1 | 1 | 0% | 814 | 2,095 | +157% | 0 | 0 | — |
case-11 | fail→pass | 6,566 | 2,795 | -57% | 1 | 1 | 0% | 1,092 | 2,265 | +107% | 0 | 0 | — |
case-12 | fail→pass | 16,757 | 2,346 | -86% | 1 | 1 | 0% | 1,757 | 2,134 | +21% | 0 | 0 | — |
case-13 | fail→pass | 7,018 | 3,465 | -51% | 1 | 1 | 0% | 1,018 | 1,985 | +95% | 0 | 0 | — |
case-14 | fail→pass | 15,517 | 5,587 | -64% | 1 | 1 | 0% | 2,447 | 2,683 | +10% | 0 | 0 | — |
case-15 | fail→pass | 4,592 | 3,199 | -30% | 1 | 1 | 0% | 692 | 1,947 | +181% | 0 | 0 | — |
case-16 | pass→pass | 7,185 | 1,774 | -75% | 1 | 1 | 0% | 1,076 | 1,948 | +81% | 0 | 0 | — |
case-17 | pass→pass | 8,104 | 5,053 | -38% | 1 | 1 | 0% | 1,346 | 2,528 | +88% | 0 | 0 | — |
case-18 | pass→pass | 14,188 | 7,146 | -50% | 1 | 1 | 0% | 2,112 | 2,820 | +34% | 0 | 0 | — |
case-19 | pass→pass | 11,337 | 3,597 | -68% | 1 | 1 | 0% | 1,925 | 2,300 | +19% | 0 | 0 | — |
case-20 | fail→pass | 10,496 | 5,202 | -50% | 1 | 1 | 0% | 1,789 | 2,555 | +43% | 0 | 0 | — |
case-21 | pass→pass | 12,101 | 6,137 | -49% | 1 | 1 | 0% | 2,083 | 2,720 | +31% | 0 | 0 | — |
case-22 | pass→pass | 8,867 | 8,155 | -8% | 1 | 1 | 0% | 1,734 | 3,313 | +91% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +55 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.