Token导航 LogoToken导航

Agent Skill · 前端设计

figma-to-ids(Figma TO IDS 浏览器)

用于辅助界面设计、视觉规范、排版、配色、布局和交互体验优化。它适合让 Agent 根据产品场景整理页面结构、生成 UI 方案、检查视觉一致性或改进组件层级。使用时需要结合现有品牌、设计系统和用户任务,不应只堆装饰元素;涉及真实页面改动时,应通过截图或浏览器预览检查文本溢出、对齐和响应式表现。

figma-to-ids 是前端设计类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为调用外部服务;许可证信息还不明确,第三方扫描已通过,按安装量在前端设计类的 10,216 个 Skill 里排第 5,110。

总安装 734周安装 30GitHub Stars 公开资料未说明下载 235核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:figma-to-ids(Figma TO IDS 浏览器)
来源仓库:https://github.com/iress/design-system
仓库路径:skills/figma-to-ids
安装命令:
npx skills add https://github.com/iress/design-system --skill figma-to-ids
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/iress/design-system --skill figma-to-ids

这个 Skill 是做什么的

前端设计类 Skill 关注页面结构、视觉规范和组件写法,输出通常是可运行的界面代码。

用于辅助界面设计、视觉规范和布局优化,适合整理页面结构或生成 UI 方案。支持根据产品场景检查视觉一致性并改进组件层级,结合品牌和设计系统使用。通过浏览器预览检查文本溢出和对齐,避免堆砌装饰元素,关注实际交互体验。

安装方式:github,命令为 npx skills add https://github.com/iress/design-system --skill figma-to-ids。注意:涉及真实页面改动时需配合截图或本地预览确认响应式表现和视觉效果。

来源仓库内路径:skills/figma-to-ids

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/iress/design-system --skill figma-to-ids;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要调用外部服务,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

figma-to-ids 怎么安装?

在终端执行 npx skills add https://github.com/iress/design-system --skill figma-to-ids。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

figma-to-ids 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

figma-to-ids 需要什么权限?

权限级别是调用外部服务。该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

figma-to-ids 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

figma-to-ids 用的人多吗?

公开数据是累计安装 734 次,近一周安装 30 次,下载 235 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

figma-to-ids 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理前端设计类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

前端设计类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
frontend-design

前端设计 · Codex、Claude

8,823,360126,072只读MIT通过
vercel-composition-patterns

Vercel 组合模式 · Codex、Claude

3,858,81625,893需要联网MIT通过
vercel-react-native-skills

Vercel React native skills 前端 · Codex、Claude

2,468,66425,878只读MIT通过
adapt

adapt 搜索 · Codex、Claude

2,027,04023,125操作浏览器未明确通过
bolder

bolder 分析 · Codex、Claude

2,004,28823,130只读未明确通过
figma-to-ids

Figma TO IDS 浏览器 · 本页

734—调用外部服务未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Skill: Figma to IDS Translation

Purpose

Translate Figma design properties and structures into IDS (Iress Design System) component implementations. This skill helps AI agents interpret Figma design metadata (from tools like Figma MCP or exported design specs) and produce accurate IDS code.

Process

  1. Analyse Figma structure — Identify frames, auto-layout, and component instances
  2. Map components — Match Figma component names/variants to IDS components
  3. Extract tokens — Convert Figma design values to IDS design token references
  4. Generate code — Produce clean, minimal React/TypeScript with proper IDS imports. Use the fewest components possible — check whether parent components already handle layout before adding IressInline/IressStack wrappers. Never wrap a single child in a layout component.
  5. Verify output — Check that all imports resolve, no raw HTML is used where IDS components exist, grid layouts use responsive span values, and no common anti-patterns are present (disabled buttons, slot attributes, redundant textStyle)
Important: IDS v6 is currently in beta. Install with the @beta tag: ``bash npm install @iress-oss/ids-components@beta npm install @iress-oss/ids-tokens@beta # if using tokens directly (e.g. cssVars or CSS vars import) ``

Figma → IDS Mapping

When mapping Figma components to IDS, read references/component-mapping.md for the full Figma component → IDS component mapping table.

When converting Figma design values (colours, spacing, radius, typography) to IDS tokens, read references/token-mapping.md.

Translation Examples

Figma: Login Form Frame

Figma structure:

  • Frame: Auto-layout vertical, gap 16px, padding 24px

- Text: "Log In" (Heading H2) - Input: "Email" (Text Input) - Input: "Password" (Password Input) - Button: "Sign in" (Primary) - Text: "Forgot password?" (Link)

IDS implementation:

import {
  IressStack,
  IressText,
  IressField,
  IressInput,
  IressButton,
  IressLink,
  IressCard,
} from '@iress-oss/ids-components';

function LoginForm() {
  return (
    <IressCard p="lg">
      <IressStack gap="md">
        <IressText element="h2">Log In</IressText>
        <IressField label="Email" htmlFor="email" required>
          <IressInput id="email" type="email" />
        </IressField>
        <IressField label="Password" htmlFor="password" required>
          <IressInput id="password" type="password" />
        </IressField>
        <IressButton mode="primary" type="submit">
          Sign in
        </IressButton>
        <IressLink href="/forgot-password">Forgot password?</IressLink>
      </IressStack>
    </IressCard>
  );
}

Figma: Alert Banner

Figma structure:

  • Frame: Fill #EBF9F5, border-radius 12px, padding 16px

- Auto-layout horizontal, gap 8px - Icon: "check_circle" - Text: "Your changes have been saved" (Body MD)

IDS implementation:

import { IressAlert } from '@iress-oss/ids-components';

// IressAlert already handles the layout, icon, and styling
<IressAlert status="success">Your changes have been saved</IressAlert>;
Key insight: IDS components encapsulate their styling. Don't recreate layout/colours from Figma — use the component's props (like status) and let IDS handle the visual treatment.

Figma: Status Modal (Danger Confirmation)

Figma structure:

  • Modal frame with danger icon in header

- Heading: "Delete record?" - Body text: "This action cannot be undone." - Footer: Two buttons (Cancel, Delete)

IDS implementation:

import { IressModal } from '@iress-oss/ids-components';

// Status modals use the `status` prop — the icon, colours, and button status are handled automatically.
// Use `actions` instead of `footer` for opinionated action buttons.
<IressModal
  status="danger"
  heading="Delete record?"
  actions={[{ children: 'Cancel', mode: 'tertiary' }, { children: 'Delete' }]}
  show={isOpen}
  onShowChange={setIsOpen}
>
  This action cannot be undone.
</IressModal>;
Key insight: When status is set on IressModal, the footer prop is not available — use actions instead. Each action button automatically inherits the modal's status. Size is restricted to sm (default) or md.

Figma: Data Table

Figma structure:

  • Frame: Table with header row and data rows

- Header: ["Name", "Email", "Status", "Actions"] - Rows: data with tag in Status column, button in Actions

IDS implementation:

import { IressTable, IressTag, IressButton } from '@iress-oss/ids-components';
import type { TableColumn } from '@iress-oss/ids-components';

interface User {
  name: string;
  email: string;
  status: string;
  id: string;
}

const columns: TableColumn<User>[] = [
  { key: 'name', label: 'Name' },
  { key: 'email', label: 'Email' },
  {
    key: 'status',
    label: 'Status',
    format: (value) => <IressTag>{value}</IressTag>,
  },
  {
    key: 'actions',
    label: 'Actions',
    format: (_, row) => (
      <IressButton mode="tertiary" icon="edit">
        Edit
      </IressButton>
    ),
  },
];

function UsersTable({ users }: { users: User[] }) {
  return <IressTable caption="Users" rows={users} columns={columns} />;
}
Key insight: IressTable is data-driven — pass rows and columns props instead of composing sub-components. Use the format function on columns to render custom cell content like tags or buttons.

Responsive Layout

Always produce responsive output, even when Figma only provides a single desktop frame. IDS uses a 12-column grid with 6 breakpoints — every translation should consider how the layout adapts to smaller screens.

Responsive Design Principles

When no mobile Figma frames are provided, apply these principles:

  1. Identify the primary task — Determine what the user is trying to accomplish on the page (e.g. filling a form, reviewing data, making a decision). The mobile layout should prioritise this task.
  2. Stack multi-column layouts — Any side-by-side columns should stack to full-width (span={{xs: 12, md:...}}) on mobile.
  3. Relocate secondary content — Move supplementary UI (filters, sidebars, secondary actions, metadata panels) into an IressSlideout or collapsible section on mobile so the primary task remains front and centre.
  4. Simplify dense layouts — Tables with many columns, multi-panel dashboards, and wide forms should adapt: hide non-essential columns with hideBelow, collapse sections, or switch to a card-based layout on mobile using useBreakpoint.
  5. Preserve all functionality — Never remove features on mobile. Use IressSlideout, IressModal, expandable sections, or IressTabSet to keep functionality accessible without cluttering the mobile view.

Breakpoints

BreakpointScreen width
xs0 – 575px
sm576px – 767px
md768px – 1023px
lg1024px – 1279px
xl1280px – 1599px
xxl1600px+

Responsive Props

Many props accept a ResponsiveProp — either a single value or an object keyed by breakpoint:

// Single value (all breakpoints)
<IressCol span={6} />

// Responsive — full-width on mobile, half on medium+
<IressCol span={{ xs: 12, md: 6 }} />

Props that support responsive values: span, offset, gap, gutter, rowGap, p, px, py, pt, pr, pb, pl, m, mx, my, mt, mr, mb, ml, width, srOnly, hideFrom, hideBelow.

Figma Multi-Viewport → Responsive Columns

When Figma provides separate mobile and desktop frames for the same layout:

Figma mobile (xs): Single column stack Figma desktop (md+): Two-column sidebar layout

<IressRow gutter={{ xs: 'sm', md: 'lg' }}>
  <IressCol span={{ xs: 12, md: 4 }}>
    <Sidebar />
  </IressCol>
  <IressCol span={{ xs: 12, md: 8 }}>
    <MainContent />
  </IressCol>
</IressRow>

Figma Desktop-Only → Inferred Responsive Layout

When Figma only provides a desktop frame with a sidebar + main content area, infer the mobile layout:

import { useState } from 'react';
import {
  useBreakpoint,
  IressSlideout,
  IressButton,
  IressStack,
  IressRow,
  IressCol,
} from '@iress-oss/ids-components';

function Page() {
  const { breakpoint } = useBreakpoint();
  const isMobile = breakpoint === 'xs' || breakpoint === 'sm';
  const [filtersOpen, setFiltersOpen] = useState(false);

  return (
    <>
      {isMobile ? (
        // Mobile: primary content first, secondary content in slideout
        <IressStack gap="md">
          <IressButton
            mode="secondary"
            icon="filter_list"
            onClick={() => setFiltersOpen(true)}
          >
            Filters
          </IressButton>
          <MainContent />
          <IressSlideout
            heading="Filters"
            show={filtersOpen}
            onShowChange={setFiltersOpen}
          >
            <FilterPanel />
          </IressSlideout>
        </IressStack>
      ) : (
        // Desktop: side-by-side layout as designed in Figma
        <IressRow gutter="lg">
          <IressCol span={3}>
            <FilterPanel />
          </IressCol>
          <IressCol span={9}>
            <MainContent />
          </IressCol>
        </IressRow>
      )}
    </>
  );
}

Responsive Visibility

Use hideFrom/hideBelow CSS props directly on any component:

<IressButton hideBelow="md">Desktop action</IressButton>
<IressText hideFrom="lg">Mobile only text</IressText>

For conditional rendering based on breakpoint (e.g. rendering entirely different components), use the useBreakpoint hook:

import { useBreakpoint } from '@iress-oss/ids-components';

function Navigation() {
  const { breakpoint } = useBreakpoint();
  const isMobile = breakpoint === 'xs' || breakpoint === 'sm';

  return isMobile ? <MobileNav /> : <DesktopNav />;
}

Best Practices

  1. Minimise component nesting — Use the fewest components possible. Every wrapper must earn its place. Before adding IressInline or IressStack, check whether the parent already handles layout (e.g. IressCard has heading and footer props; IressModal has actions; IressButtonGroup handles horizontal button layout). Don't wrap a single child in a layout component.
  2. Use IDS components, not raw elements — IDS components encapsulate correct spacing, colours, border radius, and accessibility
  3. Don't recreate component internals — If Figma shows a button with specific padding/radius, use IressButton with the right mode — the styling is built in
  4. Map Figma gap/padding to spacing tokens — Divide pixel value by 4 to get the token number, then use the full token: 16px → "spacing.4", 24px → "spacing.6". Alias tokens ("xs", "sm", "md", "lg", "xl") are also valid. Never use bare numbers like gap="4".
  5. Prefer semantic props over manual styling — Use status="danger" instead of bg="colour.system.danger.fill"
  6. Use IressField for all form inputs — It provides the label, hint, and validation layout
  7. Respect responsive patterns — Use hideFrom/hideBelow props or the useBreakpoint hook for responsive visibility; use responsive span on IressCol for adaptive grid layouts
  8. Always make grid layouts responsive — When translating Figma multi-column layouts, use responsive span values (e.g. span={{xs: 12, md: 6}}) so columns stack on mobile
  9. Check the component docs — Read the specific component doc for detailed props and patterns (node_modules/@iress-oss/ids-components/.ai/components/)

Common Mistakes

Unnecessary layout wrappers

Don't add IressInline or IressStack when it adds no value. Every Figma auto-layout frame does NOT need its own layout wrapper — check the IDS component first.

// ❌ Unnecessary nesting — IressStack wrapping a single child
<IressStack gap="md">
  <IressInline gap="sm">
    <IressButton mode="primary">Save</IressButton>
    <IressButton mode="secondary">Cancel</IressButton>
  </IressInline>
</IressStack>

// ✅ Single group of buttons only needs IressInline
<IressInline gap="sm">
  <IressButton mode="primary">Save</IressButton>
  <IressButton mode="secondary">Cancel</IressButton>
</IressInline>

Rule of thumb: When Figma shows an auto-layout frame, check if the corresponding IDS component already provides that layout before adding a wrapper. Components like IressModal (with actions) and IressButtonGroup already handle their internal layout. For IressCard, use the heading and footer props to structure content — but note the footer slot does not auto-layout its children, so use IressInline inside footer when you need horizontal button layout.

Other common anti-patterns

For the full list of common anti-patterns (disabled buttons, redundant textStyle, legacy slot attributes, raw HTML, hardcoded values), read the Common Mistakes guide at node_modules/@iress-oss/ids-components/.ai/guides/foundations-common-mistakes.md (requires @iress-oss/ids-components to be installed).

Figma-specific addition: When Figma shows named content areas ("prepend", "append", "footer"), map them to the corresponding React prop, not to a slot attribute. When Figma shows a greyed-out or disabled button state, do not use disabled — see the guide for alternatives.

平台分布

Codex

37.33%
按下载量换算88

Claude

26.64%
按下载量换算63

Cursor

18.51%
按下载量换算43

Gemini CLI

8.5%
按下载量换算20

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

调用外部服务

该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills