SkillAgentSearch skills...

anima-core-workflow-a

'Build automated Figma-to-React pipeline with the Anima SDK.

Install / Use

npx skills add jeremylongshore/tons-of-skills-marketplace --skill anima-core-workflow-a

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

90/100

Category

Automation

Supported Platforms

Universal

Our assessment of anima-core-workflow-a

anima-core-workflow-a scores 90/100 on our quality scale, 955th of 2,607 Automation skills we index (top 37%).

Its SKILL.md is 7.8 KB long, well organised into 14 sections with 4 code examples: a thorough specification that gives an agent plenty to work with.

With 2,785 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
29/30
Structure
20/20
Description
12/15
Adoption
15/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 6 days ago, so anima-core-workflow-a is actively maintained.
  • It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

anima-core-workflow-a compared with similar skills

All 4 of these similar skills score higher than anima-core-workflow-a; compare them before choosing.

SkillScoreStarsUpdatedFormat
anima-core-workflow-a (this skill)by jeremylongshore902.8k6d agoSKILL.md
Agent-Reachby Panniantong10086.3k14d agoCLAUDE.md
rufloby ruvnet10073.6ktodayCLAUDE.md
Scraplingby D4Vinci10084.6ktodayMCP Server
algorithmic-artby anthropics100177.9k7d agoSKILL.md

Frequently asked questions

How do I install anima-core-workflow-a?
Run npx skills add jeremylongshore/tons-of-skills-marketplace --skill anima-core-workflow-a. The install tabs above show the steps for each supported agent.
Which AI agents does anima-core-workflow-a work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is anima-core-workflow-a safe to use?
It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is anima-core-workflow-a still maintained?
The repository was last updated 6 days ago, so anima-core-workflow-a is actively maintained.

name: anima-core-workflow-a description: 'Build automated Figma-to-React pipeline with the Anima SDK.

Use when automating design handoff, building CI/CD design-to-code workflows,

or creating a design system code generator from Figma components.

Trigger with: "anima design pipeline", "figma to react pipeline",

"automated design handoff", "anima component generator".

' allowed-tools: Read, Write, Edit, Bash(npm:*), Grep version: 2.0.0 argument-hint: "[figma-file-key] [node-id]" model: inherit effort: high license: MIT author: Jeremy Longshore jeremy@intentsolutions.io tags:

  • saas
  • design
  • figma
  • anima
  • react
  • automation compatibility: Requires Node.js 20+, approved Anima API access, current Anima SDK documentation, and authorized Figma or website source access

Anima Core Workflow A — Figma-to-React Pipeline

Overview

Build a review-driven Figma-to-React pipeline. Detect an approved source revision, generate only allowlisted nodes, contain the output, and open a review change; never turn a Figma change directly into merged or deployed application code.

Prerequisites

  • Completed anima-install-auth setup
  • Figma file with organized components (auto-layout recommended)
  • React project (Next.js, Vite, or CRA)

Authentication

Create the Anima client only on the backend with ANIMA_TOKEN; pass a managed FIGMA_TOKEN for the allowlisted file to generateCode. Stop on either token's 401/403 result and correct access without widening the source allowlist.

Instructions

Step 1: Design System Scanner

// src/pipeline/figma-scanner.ts
import { Anima } from '@animaapp/anima-sdk';

interface FigmaComponent {
  nodeId: string;
  name: string;
  type: 'COMPONENT' | 'FRAME' | 'COMPONENT_SET';
}

const anima = new Anima({
  auth: { token: process.env.ANIMA_TOKEN! },
});

// Fetch all top-level components from a Figma page
async function scanFigmaComponents(fileKey: string) {
  const response = await fetch(
    `https://api.figma.com/v1/files/${fileKey}/components`,
    { headers: { 'X-Figma-Token': process.env.FIGMA_TOKEN! } }
  );
  const data = await response.json();

  return data.meta.components.map((comp: any) => ({
    nodeId: comp.node_id,
    name: comp.name,
    type: comp.containing_frame?.type || 'COMPONENT',
  }));
}

Step 2: Batch Code Generator

// src/pipeline/batch-generator.ts
import { Anima } from '@animaapp/anima-sdk';
import fs from 'fs';
import path from 'path';

const anima = new Anima({
  auth: { token: process.env.ANIMA_TOKEN! },
});

interface GenerationConfig {
  fileKey: string;
  outputDir: string;
  settings: {
    language: 'typescript' | 'javascript';
    framework: 'react' | 'html';
    styling: 'plain_css' | 'tailwind' | 'inline_styles';
    uiLibrary?: 'mui' | 'antd' | 'radix' | 'shadcn' | 'clean_react' | 'custom_design_system';
  };
}

async function generateComponentBatch(
  config: GenerationConfig,
  nodeIds: string[],
): Promise<{ generated: number; failed: string[] }> {
  const failed: string[] = [];
  let generated = 0;

  fs.mkdirSync(config.outputDir, { recursive: true });

  // Generate each component (Anima processes one node at a time)
  for (const nodeId of nodeIds) {
    try {
      const { files } = await anima.generateCode({
        fileKey: config.fileKey,
        figmaToken: process.env.FIGMA_TOKEN!,
        nodesId: [nodeId],
        settings: config.settings,
      });

      for (const [fileName, file] of Object.entries(files)) {
        const root = path.resolve(config.outputDir);
        const filePath = path.resolve(root, fileName);
        if (!filePath.startsWith(`${root}${path.sep}`) || file.isBinary) {
          throw new Error(`Rejected generated file: ${fileName}`);
        }
        fs.mkdirSync(path.dirname(filePath), { recursive: true });
        fs.writeFileSync(filePath, file.content);
        console.log(`Generated: ${fileName}`);
      }
      generated++;
    } catch {
      console.error({ failureClass: 'node-generation-failed', nodeId });
      failed.push(nodeId);
    }

    // Concurrency and retry policy belong to the measured rate-limit workflow.
  }

  return { generated, failed };
}

export { generateComponentBatch, GenerationConfig };

Step 3: Figma Change Detection

// src/pipeline/change-detector.ts
interface FileVersion {
  id: string;
  created_at: string;
  label: string;
}

async function getLatestVersion(fileKey: string) {
  const response = await fetch(
    `https://api.figma.com/v1/files/${fileKey}/versions`,
    { headers: { 'X-Figma-Token': process.env.FIGMA_TOKEN! } }
  );
  const data = await response.json();
  return data.versions[0];
}

// Check if file changed since last generation
let lastVersionId = '';

async function hasDesignChanged(fileKey: string) {
  const latest = await getLatestVersion(fileKey);
  if (latest.id !== lastVersionId) {
    lastVersionId = latest.id;
    return true;
  }
  return false;
}

export { hasDesignChanged, getLatestVersion };

Step 4: Full Pipeline Runner

// src/pipeline/run.ts
import { scanFigmaComponents } from './figma-scanner';
import { generateComponentBatch, GenerationConfig } from './batch-generator';
import { hasDesignChanged } from './change-detector';

const config: GenerationConfig = {
  fileKey: process.env.FIGMA_FILE_KEY!,
  outputDir: './src/components/generated',
  settings: {
    language: 'typescript',
    framework: 'react',
    styling: 'tailwind',
    uiLibrary: 'shadcn',
  },
};

async function runPipeline() {
  console.log('Scanning Figma file for components...');
  const components = await scanFigmaComponents(config.fileKey);
  console.log(`Found ${components.length} components`);

  console.log('Generating code...');
  const result = await generateComponentBatch(
    config,
    components.map(c => c.nodeId)
  );

  console.log(`\nPipeline complete: ${result.generated} generated, ${result.failed.length} failed`);
}

runPipeline().catch(() => {
  console.error({ failureClass: 'figma-pipeline-failed' });
  process.exitCode = 1;
});

Tool Discipline

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.

Output

  • Automated Figma component scanning and enumeration
  • Batch code generation for entire design systems
  • Change detection for continuous design-to-code sync
  • A durable source-revision receipt suitable for a PR review gate

Examples

Create a staging Figma file with two approved components and configure the pipeline to write only to src/components/generated. Run one generation cycle, inspect the resulting diff, and run the project formatter, type check, and visual review before accepting either component. Persist the last approved Figma version outside the process so a restart does not regenerate an unknown set of nodes. If the scanner returns unexpected components, a generator writes outside the output directory, or validation fails, stop the watch loop and correct the node allowlist or design source before the next run.

Error Handling

| Error | Cause | Solution | |-------|-------|----------| | Rate limited | Too many API calls | Add 2s delay between component generations | | Component not renderable | Figma node is group, not frame | Ensure components use auto-layout | | Inconsistent output | Complex nested structures | Flatten deep nesting in Figma | | Missing styles | Custom fonts not available | Map fonts in Anima settings |

Resources

Related Skills

View on GitHub
GitHub Stars2.8k
CategoryAutomation
Updated6d ago
Forks404

Languages

Python

Trust signals

100/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

No cautions