창작Creative

Figma 브라우저 제어 키트 (MCP 없이)

내 크롬의 Figma 탭을 Claude 가 직접 조종해 Figma 파일을 읽고 그리고 고쳐요

다운로드Download

설명About

Figma MCP 연결이나 REST API 설정 없이, 내 크롬에 이미 로그인된 figma.com 편집기 탭을 Claude in Chrome 으로 조종하는 스킬 키트예요. 편집기 탭의 figma 객체(Figma 플러그인 API 와 같은 것)를 자바스크립트로 불러 페이지·프레임·텍스트·도형을 만들고 고쳐요. Figma MCP 는 플랜·좌석에 따라 도구 호출 횟수 제한이 있는데(공식 문서 기준, 확인일 2026-10-12), 이 방식은 MCP 도구를 쓰지 않아 그 한도와 무관해요. 목록의 내용은 스킬 본체(SKILL.md)예요. 전체 키트(zip)에는 설치 안내, 브라우저 안에서 도는 작은 스크립트 2개(파일 올리기 브리지, 오래 걸리는 작업·미리보기 도우미), 실측해서 알게 된 함정 표, 예제 코드 모음, 한계와 위험 문서가 들어 있어요. 내려받는 파일은 글과 자바스크립트뿐이고 실행 파일은 없어요. 꼭 알아 두세요. ① 내 로그인 상태의 Figma 탭에서 코드를 실행하므로 파일을 바꾸거나 지울 수 있어요. 새 초안 파일에서 먼저 시험하세요. ② 편집기의 figma 객체는 Figma 가 공식으로 약속한 인터페이스가 아니라서, Figma 가 업데이트하면 동작이 바뀌거나 막힐 수 있어요. ③ 내 Figma 플랜·이용약관·회사 보안 규정은 그대로 적용돼요. ④ 비공식 도구이며 Figma·Anthropic 과 관련이 없어요. ⑤ 운영팀이 확인한 것은 스캐너 통과, 시험 페이지에서의 파일 올리기·작업 상태 스크립트 동작, 문서 내용까지예요. 실제 Figma 탭에서 키트를 처음부터 끝까지 돌려 보는 시험은 아직 하지 않았고, 원본 실측은 macOS + Chrome 에서 한 것이라 다른 환경에서는 달라질 수 있어요.

이런 분께 맞습니다Who it is for

Claude Code·Claude 앱으로 Figma 작업을 시키고 싶지만 MCP 설정이나 호출 한도가 부담인 분, 크롬 브라우저 제어가 무엇인지 알고 위험을 감수할 수 있는 분.

결과물What you get

새 초안 Figma 파일에서 연결 점검과 시험 프레임 만들기까지 해 보고, 같은 방법으로 페이지·프레임·텍스트를 만들거나 기존 파일을 읽고 고치는 작업을 시킬 수 있어요.

쓰는 방법How to use

  1. [전체 키트(zip) 내려받기]로 zip 을 받아 풀어요. (아래 SHA-256 값과 맞는지 확인할 수 있어요.)
  2. 크롬에 Claude in Chrome 확장을 설치하고 Claude 와 같은 계정으로 로그인한 뒤, 크롬에서 figma.com 에도 로그인해 둬요.
  3. 풀린 폴더에서 Claude 를 실행해요. (CLI: claude --chrome / Claude 앱: 그 폴더를 열고 크롬 연결 켜기)
  4. “피그마 연결 점검해줘”라고 말하고, 안내에 따라 새 초안 파일에서 시험 프레임을 하나 만들어 봐요.

프롬프트 전문Full prompt

전문 접기·펼치기Show / hide the full text
---
name: figma-browser
description: Figma MCP·REST API 없이, 내 크롬에 로그인된 figma.com 편집기 탭을 Claude in Chrome 으로 조종해 Figma 파일을 읽고 그리고 고친다. Figma 탭의 figma 전역 객체(플러그인 API)를 javascript_tool 로 호출하는 방식. "피그마에 그려줘", "피그마 연결 점검", "환경 점검", "피그마 브라우저로 제어", "Figma MCP 말고", "figma 객체", 화면·표·프레임을 Figma에 만들거나 바꾸는 요청에 사용.
---

# figma-browser — 크롬으로 Figma 직접 제어

이 키트가 말하는 "KIT" 는 이 스킬이 들어 있는 폴더(`.claude/skills/` 의 상위)다. 배경·실측은 `KIT/docs/02_HOW_IT_WORKS.md`, 예제 코드는 `KIT/docs/03_RECIPES.md`, 위험과 한계는 `KIT/docs/04_LIMITS_AND_RISKS.md`.

## 원칙
- **Figma MCP(`mcp__*Figma*`)나 REST API 를 쓰지 않는다.** 사람이 쓰는 것과 같은 figma.com 편집기 탭에서, 편집기가 제공하는 `figma` 전역 객체를 `javascript_tool` 로 호출한다. 크롬을 조종하는 통로(Claude in Chrome 확장)는 별개다.
- 🧑 = 사용자가 해야 함 / 🤖 = 에이전트가 함. **로그인·비밀번호·결제·좌석 변경은 에이전트가 하지 않는다.**
- **사용자가 준 기존 파일은 읽기부터.** 쓰기 시험은 새 초안 파일에서만 한다. 노드 삭제·덮어쓰기 전에는 무엇을 지우는지 말하고 확인받는다.
- 파일 키(figma.com/design/<키>/…)나 계정 정보는 보고서·로그에 남기지 않는다.

## 1. 연결 확인
1. 🤖 크롬 도구 로드(ToolSearch 로 `mcp__claude-in-chrome__*` 한 번에) → `tabs_context_mcp({createIfEmpty:true})`.
   - 미연결: 🧑 확장 설치·같은 계정 로그인·(CLI) `/chrome` → Reconnect. API 키 로그인은 연동 불가.
   - 모든 호출이 타임아웃: 🧑 크롬에 떠 있는 대화상자(나가기 확인·권한·다운로드)를 닫아 달라고 요청.
2. 🤖 새 탭에서 `https://www.figma.com/files` → 스크린샷. 로그인 화면이면 🧑 로그인 요청.
3. 🤖 작업할 파일을 연다. 사용자가 URL 을 줬으면 그 URL, 없으면 새 탭에서 `https://www.figma.com/design/new`(Drafts 에 생성, 10~40초).
   - 파일 목록으로 되돌아오거나 'locked team… view only' 배너가 보이면 팀이 잠긴 것 → 🧑 다른 계정·팀으로 로그인하거나 플랜·파일 정리 요청(에이전트는 파일을 지우지 않는다).
4. 🤖 `typeof figma` 를 5초 간격으로 최대 60초 폴링(`javascript_tool`). 이 사이 스크린샷 1회로 탭을 활성화한다. `'object'` 가 되면 준비 끝.
5. 60초 후에도 `'undefined'` 면 **플러그인 한 번 실행 폴백**(실제로 동작한 방법):
   1) 새 탭에서 `https://www.figma.com/community/search?resource_type=plugins&query=lorem%20ipsum`
   2) 아무 플러그인의 **Open in…** → 대상 파일 선택 → 새 탭에서 파일이 열림
   3) 플러그인 상세가 뜨면 **Run** → 플러그인 창은 Esc 로 닫고 **새로고침** → `typeof figma` 재확인 → 이후 그 탭에서 작업
   - 조직 계정이면 'full access to Figma Design / update your seat' 창이 뜰 수 있다 → **좌석 변경은 비용이 생길 수 있으니 누르지 말고** 🧑 사용자에게 확인.

## 2. 브리지 (파일을 컨텍스트 밖으로 올리기)
긴 JSON·스크립트를 `javascript_tool` 인자로 붙이면 토큰이 들고 한도에 걸린다. 대신:
1. `KIT/scripts/figma-bridge.js` 내용을 그대로 `javascript_tool` 로 실행 → `BRIDGE_READY`.
2. `find("FB data input")` → ref → `file_upload(paths:[KIT/scripts/figma-helpers.js, 올릴 파일들…])`. (`file_upload` 가 경로를 거부하면 Claude 를 KIT 폴더에서 실행하도록 안내.)
3. `await window.FB_LOADING; FB.version` → `0.1.0`. 올린 파일은 `FB_FILES['이름']` 에 텍스트로 들어간다. 두 번째 업로드부터는 **추가**된다.
- Figma 탭에서 `fetch('http://localhost…')` 는 쓰지 않는다(크롬 '로컬 네트워크 접근' 권한창이 떠서 탭이 멈춘다).

## 3. 작업 규칙 (실측으로 알게 된 함정)
| 함정 | 대처 |
|---|---|
| `javascript_tool` 한 번이 약 45초를 넘으면 타임아웃 | 긴 작업은 `FB.job(async (j) => {…})` 로 백그라운드 실행, `FB.status()` 를 5~10초 간격으로 폴링. `await` 로 기다리지 않는다 |
| `javascript_tool` 결과가 약 1,000자에서 잘림 | 결과는 요약(개수·이름 목록)으로 돌려주고, 큰 데이터는 나눠 읽는다 |
| 탭이 안 보이면(`document.visibilityState==='hidden'`) Figma 의 로딩·렌더가 멈춘다 | 작업 중 Figma 탭을 활성 탭으로, 크롬 창을 앞으로. 진행이 20초 넘게 안 움직이면 🧑 에게 창을 앞으로 가져와 달라고 요청 |
| 브라우저 대화상자(`alert/confirm`, "사이트에서 나가시겠습니까?", 다운로드 확인)가 뜨면 모든 탭 제어가 멈춤 | Figma 탭을 닫거나 다른 주소로 이동하지 말고 **새 탭**을 쓴다. 멈추면 🧑 에게 대화상자를 닫아 달라고 요청 |
| `figma.root.name = …` 은 무시됨 | 파일 이름은 UI 로: 좌상단 파일명 더블클릭 → 편집 상태(파란 테두리) 확인 → 입력 → Enter. 편집 상태가 아닐 때 타이핑하면 캔버스 단축키로 빈 노드가 생긴다(생기면 삭제) |
| 폰트 | `Noto Sans KR` 는 로드됨. `Pretendard` 등 로컬 폰트는 로드 실패 |
| 페이지 수 제한(Starter 팀 파일 등) | 쓰기 전 3~4번째 페이지를 만들어 보는 시험으로 판정 → `docs/03_RECIPES.md` "페이지 제한 시험" |
| 이미지 | `figma.createImage(bytes)` 가능 |
| `eval` | Figma 탭에선 허용(CSP 차단 없음). 다른 사이트 탭은 CSP 가 막을 수 있으니 스크립트를 그대로 붙여 쓴다 |
| 변경은 자동 저장됨 | 새로고침 뒤에도 유지된다. 그래서 **되돌리기 어려운 변경은 먼저 말하고 한다** |

## 4. 작업 흐름
1. 🤖 연결(1단계) → 브리지(2단계). 기존 파일이면 먼저 읽기만: 페이지·최상위 노드 목록을 요약해 사용자에게 보여 준다.
2. 🤖 변경 계획을 한두 문장으로 말하고, 영향 범위(어느 페이지·몇 개 노드)를 밝힌다.
3. 🤖 변경 실행(짧으면 `javascript_tool`, 길면 `FB.job`). 예제 코드는 `docs/03_RECIPES.md`.
4. 🤖 확인: `FB.preview(node)` 후 스크린샷 1장, 또는 노드 수·이름 목록으로 결과를 확인. 보고에는 **무엇을 바꿨는지**(페이지·노드 수)와 **확인한 방법**을 적고, 확인하지 못한 것은 못했다고 쓴다.
5. 🤖 끝나면 `FB.closePreview()`. 시험용 노드·페이지는 지운다(내가 만든 것만).

## 하지 않는 것
- 로그인 정보 입력, 좌석·플랜 변경, 파일 삭제·공유 설정 변경.
- 사용자가 지정하지 않은 파일·팀의 내용 열람 또는 수정.
- 쿠키·토큰 등 브라우저 저장 정보 조회.

막힐 때If you get stuck

Claude 유료 플랜 로그인이 필요해요(API 키 로그인은 크롬 연동 불가). 크롬 대화상자(나가기 확인·권한·다운로드)가 뜨면 모든 제어가 멈추니 닫아 주세요. 작업 중 크롬 창을 가리거나 최소화하면 Figma 가 멈춰요. Figma 데스크톱 앱은 조종할 수 없어요. 중요한 파일은 작업 전에 사본이나 버전 저장을 만들어 두세요.

정보Info

용도Purpose
창작Creative
종류Type
프롬프트·스킬 문서Prompt / skill document
난이도Difficulty
어려움Hard
AI 표기AI label
AI 도움을 받아 만듦Made with AI assistance
버전 해시Version hash
ead08b34708f