Communitygithub.com

모바일 DOM 충실도

실제 웹사이트를 재현할 때 사용하는 스킬입니다.

모바일 DOM 충실도란 무엇인가요?

이 스킬은 주어진 URL의 실제 모바일 뷰포트에서 DOM을 정밀하게 추출하여 웹사이트를 재현하는 작업을 돕습니다. 정적 스크린샷이 아닌 실시간 DOM을 진실의 원천(source of truth)으로 삼아 텍스트, 이미지, 링크, 클릭 좌표 등의 요소를 정확하게 캡처하는 것이 핵심입니다. 주로 HyperFrames, Claude Code 등 AI 에이전트 기반 컴포지션 도구와 함께 사용되며, MCP DevTools가 있을 경우 콘솔을 통해 실시간 DOM 정보를 조회할 수 있습니다. 작업자는 기준 해상도를 설정하고, DOM 섹션을 검사한 후, 컴포넌트가 실제로 렌더링된 상태에서만 클릭 좌표를 매핑합니다. 또한 지연 로딩(lazy loading)된 이미지의 전체 URL을 가져오거나, 캐러셀 카드의 안정적인 선택자를 확보하는 등 세부적인 규칙을 준수해야 합니다. 최종적으로 짧은 맵(map)을 생성하여 각 씬(Scene)별 선택자, 표시 시간, 동작, 클릭 대상, 필요한 텍스트와 이미지를 에이전트에게 전달함으로써 원본과 동일한 시각적·상호작용적 충실도를 달성할 수 있도록 합니다.

지원 대상~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/galeonel/hyperframes-skills/tree/main/skills/mobile-dom-fidelity

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

모바일 DOM 충실도은(는) 무엇을 하나요?

이 스킬은 컴포지션을 작성하기 전에 사용합니다. 진실의 원천(source of truth)은 정적 스크린샷이 아닌 모바일 뷰포트의 실제 사이트입니다.

워크플로우

  1. 모바일 뷰포트로 브라우저에서 URL을 엽니다.
  2. 기준 해상도를 정의합니다 (보통 390x844, 393x852, 414x896 또는 이에 가까운 값).
  3. 비디오에 나타날 DOM 섹션을 검사합니다.
  4. 텍스트, href, src, alt, 주요 클래스, 역할(role), 상호작용 상태(interactive state)를 추출합니다.
  5. 컴포넌트가 보이는 상태인지 확인한 후에만 클릭 좌표를 매핑합니다.
  6. 관련 상태를 나열합니다: 클릭 전, 클릭 후, 스크롤 후, 장바구니, 결제, 확인 등.

MCP DevTools / console

MCP DevTools를 사용할 수 있을 때는 콘솔을 통해 실제 DOM을 조회하십시오. 추출할 데이터 예시:

const el = document.querySelector("SECTION_SELECTOR");
const rect = el.getBoundingClientRect();
({
  text: el.innerText,
  rect: { x: rect.x, y: rect.y, width: rect.width, height: rect.height },
  classes: el.className,
  images: [...el.querySelectorAll("img")].map((img) => ({
    src: img.currentSrc || img.src,
    alt: img.alt,
    width: img.naturalWidth,
    height: img.naturalHeight,
  })),
  links: [...el.querySelectorAll("a")].map((a) => ({
    text: a.innerText,
    href: a.href,
    classes: a.className,
  })),
});

클릭을 검증하려면:

const target = document.querySelector("TARGET_SELECTOR");
const r = target.getBoundingClientRect();
({ centerX: r.x + r.width / 2, centerY: r.y + r.height / 2, visible: r.width > 0 && r.height > 0 });

이 값들을 사용하여 컴포지션에서 커서 타이밍과 위치를 정의합니다.

캡처할 내용

  • 정확한 제품명.
  • 화면에 표시된 그대로의 혜택(benefit).
  • 가격과 조건.
  • 버튼 및 CTA.
  • 주요 이미지.
  • 캐러셀 카드.
  • 클릭 검증을 위한 안정적인 선택자.

규칙

  • DOM이 텍스트를 제공한다면 카피를 임의로 만들지 마십시오.
  • 타임라인에 컴포넌트가 나타나기 전에 클릭하지 마십시오.
  • 스크린샷을 구조의 유일한 출처로 사용하지 마십시오.
  • 스냅샷, 쿠키, 로그 또는 검사 파일을 게시하지 마십시오.
  • 사이트가 지연 로딩(lazy loading)을 사용한다면 src를 추출하기 전에 이미지가 로드될 때까지 기다리십시오.

예상 인계 사항

짧은 맵(map)을 생성하십시오:

Scene: Product carousel
Selector: .rf-cards-scroller-platter
Visible at: 2.0s
Action: horizontal scroll
Click target: card link, center x/y after card returns to center
Required text: ...
Required images: ...

이 맵을 사용하여 HyperFrames 컴포지션을 안내합니다.

충실도 기준

다음 조건이 모두 충족될 때 해당 섹션이 충실하다고 간주합니다:

  • 텍스트가 원본 DOM과 일치할 것;
  • 이미지가 동일하거나 허용된 대체물일 것;
  • 간격이 모바일 계층 구조를 따를 것;
  • 카드, 버튼, 레이블이 동일한 시각적 순서를 사용할 것;
  • 클릭이 실제 컴포넌트 경계 상자 내에서 발생할 것;
  • 커서 동작 전에 컴포넌트가 렌더링되어 있을 것.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

관련 스킬