Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Install the Anima SDK and configure authentication for Figma-to-code generation. Use when setting up design-to-code automation, configuring Figma token access, or initializing the @animaapp/anima-sdk for server-side code generation. Trigger: "install anima", "setup anima", "anima auth", "anima figma token".
.claude/skills/jeremylongshore-anima-install-auth/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flashlowest | 98% | 42 |
| gemini-3.1-pro-preview | 100% | 1 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -13% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 0% | 0% |
Install the backend-only @animaapp/anima-sdk, bind managed Anima and Figma credentials, and prove one authorized React or HTML generation without exposing either token.
bashnpm install @animaapp/anima-sdk
bash# 1. Figma Personal Access Token: # Figma > Settings > Account > Personal Access Tokens > Generate # 2. Anima API Token: # Request from Anima team (currently limited partner access) # https://docs.animaapp.com/docs/anima-api # Bind ANIMA_TOKEN and FIGMA_TOKEN with the runtime secret manager. # Check presence without printing values. test -n "$ANIMA_TOKEN" && test -n "$FIGMA_TOKEN"
typescript// src/anima-client.ts import { Anima } from '@animaapp/anima-sdk'; const anima = new Anima({ auth: { token: process.env.ANIMA_TOKEN!, }, }); // Verify connection by generating code from a known Figma file async function verifySetup() { try { const { files } = await anima.generateCode({ fileKey: 'your-figma-file-key', // From Figma URL: figma.com/file/{fileKey}/... figmaToken: process.env.FIGMA_TOKEN!, nodesId: ['1:2'], // Specific node to convert settings: { language: 'typescript', framework: 'react', styling: 'tailwind', }, }); console.log(`Generated ${Object.keys(files).length} files`); for (const [fileName, file] of Object.entries(files)) { console.log(` ${fileName} (${file.content.length} chars; binary=${file.isBinary})`); } return true; } catch { console.error({ failureClass: 'setup-verification-failed' }); return false; } } verifySetup();
Figma URL format:
https://www.figma.com/file/ABC123xyz/My-Design?node-id=1:2
File Key: ABC123xyz
Node ID: 1:2 (from the URL query parameter)Use Read and Grep to inspect the existing integration and generated diff before changing anything. Use Write or Edit only inside the approved generated-code, test, or configuration paths. Use the declared Bash commands only for the explicit install, validation, or diagnostic steps in this workflow; never print tokens, source designs, generated source, or private website captures.
@animaapp/anima-sdk installedCreate a dedicated staging Figma file with one approved frame and request a least-privilege Anima token for that file. Store both credentials through the development secret workflow, run verifySetup, and confirm the result names a small expected set of generated files without printing either token. Keep the SDK in a server-side module and validate that no credential appears in the browser build. If token verification, file access, or node lookup fails, stop and correct the scoped entitlement or reference; do not use a personal token with broader design access as a workaround.
| Error | Cause | Solution | |-------|-------|----------| | Invalid Anima token | Token not provisioned | Request token from Anima team | | Invalid Figma token | PAT expired or wrong | Generate new PAT in Figma Settings | | File not found | Wrong file key | Extract key from Figma URL correctly | | Node not found | Invalid node ID | Use Figma Dev Mode to get node IDs | | SDK not for browser | Used in client-side code | SDK is server-side only |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 14,318 | 7,479 | -48% | 1 | 1 | 0% | 2,764 | 2,398 | -13% | 0 | 0 | — |
case-02 | fail→pass | 15,040 | 10,992 | -27% | 1 | 1 | 0% | 2,957 | 3,250 | +10% | 0 | 0 | — |
case-03 | fail→pass | 13,847 | 9,412 | -32% | 1 | 1 | 0% | 2,630 | 2,875 | +9% | 0 | 0 | — |
case-04 | pass→pass | 7,505 | 3,574 | -52% | 1 | 1 | 0% | 1,294 | 1,600 | +24% | 0 | 0 | — |
case-05 | pass→pass | 20,824 | 6,079 | -71% | 1 | 1 | 0% | 1,959 | 2,030 | +4% | 0 | 0 | — |
case-06 | pass→pass | 12,223 | 8,357 | -32% | 1 | 1 | 0% | 2,009 | 2,348 | +17% | 0 | 0 | — |
case-19 | pass→pass | 12,818 | 8,289 | -35% | 1 | 1 | 0% | 2,407 | 2,623 | +9% | 0 | 0 | — |
case-07 | pass→pass | 10,787 | 6,283 | -42% | 1 | 1 | 0% | 1,783 | 1,974 | +11% | 0 | 0 | — |
case-08 | fail→pass | 7,662 | 2,821 | -63% | 1 | 1 | 0% | 1,332 | 1,466 | +10% | 0 | 0 | — |
case-09 | pass→pass | 7,341 | 4,255 | -42% | 1 | 1 | 0% | 1,333 | 1,667 | +25% | 0 | 0 | — |
case-10 | fail→pass | 8,573 | 3,242 | -62% | 1 | 1 | 0% | 1,465 | 1,470 | +0% | 0 | 0 | — |
case-11 | pass→pass | 3,251 | 3,173 | -2% | 1 | 1 | 0% | 535 | 1,479 | +176% | 0 | 0 | — |
case-12 | fail→pass | 7,412 | 3,523 | -52% | 1 | 1 | 0% | 1,363 | 1,581 | +16% | 0 | 0 | — |
case-13 | fail→pass | 12,884 | 8,268 | -36% | 1 | 1 | 0% | 2,259 | 2,302 | +2% | 0 | 0 | — |
case-14 | pass→pass | 5,907 | 3,490 | -41% | 1 | 1 | 0% | 995 | 1,478 | +49% | 0 | 0 | — |
case-15 | fail→pass | 9,763 | 10,453 | +7% | 1 | 1 | 0% | 1,696 | 2,786 | +64% | 0 | 0 | — |
case-16 | pass→pass | 12,659 | 8,837 | -30% | 1 | 1 | 0% | 2,164 | 2,434 | +12% | 0 | 0 | — |
case-17 | pass→pass | 8,326 | 3,021 | -64% | 1 | 1 | 0% | 1,383 | 1,482 | +7% | 0 | 0 | — |
case-18 | pass→pass | 9,673 | 3,578 | -63% | 1 | 1 | 0% | 1,589 | 1,430 | -10% | 0 | 0 | — |
case-20 | pass→pass | 11,372 | 11,107 | -2% | 1 | 1 | 0% | 2,223 | 3,216 | +45% | 0 | 0 | — |
case-21 | pass→pass | 9,164 | 7,850 | -14% | 1 | 1 | 0% | 1,766 | 2,445 | +38% | 0 | 0 | — |
case-22 | pass→pass | 11,861 | 6,337 | -47% | 1 | 1 | 0% | 1,926 | 2,016 | +5% | 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. The headline lift of +36 percentage points is the difference between those two pass rates over the 22 comparable cases.
The publisher has shipped newer versions since this run, so these numbers describe v1, not the version currently listed.
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.