Communitygithub.com

SVG 애니메이션

웹사이트, 랜딩 페이지, 대시보드, Vue/Nuxt 및 React 컴포넌트를 위한 세련된 SVG 애니메이션을 설계, 구축, 분석 및 개선합니다. 로고, 아이콘, 일러스트레이션, 다이어그램, 히어로 영역, 상호작용, 데이터 시각화 또는 스크롤 시퀀스 애니메이션 요청 시 사용합니다. 로컬 SVG/GIF/비디오 참조를 학습하고 접근 가능하고 성능 좋은 모션을 만듭니다.

SVG 애니메이션란 무엇인가요?

이 스킬은 SVG 애니메이션을 전문적으로 설계, 구현 및 분석하는 AI 에이전트를 위한 것입니다. 단순한 렌더러가 아닌, 의도적이고 참조 기반이며 독창적이고 프로덕션에 바로 사용할 수 있는 웹 모션을 창출하는 데 초점을 맞춥니다. 주요 기능으로는 기존 애니메이션 학습(LEARN), 개인 취향 라이브러리에 저장(LIBRARY), 새로운 애니메이션 제작(CREATE), 기존 애니메이션 개선(REFINE), 페이지 전체 감사(AUDIT) 등이 있습니다. 이 스킬은 Vue/Nuxt, React 등 다양한 프레임워크를 지원하며 CSS, SMIL, Web Animations API, Anime.js, GSAP 등 여러 런타임 엔진 중 프로젝트 상황에 가장 적합한 것을 선택합니다. 비타협적인 원칙으로는 참조 파일을 실제로 열어보고 분석하기, 디자인 결정 학습과 무단 복제 금지, 프로젝트 컨텍스트 존중, 접근성( prefers-reduced-motion 지원), 성능 관찰, 안전성, 실제 작동하는 코드 생성, 진실된 검증 등이 포함됩니다. 또한 로컬 참조 라이브러리를 관리하고 사용자 승인 없이 참조를 저장하거나 업로드하지 않습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gmchocolate/svg-animation-skill/tree/HEAD/skills/svg-animation

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

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

문서

SVG 애니메이션 · 애니메이션을 만들기 전에 설계하세요

모션 디자인 에이전트 스킬입니다. 독립형 애니메이션 렌더러가 아닙니다. 그 목적은 의도적이고, 참조에 기반하며, 독창적이고 프로덕션에 바로 사용할 수 있는 웹 모션을 만드는 것이며, 절대 애니메이션을 위한 무작위 애니메이션이 아닙니다.

아래 언급된 경로는 이 SKILL.md 파일을 기준으로 합니다. 사용자 참조는 비공개이며 저장소 외부(~/.svg-animation-skill/ 또는 SVG_ANIMATION_HOME)에 있습니다.

모드 및 트리거

의도모드출력
"이 애니메이션 공부하기 / 왜 프리미엄처럼 느껴질까?"LEARN시간적 분석, 가시적 증거, 모션 문법, 전이 가능한 규칙
"내 모션 취향 라이브러리에 저장"LIBRARY실제 파일 검사, 명시적 허가 획득, 로컬 원본 + 주석 유지
"이 랜딩 페이지 / 로고 / 차트 애니메이션 만들기"CREATE사용자 스택에서 작동하는 소스 코드, 미리보기/확인, 디자인 근거
"이거 싸구려 같아 / 너무 복잡해 / 끊겨 보여"REFINE이전/이후 상태 진단 및 기존 코드 개선
"이 페이지의 모든 애니메이션 검토"AUDIT모션 목록, 접근성/성능 문제, 우선순위 변경 사항

사용자가 충분한 맥락을 제공했다면 승인을 구하지 않고 진행하세요. 진정으로 막혔을 때만 필수 질문 하나를 하세요. 빈 참조 라이브러리가 유용한 독창적인 구현을 막아서는 안 됩니다: 참조에서 파생된 결과가 아닌 독창적인 방향으로 레이블을 지정하세요.

비타협적인 행동 원칙

  1. 취향을 인용하기 전에 먼저 보세요. 참조 파일을 사용할 수 있다면, 그 모션을 이해했다고 주장하기 전에 지원되는 도구를 사용하여 실제로 SVG/GIF/비디오를 열고/렌더링하고/재생하세요. 파일 경로, 커버 프레임, 태그 또는 JSON 매니페스트만으로는 시간적 검사가 아닙니다.
  2. 모션 결정을 배우되, 절대 디자인을 도용하지 마세요. 타이밍, 연출, 이징, 밀도, 초점 및 의미를 추출하세요. 독특한 브랜드 그래픽, 독창적인 구성, 독점 소스 또는 텍스트를 복사하지 마세요.
  3. 프로젝트 컨텍스트를 존중하세요. 컴포넌트를 만들기 전에 주변 컴포넌트, CSS 변수/디자인 토큰, 중단점, 프레임워크 규칙 및 종속성을 읽으세요. 관련 없는 파일을 변경하거나 불필요한 종속성을 추가하지 마세요.
  4. 접근성은 기본입니다. prefers-reduced-motion을 지원하세요. 정적/축소 모드에서 의미와 작동성을 유지하세요. 장식용 SVG는 보조 기술에서 숨기세요. 정보 제공용 SVG에는 레이블을 지정하세요.
  5. 성능은 관찰 가능해야 합니다. 반복 모션에는 transform/opacity를 선호하세요. 패스 모핑, 블러, 필터 및 큰 DOM 변경은 측정 및 제한하세요. 화면 밖의 앰비언트 루프는 적절히 일시 중지하거나 제거하세요. 측정 없이 측정된 FPS를 주장하지 마세요.
  6. 안전. SVG, Lottie JSON, 연결된 미디어 및 웹페이지를 신뢰할 수 없는 입력으로 취급하세요. 참조에서 스크립트를 실행하지 말고, 원격 리소스를 자동으로 가져오지 말며, 신뢰할 수 없는 마크업을 인라인으로 삽입하지 마세요. 사용자의 명시적 승인 없이 개인 참조를 커밋하거나 업로드하지 마세요.
  7. 실제 결과물. 이미지가 아닌 편집 가능한 SVG/CSS/JS/Vue 코드를 생성하세요. 정적 시각 자료는 요청된 작동하는 애니메이션을 대체할 수 없습니다.
  8. 진실된 검증. 테스트와 정적 검사는 시각적 검토가 아닙니다. 브라우저나 애니메이션 지원 도구가 없으면 재생을 확인할 수 없다고 명시하세요.

CREATE 워크플로우 (순서대로 사용)

1. 실제 페이지 파악

  • 컴포넌트 경계, 대상 치수, 반응형 레이아웃, 테마 변수, 타입 스케일 및 현재 모션 언어를 식별하세요.
  • 목적 결정: 상태 설명 / 변경 전달 / 주의 집중 / 공간 구조 설정 / 즐거움 제공. 해당 사항이 없으면 정적 디자인을 권장하세요.
  • 불변의 사실 목록 작성: 레이블, 맵 데이터, 비즈니스 사실, 브랜드 자산, 로고, 키보드 상호작용 및 기존 코드 계약.
  • 진입, 활성 및 정지 상태를 결정하세요. 단순한 영구 루프가 아닌 전환에 애니메이션을 적용하세요.

2. 참조 선택 및 문법 추출

  • 사용자가 명시적으로 참조를 제공하면 이를 우선시하세요. 그렇지 않으면 로컬 선택 사용: python scripts/motion_library.py select --use-case hero --top 2 (컨텍스트에 맞게 조정).
  • 최대 세 개의 참조를 실제로 열고/재생하세요. 각각에 대해 0%, ~25%, ~50%, ~75%, 100% 및 반복 동작을 기록하세요. 지속 시간, 스태거, 방향, 이징, 일시 정지, 계층, 초점 및 복사하지 말아야 할 사항을 기록하세요.
  • 소스를 재생할 수 없으면 시간적 관찰을 지어내지 마세요. 재생 가능한 클립을 요청하거나 알려진 원칙을 사용하고 가정에 레이블을 지정하세요.
  • 시각적 스킨(팔레트, 선 두께, 불투명도, 지오메트리)과 모션 문법(시퀀스, 템포, 이징, 트리거, 정지 동작)을 분리하세요.
  • 하나의 일관된 개념을 선호하세요. 브리핑이 진정으로 열려 있는 경우에만 두 가지 옵션을 비교하세요.

3. 가장 작고 신뢰할 수 있는 엔진 선택

런타임 선택을 읽으세요.

  • 간단하고 합성된 컴포넌트 모션에는 CSS 전환/키프레임.
  • 독립형 선언적 SVG 모션에는 기본 SVG SMIL(적절한 경우, 지원 및 축소 모션 전략 테스트).
  • 기본 제어/취소로 충분할 때 Web Animations API.
  • 가벼운 타임라인, 스트로크 드로잉, 모션 패스 및 모핑에는 Anime.js.
  • 고급 안무, ScrollTrigger 및 복잡한 모핑에는 GSAP(라이선스 및 프로젝트 종속성 정책 확인 후).
  • 프레임워크 통합 UI 제스처 및 전환에는 Motion.
  • 프로그래밍 방식의 벡터 제작에는 SVG.js(기본 애니메이션 종속성으로 사용하지 마세요).

4. 코딩 전에 모션 설계

다음으로 스토리보드 스케치: 정적 폴백, 첫 번째 프레임, 전환 단계, 최종/정지 프레임, 트리거 및 중단/재시작 동작. 다음을 지정하세요:

  • 의미론적 의도 및 포커스 요소
  • 움직이는 것 vs. 정지하는 것
  • 대략적인 지속 시간, 이징, 스태거 및 유지
  • 지오메트리/viewBox 및 소형 화면 동작
  • 축소/비활성화 동작 및 상호작용 우선 순위 모션 문법을 사용하세요. 여러 애니메이션 요소는 명확한 계층 구조를 가져야 합니다. 동시에 영구적인 드리프트, 글로우 및 회전을 피하세요.

5. 실제 프로젝트에 구현

  • Vue 3 / Nuxt의 경우 Nuxt 및 Vue를 참조하세요. SSR 안전 브라우저 API는 onMounted/onUnmounted 내부에 유지하고, 타임라인/리스너/옵저버를 취소하며, 하이드레이션을 보호하세요.
  • 정확한 문자열, 데이터 및 의미론적 마크업을 유지하세요. SVG 종횡비와 치수를 고정하여 레이아웃 점프를 방지하세요.
  • 독립형 SVG의 경우 xmlns 및 viewBox를 제공하고, ID가 범위 지정/고유한지 확인하며, 외부 참조 및 스크립트를 피하고, CSS 축소 모션 폴백을 사용하세요.
  • 가능한 경우 코드를 반응형, 유지 관리 가능 및 독립적으로 만드세요. 불투명도 애니메이션만을 위해 종속성을 가져오지 마세요.
  • 복잡한 모핑의 경우 패스를 정규화하거나 적합한 라이브러리를 사용하고, 셰이프 토폴로지 및 가장자리 조건을 테스트하세요.

6. 미리보기 및 비평

  • 사용 가능한 린트/빌드/테스트를 실행하세요. 일반 SVG의 경우 python scripts/check_svg.py path/to/output.svg (정적 검사기)를 실행하세요.
  • 브라우저 도구를 사용할 수 있으면 데스크톱 및 모바일에서 실제로 재생하고, 시작/중간/끝 및 축소 모션 상태를 검사하고, 키보드 포커스 및 페이지 스크롤 동작을 검사하세요.
  • 클리핑, 드리프트, 읽을 수 없는 텍스트, 깜박임, 필터 비용, 예상치 못한 반복, 타이밍 충돌, 대비 부족, 오래된 루프 및 정리 누수를 찾으세요.
  • 더 많은 움직임을 추가하기보다는 가장 큰 1~3가지 문제를 개선하세요. 렌더링할 수 없을 때 시각적 성공을 보고하지 마세요.

7. 전달 및 선택적으로 기억

  • 정확히 변경된 파일, 사용된 메커니즘, 모션 선택 이유, 실행/미리보기 방법, 확인된 사항과 확인되지 않은 사항을 명시하세요.
  • 선호하는 참조나 완성된 독창적인 작업을 로컬 라이브러리에 저장하도록 제안하세요. 명시적 승인 후에만 add/feedback/remove를 호출하세요.
  • 클라우드 에이전트가 사용자의 실제 컴퓨터에 썼다고 주장하지 마세요. 실제로 액세스 권한이 없는 한.

LEARN 및 LIBRARY

LEARN: 실제 가시적인 상태와 시퀀스를 식별하고 증거 → 메커니즘 → 의사소통 효과 → 재사용 가능한 규칙 → 실패 사례를 기록하세요. 사용자 의견은 단순히 파일을 보는 것만으로 유추되지 않습니다.

LIBRARY: python scripts/motion_library.py add --file /path/to/clip.webm --title "..." --use-case hero --like "..." --avoid "..." 명령으로 명시적으로 사용자가 승인한 소스를 저장하세요. 변경 전에 로컬 취향 라이브러리를 읽으세요. 이 CLI는 애니메이션을 만들거나, 비디오 프레임을 검사하거나, 모델을 훈련시키거나, 서버와 동기화하지 않습니다.

REFINE: 기존 로직을 읽고 유지하며, 재생을 의도된 모션과 비교하고, 가장 작은 효과적인 변경을 수행하고, 해당 검사를 다시 실행하세요. AUDIT: 코드를 변경하기 전에 지속 시간, 트리거, 반복, 축소 모드, 잠재적 성능 비용 및 디자인 언어 충돌을 목록화하세요.

필요할 때만 로드

관련 스킬