트리거 예시
- "내 Stitch 디자인을 코드로 가져와줘"
- "Stitch로 랜딩 페이지 만들어줘"
- "이 스크린샷 스타일을 내 웹사이트에 적용해줘"
- "내 Stitch 프로젝트에서 design.md 내보내기"
- "Stitch 디자인을 ShadCN 컴포넌트로 변환해줘"
Google Stitch 통합 스킬
핵심 개념: design.md
Stitch의 디자인 시스템은 design.md 파일에 캡처됩니다. — 색상, 폰트, 테마, 컴포넌트 스타일. 이 파일은:
- 에이전트에 최적화됨 — 원시 CSS보다 에이전트가 더 잘 이해하는 언어를 사용합니다.
- 전송 가능 — Claude Code, Cursor 또는 모든 에이전트에 제공하면 스타일을 완벽하게 재현합니다.
- 자동 생성 — 요청하지 않아도 Stitch가 모든 프로젝트에 대해 하나를 생성합니다.
기본 워크플로우: 항상 design.md를 먼저 설정한 다음, 그 위에 페이지를 구축합니다.
MCP 서버
커뮤니티 패키지: davideast/stitch-mcp
npm: @_davideast/stitch-mcp
설정
사전 요구 사항
- Google Cloud CLI (
gcloud) 설치 - Stitch API가 활성화된 GCP 프로젝트
인증 (OAuth — API 키는 지원되지 않음)
gcloud auth login
gcloud auth application-default login
gcloud config set project <YOUR_PROJECT_ID>
gcloud auth application-default set-quota-project <YOUR_PROJECT_ID>
gcloud beta services mcp enable stitch.googleapis.com --project=<YOUR_PROJECT_ID>
MCP 설정
MCP 클라이언트 설정에 추가 (예: .kiro/settings/mcp.json):
{
"stitch": {
"command": "npx",
"args": ["@_davideast/stitch-mcp", "proxy"],
"env": {
"STITCH_USE_SYSTEM_GCLOUD": "1",
"GOOGLE_CLOUD_PROJECT": "<YOUR_PROJECT_ID>"
}
}
}
중요: proxy 모드 + STITCH_USE_SYSTEM_GCLOUD=1을 사용해야 합니다. 직접 serverUrl 모드는 불안정합니다.
설정 확인
npx @_davideast/stitch-mcp doctor
doctor가 API 테스트에서 시간 초과되면 직접 확인:
ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
curl -s -w "\nHTTP:%{http_code}" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "x-goog-user-project: <YOUR_PROJECT_ID>" \
"https://stitch.googleapis.com/v1/projects"
MCP 도구
| 도구 | 용도 |
|---|---|
list_projects | 모든 Stitch 프로젝트 나열 |
get_screen_code | 화면의 HTML/CSS 가져오기 |
get_screen_image | 화면 스크린샷 가져오기 (base64) |
build_site | 화면을 경로에 매핑하고 Astro 프로젝트 생성 |
CLI 도구 (MCP 외)
npx @_davideast/stitch-mcp view --projects # 프로젝트 탐색
npx @_davideast/stitch-mcp serve -p <project-id> # 로컬 미리보기
npx @_davideast/stitch-mcp site -p <project-id> # Astro 사이트 생성
워크플로우
경로 A: 처음부터 디자인 (기본)
- 디자인 시스템 설정 — Stitch에서
design.md를 생성하거나 제공 (지정하지 않으면 자동 생성) - 화면 생성 — 요구 사항으로 Stitch에 프롬프트; 디자인 시스템을 기반으로 구축
- 로컬로 가져오기 —
get_screen_code→ HTML/CSS,get_screen_image→ 스크린샷 - 구현 — 대상 프레임워크로 변환 (Next.js/Astro/React)
- 확인 — 시각적 비교 (아래 '확인 단계' 참조)
경로 B: 참조로부터 리디자인
스타일을 채택하고자 하는 기존 사이트/스크린샷이 있을 때 사용 (복사가 아님):
- 참조 캡처 — 마음에 드는 사이트의 전체 페이지 스크린샷 (GoFullPage 또는 유사 도구 사용)
- Stitch에서 리디자인 — 스크린샷 업로드; Stitch가 디자인 언어, 컴포넌트 패턴 및 레이아웃을 추출한 다음 YOUR 콘텐츠에 적용
- 대안: URL로 가져오기 — Stitch의 디자인 시스템 패널에서 모든 웹사이트 URL에서 가져오기. Stitch가 크롤링하여 타이포그래피 + 색상을 design.md로 추출
- 세부 조정 — 와이어프레임 업로드 또는 특정 섹션에 주석을 달아 조정
경로 C: 에이전트 통합 빌드 (Claude Code + Stitch)
Google 공식 Stitch 스킬을 사용한 자율적인 종단간 빌드:
- 향상된 프롬프트 — 모호한 사용자 프롬프트를 Stitch에 최적화된 프롬프트로 변환 (Stitch는 정확한 설명보다 분위기에 대한 형용사에 의존)
- Stitch 루프 — Chrome DevTools를 사용한 자율 빌드 루프, 단계 간 프롬프트 추적 유지
- React 컴포넌트 — Stitch의 단일 HTML 내보내기를 모듈식 React 컴포넌트로 변환하고 검증
claude.md의 워크플로우 순서:
향상된 프롬프트 → Stitch 루프 → React 컴포넌트 변환
Stitch MCP 연결 필요. 설치 방법은 Google의 Stitch 스킬 저장소 참조.
경로 D: ShadCN UI 변환
Stitch의 기본 React/HTML에는 상호작용이 부족합니다. 프로덕션 품질의 컴포넌트를 위해 ShadCN을 사용하세요:
- ShadCN MCP 연결
- Google의 ShadCN UI 스킬을 사용하여 Stitch 디자인을 ShadCN 컴포넌트로 변환
- 레지스트리(예: glassmorphism, motion-primitives)로 확장하여 프리미엄 느낌 추가
claude.md에 레지스트리를 지정하여 변환이 자동으로 이루어지도록 함
단계: 확인 (gstack design-review에서 영감을 얻음)
구현 후 다중 레이어 확인을 실행합니다. 목표: 사람의 눈이 놓치는 것을 포착합니다.
레이어 1: 다중 뷰포트 스크린샷
반응형 문제를 포착하기 위해 3개의 중단점에서 스크린샷을 촬영합니다:
npx playwright screenshot --viewport-size=375,812 http://localhost:3000 impl-mobile.png
npx playwright screenshot --viewport-size=768,1024 http://localhost:3000 impl-tablet.png
npx playwright screenshot --viewport-size=1440,900 http://localhost:3000 impl-desktop.png
확인할 사항: 텍스트 오버플로, 레이아웃 붕괴, 요소 겹침, 콘텐츠가 적응하지 않음.
레이어 2: 디자인 시스템 일관성 확인
구현에서 실제 렌더링된 값을 추출하여 design.md와 비교합니다:
# 실제 사용된 폰트 추출 (브라우저 콘솔 또는 Playwright에서 실행)
npx playwright evaluate http://localhost:3000 \
"JSON.stringify([...new Set([...document.querySelectorAll('*')].slice(0,500).map(e => getComputedStyle(e).fontFamily))])"
# 사용 중인 색상 팔레트 추출
npx playwright evaluate http://localhost:3000 \
"JSON.stringify([...new Set([...document.querySelectorAll('*')].slice(0,500).flatMap(e => [getComputedStyle(e).color, getComputedStyle(e).backgroundColor]).filter(c => c !== 'rgba(0, 0, 0, 0)'))])"
추출된 값을 design.md 토큰과 비교합니다. 불일치를 플래그합니다.
레이어 3: 디자인 대 픽셀 차이
npx pixelmatch design.png impl-desktop.png diff.png 0.1
레이어 4: AI 생성 패턴 감지
구현에서 이러한 10가지 AI 생성 패턴을 확인합니다 (gstack의 블랙리스트에서):
- 보라색/바이올렛 그라데이션 배경을 기본값으로 사용
- 원형 아이콘 + 제목 + 설명이 있는 3열 기능 그리드
- 섹션 장식으로 색상이 지정된 원 안의 아이콘
- 모든 항목에
text-align: center적용 - 모든 요소에 균일한 둥근 테두리 반경
- 장식용 블롭, 물결 모양 SVG 분할선
- 디자인 요소로서의 이모지
- 카드의 색상이 지정된 왼쪽 테두리
- 일반적인 히어로 카피 ("X에 오신 것을 환영합니다", "...의 힘을 잠금 해제하세요")
- 판에 박은 듯한 섹션 리듬 (히어로 → 기능 → 사용후기 → 가격 → CTA)
3개 이상의 패턴이 감지되면 "AI 생성 패턴 위험"으로 플래그하고 특정 수정 사항을 제안합니다.
레이어 5: AI 시각적 차이
비교를 위해 design.png와 impl-desktop.png를 모두 LLM에 제공합니다. 구체적으로 질문:
- 계층 구조가 일치합니까?
- 간격 비율이 유지되었습니까?
- 누락된 섹션이나 요소가 있습니까?
개선 루프
확인 후 반복:
- 스크린샷 + 차이 결과를 사용자에게 보여줍니다.
- 사용자가 피드백을 제공합니다.
- 정밀 편집 적용 (전체 파일을 재생성하지 않음)
- 재확인
- "완료"될 때까지 반복 (최대 10회)
design.md 팁
- 템플릿: Google 공식 스킬 저장소에서 에이전트 최적화 템플릿을 가져옵니다.
- 전송: design.md를 모든 에이전트(Claude Code, Cursor)에 제공하여 일관된 스타일링을 얻습니다.
- 추출: Google의 "design MD 스킬"을 사용하여 기존 Stitch 프로젝트에서 design.md를 추출합니다.
- 사용자 정의: 색상/폰트/테마로 나만의 design.md를 만들고 Stitch의 디자인 시스템 패널에 붙여넣습니다.
알려진 문제
- API 키 인증 오류 — Stitch API가 API 키를 거부하므로 OAuth를 사용해야 합니다 (2026-02 커뮤니티 확인).
doctor가져오기 시간 초과 — 네트워크에 따라 다름; 직접 curl 테스트가 더 안정적입니다.- 결제 불필요 — Stitch API는 결제가 활성화되지 않은 프로젝트에서도 작동합니다.
- 실험 모드에서는 Figma 내보내기 불가 — 표준 모드만 Figma 내보내기를 지원합니다.