Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Execute Ideogram production deployment checklist and rollback procedures. Use when deploying Ideogram integrations to production, preparing for launch, or implementing go-live procedures. Trigger with phrases like "ideogram production", "deploy ideogram", "ideogram go-live", "ideogram launch checklist", "ideogram production ready".
.claude/skills/jeremylongshore-ideogram-prod-checklist/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -43% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 90% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 60% | 0% |
Complete pre-flight checklist for deploying Ideogram image generation to production. Covers API key management, timeout configuration, image persistence, error handling, monitoring, and rollback procedures.
.env file)https://api.ideogram.ai (no trailing slash)Api-Key header used (not Authorization: Bearer)is_image_safe response field checked before displaying to userstypescriptasync function ideogramHealthCheck(): Promise<{ status: "healthy" | "degraded" | "down"; latencyMs: number; details: string; }> { const start = Date.now(); try { const response = await fetch("https://api.ideogram.ai/generate", { method: "POST", headers: { "Api-Key": process.env.IDEOGRAM_API_KEY!, "Content-Type": "application/json", }, body: JSON.stringify({ image_request: { prompt: "health check: simple blue dot", model: "V_2_TURBO", magic_prompt_option: "OFF", }, }), signal: AbortSignal.timeout(30000), }); const latencyMs = Date.now() - start; if (response.ok) { return { status: "healthy", latencyMs, details: "Generation succeeded" }; } if (response.status === 429) { return { status: "degraded", latencyMs, details: "Rate limited" }; } return { status: "down", latencyMs, details: `HTTP ${response.status}` }; } catch (err: any) { return { status: "down", latencyMs: Date.now() - start, details: err.message }; } }
bashset -euo pipefail echo "=== Ideogram Pre-Flight Checks ===" # 1. Verify production key STATUS=$(curl -s -o /dev/null -w "%{http_code}" \ -X POST https://api.ideogram.ai/generate \ -H "Api-Key: $IDEOGRAM_API_KEY" \ -H "Content-Type: application/json" \ -d '{"image_request":{"prompt":"deploy check","model":"V_2_TURBO","magic_prompt_option":"OFF"}}') if [ "$STATUS" != "200" ]; then echo "FAIL: API returned $STATUS" exit 1 fi echo "PASS: API key valid (HTTP $STATUS)" # 2. Verify image download IMAGE_URL=$(curl -s -X POST https://api.ideogram.ai/generate \ -H "Api-Key: $IDEOGRAM_API_KEY" \ -H "Content-Type: application/json" \ -d '{"image_request":{"prompt":"deploy check","model":"V_2_TURBO","magic_prompt_option":"OFF"}}' \ | jq -r '.data[0].url') DL_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$IMAGE_URL") echo "PASS: Image download works (HTTP $DL_STATUS)" echo "=== All pre-flight checks passed ==="
| Alert | Condition | Severity | |-------|-----------|----------| | API Unreachable | Health check returns down | P1 | | Auth Failure | Any 401 response | P1 | | Rate Limited | >5 consecutive 429 responses | P2 | | Slow Generation | P95 latency > 30 seconds | P2 | | Credits Low | Balance below $10 | P2 | | Safety Rejections | >10% of prompts rejected | P3 |
bashset -euo pipefail # If Ideogram is down or producing bad results # 1. Enable fallback mode (disable image generation, show placeholders) kubectl set env deployment/app IDEOGRAM_ENABLED=false kubectl rollout restart deployment/app # 2. Verify fallback is active curl -s https://app.example.com/health | jq '.services.ideogram' # 3. Re-enable when resolved kubectl set env deployment/app IDEOGRAM_ENABLED=true kubectl rollout restart deployment/app
| Alert | Condition | Action | |-------|-----------|--------| | API Down | 5xx or timeout | Enable fallback, notify on-call | | Key Revoked | 401 | Rotate key, update secrets | | Credits Empty | 402 | Top up billing, pause batch jobs | | Rate Flood | 429 sustained | Reduce concurrency, queue jobs |
For version upgrades, see ideogram-upgrade-migration.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 44,858 | 19,406 | -57% | 1 | 1 | 0% | 7,866 | 4,449 | -43% | 0 | 0 | — |
case-02 | fail→pass | 25,672 | 40,063 | +56% | 1 | 1 | 0% | 4,419 | 7,029 | +59% | 0 | 0 | — |
case-03 | fail→pass | 26,821 | 24,199 | -10% | 1 | 1 | 0% | 3,718 | 4,271 | +15% | 0 | 0 | — |
case-04 | pass→pass | 11,894 | 16,130 | +36% | 1 | 1 | 0% | 2,242 | 5,066 | +126% | 0 | 0 | — |
case-05 | pass→pass | 17,666 | 22,172 | +26% | 1 | 1 | 0% | 2,718 | 4,565 | +68% | 0 | 0 | — |
case-06 | pass→pass | 16,560 | 18,938 | +14% | 1 | 1 | 0% | 2,883 | 4,139 | +44% | 0 | 0 | — |
case-07 | pass→pass | 13,336 | 10,363 | -22% | 1 | 1 | 0% | 1,476 | 2,532 | +72% | 0 | 0 | — |
case-08 | pass→pass | 16,703 | 14,559 | -13% | 1 | 1 | 0% | 1,778 | 3,204 | +80% | 0 | 0 | — |
case-09 | fail→pass | 17,959 | 14,607 | -19% | 1 | 1 | 0% | 1,724 | 3,277 | +90% | 0 | 0 | — |
case-10 | fail→pass | 16,141 | 6,989 | -57% | 1 | 1 | 0% | 1,782 | 2,857 | +60% | 0 | 0 | — |
case-11 | pass→pass | 19,480 | 17,465 | -10% | 1 | 1 | 0% | 3,434 | 4,703 | +37% | 0 | 0 | — |
case-12 | fail→pass | 11,608 | 7,394 | -36% | 1 | 1 | 0% | 1,123 | 1,995 | +78% | 0 | 0 | — |
case-13 | fail→pass | 18,931 | 28,150 | +49% | 1 | 1 | 0% | 2,305 | 3,557 | +54% | 0 | 0 | — |
case-14 | pass→pass | 9,577 | 9,914 | +4% | 1 | 1 | 0% | 1,468 | 2,340 | +59% | 0 | 0 | — |
case-15 | pass→pass | 15,508 | 8,040 | -48% | 1 | 1 | 0% | 1,952 | 2,111 | +8% | 0 | 0 | — |
case-16 | fail→pass | 19,216 | 8,026 | -58% | 1 | 1 | 0% | 2,156 | 1,880 | -13% | 0 | 0 | — |
case-17 | fail→pass | 16,272 | 6,865 | -58% | 1 | 1 | 0% | 1,671 | 1,883 | +13% | 0 | 0 | — |
case-18 | pass→pass | 20,292 | 6,901 | -66% | 1 | 1 | 0% | 2,271 | 1,897 | -16% | 0 | 0 | — |
case-19 | pass→pass | 10,116 | 7,766 | -23% | 1 | 1 | 0% | 695 | 1,871 | +169% | 0 | 0 | — |
case-20 | fail→pass | 19,184 | 3,446 | -82% | 1 | 1 | 0% | 2,186 | 2,141 | -2% | 0 | 0 | — |
case-21 | pass→pass | 13,654 | 9,198 | -33% | 1 | 1 | 0% | 2,312 | 2,184 | -6% | 0 | 0 | — |
case-22 | pass→pass | 16,034 | 6,156 | -62% | 1 | 1 | 0% | 1,816 | 2,553 | +41% | 0 | 0 | — |
case-23 | pass→pass | 14,505 | 3,591 | -75% | 1 | 1 | 0% | 1,459 | 2,203 | +51% | 0 | 0 | — |
case-24 | fail→pass | 11,938 | 9,039 | -24% | 1 | 1 | 0% | 1,734 | 2,184 | +26% | 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. 24 cases were attempted. The headline lift of +46 percentage points is the difference between those two pass rates over the 24 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.