Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Production readiness checklist for Figma REST API integrations. Use when deploying Figma integrations to production, preparing for launch, or auditing an existing integration for production fitness. Trigger with phrases like "figma production", "deploy figma", "figma go-live", "figma launch checklist".
.claude/skills/jeremylongshore-figma-prod-checklist/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | -13% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 146% | 0% |
Complete checklist for deploying Figma API integrations to production, covering authentication, error handling, rate limits, monitoring, and rollback.
file_content:read, not files:read)Retry-After header honored on 429 responsestypescript// Health check endpoint async function figmaHealthCheck() { const start = Date.now(); try { const res = await fetch('https://api.figma.com/v1/me', { headers: { 'X-Figma-Token': process.env.FIGMA_PAT! }, signal: AbortSignal.timeout(5000), }); return { status: res.ok ? 'healthy' : 'degraded', latencyMs: Date.now() - start, httpStatus: res.status, }; } catch (error) { return { status: 'unhealthy', latencyMs: Date.now() - start, error: error instanceof Error ? error.message : 'Unknown', }; } }
bash#!/bin/bash echo "=== Figma Production Pre-Flight ===" # 1. Token valid? STATUS=$(curl -s -o /dev/null -w "%{http_code}" \ -H "X-Figma-Token: ${FIGMA_PAT}" \ https://api.figma.com/v1/me) echo "Auth: $STATUS (expect 200)" # 2. File accessible? STATUS=$(curl -s -o /dev/null -w "%{http_code}" \ -H "X-Figma-Token: ${FIGMA_PAT}" \ "https://api.figma.com/v1/files/${FIGMA_FILE_KEY}?depth=1") echo "File: $STATUS (expect 200)" # 3. Figma status page echo -n "Figma Status: " curl -s https://www.figmastatus.com/api/v2/status.json 2>/dev/null \ | jq -r '.status.description // "Unable to check"' echo "=== Pre-flight complete ==="
| Alert | Condition | Severity | Action | |-------|-----------|----------|--------| | Auth Failure | 403 errors > 0 | P1 | Rotate PAT immediately | | Rate Limited | 429 errors > 5/min | P2 | Reduce request rate; check plan tier | | High Latency | P95 > 5000ms | P2 | Check Figma status; add caching | | API Down | 5xx errors > 10/min | P1 | Enable fallback; check status.figma.com |
Run the Step 7 pre-flight before the go-live cut:
bash./scripts/figma-preflight.sh
text✓ FIGMA_PAT present, not in repo (gitleaks clean) ✓ /v1/me → 200 (token valid, acting as design-infra@example.com) ✓ File probe ?depth=1 → 200 in 240ms ✓ 429 handler: Retry-After honored (simulated) ✓ Webhook passcode verification: forged POST → 401 ✗ Alerting: no alert rule for figma_api_requests_total{status="429"} 1 failure — fix before ship
Each line maps to a checklist step in this skill (auth → errors → rate limits → monitoring → data → webhooks). A red pre-flight is the checklist telling you which section to reopen — here, Step 4 (references/monitoring-health.md).
For version upgrades, see figma-upgrade-migration.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 22,798 | 26,664 | +17% | 1 | 1 | 0% | 3,929 | 6,058 | +54% | 0 | 0 | — |
case-02 | fail→fail | 24,942 | 15,887 | -36% | 1 | 1 | 0% | 4,313 | 4,501 | +4% | 0 | 0 | — |
case-03 | fail→pass | 36,385 | 21,834 | -40% | 1 | 1 | 0% | 6,650 | 5,764 | -13% | 0 | 0 | — |
case-04 | fail→pass | 11,788 | 7,601 | -36% | 1 | 1 | 0% | 2,093 | 2,608 | +25% | 0 | 0 | — |
case-05 | pass→pass | 11,862 | 4,064 | -66% | 1 | 1 | 0% | 2,068 | 2,187 | +6% | 0 | 0 | — |
case-06 | fail→pass | 14,268 | 8,616 | -40% | 1 | 1 | 0% | 2,381 | 3,106 | +30% | 0 | 0 | — |
case-07 | pass→pass | 13,990 | 10,563 | -24% | 1 | 1 | 0% | 2,339 | 3,399 | +45% | 0 | 0 | — |
case-08 | fail→pass | 236,037 | 8,325 | -96% | 1 | 1 | 0% | 1,981 | 2,905 | +47% | 0 | 0 | — |
case-09 | pass→pass | 12,754 | 13,611 | +7% | 1 | 1 | 0% | 2,012 | 3,601 | +79% | 0 | 0 | — |
case-10 | pass→pass | 11,847 | 8,660 | -27% | 1 | 1 | 0% | 1,634 | 3,100 | +90% | 0 | 0 | — |
case-11 | pass→pass | 16,998 | 12,627 | -26% | 1 | 1 | 0% | 2,668 | 3,628 | +36% | 0 | 0 | — |
case-12 | pass→pass | 11,503 | 8,545 | -26% | 1 | 1 | 0% | 2,101 | 3,057 | +46% | 0 | 0 | — |
case-13 | fail→pass | 10,680 | 2,904 | -73% | 1 | 1 | 0% | 837 | 2,062 | +146% | 0 | 0 | — |
case-14 | pass→pass | 15,460 | 12,989 | -16% | 1 | 1 | 0% | 2,748 | 3,973 | +45% | 0 | 0 | — |
case-15 | pass→pass | 13,637 | 11,200 | -18% | 1 | 1 | 0% | 2,489 | 3,648 | +47% | 0 | 0 | — |
case-16 | fail→pass | 19,011 | 10,918 | -43% | 1 | 1 | 0% | 3,261 | 3,409 | +5% | 0 | 0 | — |
case-17 | fail→pass | 14,122 | 2,402 | -83% | 1 | 1 | 0% | 2,210 | 1,933 | -13% | 0 | 0 | — |
case-18 | pass→pass | 13,446 | 2,842 | -79% | 1 | 1 | 0% | 2,048 | 1,971 | -4% | 0 | 0 | — |
case-19 | fail→pass | 17,436 | 2,707 | -84% | 1 | 1 | 0% | 2,346 | 1,949 | -17% | 0 | 0 | — |
case-20 | fail→pass | 10,007 | 4,739 | -53% | 1 | 1 | 0% | 1,734 | 2,390 | +38% | 0 | 0 | — |
case-21 | fail→pass | 13,057 | 1,536 | -88% | 1 | 1 | 0% | 1,906 | 1,730 | -9% | 0 | 0 | — |
case-22 | pass→pass | 9,833 | 9,508 | -3% | 1 | 1 | 0% | 1,683 | 3,067 | +82% | 0 | 0 | — |
case-23 | pass→pass | 7,433 | 7,198 | -3% | 1 | 1 | 0% | 1,402 | 2,852 | +103% | 0 | 0 | — |
case-24 | pass→pass | 12,607 | 13,526 | +7% | 1 | 1 | 0% | 2,489 | 4,393 | +76% | 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 +42 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.