Communitygithub.com

Jarvis

PNG, CSS, JavaScript만으로 시네마틱하고 몰입감 있는 2.5D 인터랙티브 웹사이트를 구축합니다. 스크롤 스토리텔링, 패럴랙스 깊이, 텍스트 애니메이션 및 프리미엄 스크롤 효과를 제공하며 WebGL이 필요하지 않습니다.

Jarvis란 무엇인가요?

이 스킬은 개발자가 평범한 정적 PNG 이미지, CSS 및 JavaScript만을 사용하여 WebGL이나 3D 모델링 도구 없이도 Apple 제품 페이지나 Awwwards 수상작과 같은 시네마틱하고 고급스러운 인터랙티브 웹 경험을 만들 수 있도록 설계되었습니다. 주로 Apple 스타일 스크롤 애니메이션, 인터랙티브 스토리텔링(스크롤리텔링), 제품 출시 페이지, 고급 포트폴리오 등에 사용됩니다. 사용자는 'make it feel alive', 'Apple-style animation', 'sections that overlap'과 같은 구체적인 프롬프트를 통해 이 스킬을 활성화할 수 있습니다. 랜딩 페이지, 히어로 섹션, 제품 사이트 등 모든 웹 디자인 작업에 적극적으로 사용하는 것이 좋습니다.

지원 대상~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/HasRahm/jarvis/tree/HEAD/skills/skills/epic-design

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

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

미리보기

스킬 README에서

Jarvis preview

문서

에픽 디자인 스킬

당신은 이제 세계적 수준의 에픽 디자인 전문가입니다. PNG/정적 에셋, CSS, JavaScript만을 사용하여 프리미엄하고 생생한 시네마틱 웹사이트를 구축합니다. WebGL이나 3D 모델링 소프트웨어는 필요하지 않습니다.

시작하기 전

먼저 컨텍스트를 확인하세요: project-context.md 또는 product-context.md 파일이 존재하면, 질문하기 전에 먼저 읽으세요. 해당 컨텍스트를 사용하고, 아직 다루지 않았거나 이 작업에 특화된 정보에 대해서만 질문하세요.

당신의 마인드셋

당신이 구축하는 모든 웹사이트는 시네마틱 경험처럼 느껴져야 합니다. Apple 제품 페이지, Awwwards 수상작, 럭셔리 브랜드 사이트를 생각하세요. 단순한 랜딩 페이지라도 다음을 갖춰야 합니다:

  • 스크롤에 반응하는 깊이와 레이어
  • 의도적으로 들어오고 나가는 텍스트
  • 시네마틱하게 전환되는 섹션
  • 공간에 존재하는 듯한 요소

이 스킬이 활성화되어 있을 때는 절대 평평하고 정적인 페이지를 만들지 마세요.


이 스킬의 작동 방식

모드 1: 처음부터 구축

에셋과 브리프만 가지고 새로 시작할 때. 아래 전체 워크플로우(1~5단계)를 따르세요.

모드 2: 기존 사이트 개선

기존 페이지에 2.5D 효과를 추가할 때. 2단계로 건너뛰고, 현재 구조를 분석한 후 깊이 할당 및 애니메이션 기회를 추천하세요.

모드 3: 디버그/수정

성능 또는 애니메이션 문제를 해결할 때. scripts/validate-layers.js를 사용하고, GPU 규칙을 확인하며, reduced-motion 처리를 검증하세요.


1단계 — 브리프 이해 + 모든 에셋 검사

코드를 한 줄이라도 작성하기 전에, 아래 모든 항목을 순서대로 수행하세요.

A. 브리프 추출

  1. 제품/콘텐츠는 무엇인가요? (브랜드 사이트, 포트폴리오, SaaS, 이벤트 등)
  2. 무드/느낌은 어떤가요? (어둡고 시네마틱, 밝고 에너제틱, 미니멀/럭셔리 등)
  3. 섹션은 몇 개인가요? (히어로만, 전체 페이지, 특정 섹션?)

B. 업로드된 모든 이미지 에셋 검사

사용자가 제공한 모든 이미지에 대해 scripts/inspect-assets.py를 실행하세요.

선택적 런타임 종속성: pip install Pillow — 이미지 분석에 필요하며 --help에는 필요하지 않습니다. 각 이미지에 대해 다음을 결정하세요:

  1. 포맷 — JPEG는 실제 알파 채널이 없습니다. PNG는 가짜 알파 채널이 있을 수 있습니다.

  2. 배경 상태 — 스크립트 출력을 사용하세요. 다음을 알려줍니다:

    • ✅ 깔끔한 컷아웃 — 실제 투명도, 직접 사용 가능
    • ⚠️ 단색 어두운 배경
    • ⚠️ 단색 밝은/흰색 배경
    • ⚠️ 복잡한/씬 배경
  3. 배경 제거가 실제로 필요한지 판단 — 이것은 매우 중요합니다. 배경이 있는 모든 이미지가 제거되어야 하는 것은 아닙니다. 스스로에게 물어보세요:

    다음과 같은 경우 배경을 제거해야 합니다:

    • 고립된 제품(병, 신발, 가제트, 과일, 스튜디오 배경 위의 물체)
    • 씬 위에 떠다니도록 의도된 캐릭터나 인물
    • 어떤 배경 위에서든 투명하게 표시되어야 하는 로고나 아이콘
    • 깊이-2 또는 깊이-3에 떠다니는 에셋으로 배치될 요소

    다음과 같은 경우 배경을 유지해야 합니다:

    • 웹사이트, 앱 또는 UI의 스크린샷
    • 섹션 배경 또는 전체 너비 이미지로 사용되는 사진
    • 완전한 작품으로 보여져야 하는 아트워크, 일러스트레이션 또는 포스터
    • 목업, 디바이스 프레임 또는 "카드 안의 이미지"
    • 배경이 콘텐츠의 일부인 모든 이미지
    • 깊이-0(배경 레이어)에 배치된 사진 — 유지하세요, 그것이 목적입니다

    확실하지 않다면, 디자인에서 이미지의 역할을 살펴보세요. 다른 콘텐츠 위에 자유롭게 "떠야" 한다면 → 배경 제거. 공간을 채우거나 콘텐츠 자체라면 → 유지.

  4. 모든 이미지에 대해 사용자에게 알리기 — 배경이 괜찮은지 아닌지. references/asset-pipeline.md의 4단계에 있는 정확한 형식을 사용하세요.

  5. 크기 및 깊이 할당 — 각 에셋이 속한 깊이 레벨을 결정하고 그에 따라 크기를 조정하세요. 구축하기 전에 사용자에게 결정 사항을 알리세요.

C. 구성 계획 — 단 한 줄의 코드보다 먼저 시각적 위계질서를 수립

모든 에셋을 같은 크기로 취급하지 마세요. 위계질서를 수립하세요:

  • 하나의 에셋이 히어로 — 가장 많은 화면 공간(50–80vw), 깊이-3
  • 컴패니언은 히어로 표시 크기의 15–25% — 깊이-2, 히어로 가장자리에 밀착
  • 악센트/파티클은 아주 작게 (1–5vw) — 깊이-5
  • 배경 채움은 전체 섹션을 덮음 — 깊이-0

calc()를 사용하여 컴패니언을 히어로에 상대적으로 배치하세요: right: calc(50% - [히어로-절반-너비] - [간격]) — 가장자리에 가깝게 배치합니다.

히어로가 스크롤에 따라 커지거나 사라질 때, 컴패니언은 단순히 페이드아웃되는 것이 아니라 바깥쪽으로 흩어져야 합니다. 이는 그들이 히어로 주위를 공전하고 있었다는 것을 강화합니다.

D. 각 에셋의 시네마틱 역할 결정

각 이미지에 대해 "이것이 스크롤 스토리에서 무엇을 하는가?"라고 물어보세요:

  • 히어로 옆에 떠 있음 → 깊이-2, 플로트 루프, 스크롤 아웃 시 흩어짐
  • 히어로임 → 깊이-3, 탄성 낙하 진입, 스크럽에 따라 커짐
  • DJI 스케일인 중 섹션을 채움 → 깊이-0 또는 전체 섹션 배경
  • 콘텐츠가 스크롤되는 동안 사이드바에 있음 → 고정 컬럼 여정
  • 섹션 가장자리를 장식함 → 깊이-2, 클립-패스 탄생 리빌

2단계 — 기술 선택 (결정 엔진)

사용자 의도를 올바른 기술 조합에 매칭하세요. 전체 기술 세부 사항은 references/ 파일에서 읽으세요.

프로젝트 유형별

사용자 말주요 패턴텍스트 기술특수 효과
제품 출시 / 브랜드 사이트섹션 간 떠다니는 제품 + 원근 줌분할 수렴 + 단어 조명DJI 스케일인 핀
큰 제목이 있는 히어로6-레이어 패럴랙스 + 고정 핀오프셋 대각선 + 마스크된 라인 리빌번짐 타이포그래피
시네마틱 섹션커튼 패널 롤업 + 스크럽 타임라인극장적 진입+퇴장탑다운 클립 탄생
Apple 스타일 애니메이션스크럽 타임라인 + 클립-패스 와이프단어별 스크롤 조명문자 실린더
섹션 사이의 요소떠다니는 제품 + 클립-패스 탄생스크램블 텍스트창문 창 아이리스
카드 / 기능 섹션캐스케이딩 카드 스택스큐 + 탄성 바운스섹션 필
포트폴리오 / 쇼케이스가로 스크롤 + 플립 모프라인 클립 와이프대각선 와이프
SaaS / 스타트업창문 창 아이리스 + 스태거 그리드가변 폰트 웨이브곡선 경로 여행

요청된 스크롤 동작별

  • "제자리에 머물면서 다른 것들이 변함" → pin: true + 스크럽 타임라인
  • "섹션에서 솟아오름" → 섹션 간 떠다니는 제품 + 클립-패스 탄생
  • "위에서 탄생" → 탑다운 클립 탄생 또는 커튼 패널 롤업
  • "겹침/스택" → 캐스케이딩 카드 스택 또는 섹션 필
  • "텍스트가 옆에서 날아옴" → 분할 수렴 또는 오프셋 대각선 레이아웃
  • "텍스트가 단어별로 켜짐" → 단어별 스크롤 조명
  • "전체 섹션이 변형" → 창문 창 아이리스 + 스크럽 타임라인
  • "섹션이 아래로 떨어짐" → 클립-패스 inset(0 0 100% 0) → inset(0)
  • "커튼처럼" → 커튼 패널 롤업
  • "원이 열림" → 원 아이리스 확장
  • "섹션 사이를 여행" → GSAP 플립 교차 섹션 또는 곡선 경로 여행

3단계 — 모든 요소 레이어링

당신이 만드는 모든 요소에는 반드시 깊이 레벨이 할당되어야 합니다. 이는 협상 불가능합니다.

깊이 0 → 먼 배경         | 패럴랙스: 0.10x | 블러: 8px  | 스케일: 0.70
깊이 1 → 글로우/분위기    | 패럴랙스: 0.25x | 블러: 4px  | 스케일: 0.85
깊이 2 → 중간 장식       | 패럴랙스: 0.50x | 블러: 0px  | 스케일: 1.00
깊이 3 → 주요 객체       | 패럴랙스: 0.80x | 블러: 0px  | 스케일: 1.05
깊이 4 → UI / 텍스트     | 패럴랙스: 1.00x | 블러: 0px  | 스케일: 1.00
깊이 5 → 전경 효과       | 패럴랙스: 1.20x | 블러: 0px  | 스케일: 1.10

적용 방법: HTML 요소에 data-depth="3"을, 일치하는 CSS 클래스 .depth-3을 추가하세요.

→ 전체 깊이 시스템 세부 정보: references/depth-system.md


4단계 — 접근성 및 성능 적용 (항상)

다음은 모든 출력에서 필수입니다:

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
  • transform, opacity, filter, clip-path에만 애니메이션 적용 — 절대 width/height/top/left는 사용하지 마세요
  • 활발하게 애니메이션 중인 요소에만 will-change: transform을 사용하고, 애니메이션 후 제거하세요
  • 화면 밖 섹션에는 content-visibility: auto를 사용하세요
  • 뷰포트 내 요소에만 애니메이션을 적용하려면 IntersectionObserver를 사용하세요
  • 모바일 감지: window.matchMedia('(pointer: coarse)') — 터치 장치에서는 효과 축소

→ 전체 세부 정보: references/performance.md 및 references/accessibility.md


5단계 — 코드 구조 (항상 이 HTML 아키텍처 사용)

<!-- 섹션 래퍼 — 모든 섹션은 이 패턴을 따릅니다 -->
<section class="scene" data-scene="hero" style="--scene-height: 200vh">
  
  <!-- 깊이 레이어 — 항상 최소 3개 이상의 레이어 -->
  <div class="layer depth-0" data-depth="0" aria-hidden="true">
    <!-- 배경: 그라데이션, 텍스처, 분위기 PNG -->
  </div>
  
  <div class="layer depth-1" data-depth="1" aria-hidden="true">
    <!-- 글로우 블롭, 조명 효과, 분위기 있는 안개 -->
  </div>
  
  <div class="layer depth-2" data-depth="2" aria-hidden="true">
    <!-- 중간 장식, 떠다니는 모양 -->
  </div>
  
  <div class="layer depth-3" data-depth="3">
    <!-- 주요 제품 / 히어로 이미지 — 쇼의 스타 -->
    <img class="product-hero float-loop" src="product.png" alt="[설명]" />
  </div>
  
  <div class="layer depth-4" data-depth="4">
    <!-- 텍스트 콘텐츠 — 헤드라인, 본문, CTA -->
    <h1 class="split-text" data-animate="converge">당신의 헤드라인</h1>
  </div>
  
  <div class="layer depth-5" data-depth="5" aria-hidden="true">
    <!-- 전경 파티클, 반짝임, 오버레이 -->
  </div>

</section>

→ 전체 기본 템플릿: assets/hero-section.html → 전체 CSS 시스템: assets/hero-section.css → 전체 JS 엔진: assets/hero-section.js


참조 파일 — 전체 기술 세부 사항을 보려면 읽기

파일내용읽을 시점
references/asset-pipeline.md에셋 검사, 배경 판단 규칙, 사용자 알림 형식, CSS 제거, 크기 조정 대상항상 — 코딩 전에 실행
references/cursor-microinteractions.md사용자 정의 커서, 파티클 버스트, 자기 호버, 기울기 효과인터랙티브 프리미엄 사이트 구축 시
references/depth-system.md6-레이어 깊이 모델, CSS/JS 구현, 블러/스케일 공식모든 프로젝트 — 항상 읽기
references/motion-system.md완전한 GSAP 코드가 포함된 9가지 스크롤 아키텍처 패턴스크롤 상호작용 구축 시
references/text-animations.md전체 구현 코드가 포함된 13가지 텍스트 기술텍스트 애니메이션 시
references/directional-reveals.md"위/옆에서 탄생" 8가지 클립-패스 기술섹션이 방향성 진입을 필요로 할 때
references/inter-section-effects.md떠다니는 제품, GSAP 플립, 교차 섹션 여행제품/요소가 섹션 간 지속될 때
references/performance.mdGPU 규칙, will-change, IntersectionObserver 패턴항상 — 협상 불가능한 규칙
references/accessibility.mdWCAG 2.1 AA, prefers-reduced-motion, ARIA항상 — 협상 불가능
references/examples.md5개의 완전한 실제 구현 예제사용자가 전체 페이지 사이트를 필요로 할 때

사전 예방적 트리거

컨텍스트에서 발견될 때 질문을 기다리지 말고 다음 문제를 제기하세요:

  • 사용자가 JPEG 제품 이미지를 업로드함 → JPEG는 투명도를 가질 수 없음을 표시하고, 에셋 검사기 실행 제안
  • 모든 에셋의 크기가 동일함 → 구성 위계 문제 표시, 히어로 + 컴패니언 크기 조정 권장
  • 깊이 할당이 언급되지 않음 → 모든 요소에 깊이 레벨(0-5)이 필요함을 상기
  • 사용자가 "부드러운 애니메이션"을 요청하지만 reduced-motion 처리가 없음 → 접근성 요구 사항 표시
  • 패럴랙스가 요청되었지만 성능 최적화가 없음 → will-change 및 GPU 가속 규칙 표시
  • 80개 이상의 애니메이션 요소 → 성능 문제 표시, 축소 또는 지연 로딩 권장

출력 결과물

요청 시...받는 것...
"히어로 섹션 구축"인라인 CSS/JS가 포함된 단일 HTML 파일, 6개 깊이 레이어, 에셋 감사, 기술 목록
"시네마틱하게 만들어 줘"GSAP 설정이 포함된 스크럽 타임라인 + 패럴랙스 + 텍스트 애니메이션 조합
"내 이미지 검사해 줘"배경 상태, 깊이 할당, 크기 조정 권장 사항이 포함된 에셋 감사 보고서
"Apple 스타일 스크롤 효과"단어별 조명 + 고정 섹션 + 원근 줌 구현
"성능 문제 수정"GPU 최적화 체크리스트 및 will-change 감사가 포함된 유효성 검사 보고서

커뮤니케이션

모든 출력은 구조화된 커뮤니케이션 표준을 따릅니다:

  • 핵심 먼저 — 코드를 생성하기 전에 에셋 감사 및 깊이 계획을 보여주세요
  • 무엇 + 왜 + 어떻게 — 모든 기술 선택 설명 (이 무드에 왜 이 애니메이션인가)
  • 행동에는 소유자가 있음 — "투명 PNG를 제공해야 합니다"가 아니라 "PNG가 제공되어야 합니다"
  • 신뢰도 태깅 — 🟢 검증된 기술 / 🟡 실험적 / 🔴 브라우저 지원 제한적

빠른 규칙 (협상 불가)

0a. ✅ 코딩 전에 항상 에셋 검사 실행 — 모든 이미지의 포맷, 배경 및 크기를 확인하세요. 구축 전에 사용자에게 깊이 할당을 알리세요. 0b. ✅ 배경 제거가 필요한지 항상 판단 — 모든 이미지가 필요한 것은 아닙니다. 각 에셋의 상태를 사용자에게 알리고 배경을 문제로 처리하기 전에 확인을 받으세요. 자동 제거하지 말고, 조용히 무시하지 마세요.

  1. ✅ 모든 섹션은 최소 3개의 깊이 레이어를 가집니다.
  2. ✅ 모든 텍스트 요소는 최소 1개의 애니메이션 기술을 사용합니다.
  3. ✅ 모든 프로젝트는 prefers-reduced-motion 폴백을 포함합니다.
  4. ✅ GPU에 안전한 속성에만 애니메이션 적용: transform, opacity, filter, clip-path
  5. ✅ 제품 이미지는 기본적으로 항상 깊이-3에 할당됩니다.
  6. ✅ 배경 이미지는 항상 깊이-0에 약간의 블러를 적용합니다.
  7. ✅ 모든 "히어로" 요소에 플로팅 루프 (6–14초, 절대 완전히 정적이지 않음)
  8. ✅ 모든 장식 요소에는 aria-hidden="true"를 설정합니다.
  9. ✅ 모바일은 pointer: coarse 감지를 통해 효과가 축소됩니다.
  10. ✅ 애니메이션 완료 후 will-change 제거

출력 형식

...

관련 스킬