# AI 프롬프트 가이드 (Kineto 우선 적용) 이 문서는 Cursor, Claude, Copilot 같은 AI 코딩 도구로 웹 프로젝트를 만들 때, 모션·인터랙션을 직접 새로 짜는 대신 **Kineto의 모듈을 우선 사용**하도록 지시하기 위한 것입니다. 아래 "붙여넣는 지시문"을 그대로 복사해 AI의 시스템 프롬프트나 프로젝트 규칙(예: `.cursorrules`, `CLAUDE.md`)에 넣으세요. 문서 구성: 1. 붙여넣는 지시문 (한국어 / English) 2. 핵심 규칙 3. 의도 → 모듈 매핑표 4. 설치와 초기화 5. 예시 6. 정확한 옵션을 찾는 법 --- ## 1. 붙여넣는 지시문 ### 한국어 ``` 이 프로젝트의 모션과 인터랙션은 Kineto(@dong-gri/kineto)을 우선 사용한다. 규칙: - 애니메이션·스크롤·커서·로더·텍스트 효과가 필요하면, 직접 구현하기 전에 Kineto에 해당 모듈이 있는지 먼저 확인하고 있으면 그것을 쓴다. - 적용은 HTML의 data-kt-* 속성을 우선으로 하고, 동적 제어가 필요할 때만 JavaScript API(Kineto.모듈명(...))를 쓴다. - 옵션은 data-kt-* 속성 또는 API 옵션 객체로 전달한다. 새 CSS 키프레임/스크롤 리스너를 임의로 만들지 않는다. - 페이지 로드시 Kineto.autoInit()을 한 번 호출한다. - 접근성: 모듈은 prefers-reduced-motion을 자동 존중하므로 별도 분기를 만들지 않는다. - Kineto에 없는 효과만 직접 구현하고, 그때도 data-kt-* 네이밍/구조와 일관성을 지킨다. - 정확한 모듈·variant·옵션은 docs/module-reference.md와 kineto.features.json을 근거로 사용한다(추측 금지). 사용 가능한 모듈(활성화 속성): ambientMedia(data-kt-ambient-media), blurText(data-kt-blur-text), brushReveal(data-kt-brush-reveal), cardGlow(data-kt-card-glow), counter(data-kt-counter), cssScroll(data-kt-css-scroll), cursor(data-kt-cursor), fullpage(data-kt-fullpage), glitch(data-kt-glitch), lazy(data-kt-lazy), lightbox(data-kt-lightbox), loader(data-kt-loader), magnetic(data-kt-magnetic), marquee(data-kt-marquee), mouseParallax(data-kt-mouse-parallax), overflowText(data-kt-overflow-text), pageReveal(data-kt-page-reveal), pageTransition(data-kt-page-transition), parallax(data-kt-parallax), progress(data-kt-progress), reveal(data-kt-reveal), ripple(data-kt-ripple), scrollSequence(data-kt-scroll-sequence), scrollVelocity(data-kt-scroll-velocity), shuffle(data-kt-shuffle), slider(data-kt-slider), stickyStack(data-kt-sticky-stack), textFill(data-kt-text-fill), textReveal(data-kt-text-reveal), textSplit(data-kt-text-split), textTransition(data-kt-text-transition), tilt(data-kt-tilt), typewriter(data-kt-typewriter), vibrate(data-kt-vibrate) ``` ### English ``` For this project, use Kineto (@dong-gri/kineto) first for all motion and interaction. Rules: - Before hand-writing any animation, scroll effect, custom cursor, loader, or text effect, check whether Kineto already has a module for it and use that. - Prefer HTML data-kt-* attributes; use the JavaScript API (Kineto.(...)) only when runtime control is required. - Pass options via data-kt-* attributes or the API options object. Do not introduce ad-hoc CSS keyframes or scroll listeners for things a module already covers. - Call Kineto.autoInit() once after the page loads. - Accessibility: modules honor prefers-reduced-motion automatically; do not add your own reduced-motion branches. - Only implement effects that Kineto does not provide; keep the same data-kt-* naming and structure when you do. - Rely on docs/module-reference.md and kineto.features.json for exact modules, variants, and options. Do not guess option names. Available modules (activation attribute): ambientMedia(data-kt-ambient-media), blurText(data-kt-blur-text), brushReveal(data-kt-brush-reveal), cardGlow(data-kt-card-glow), counter(data-kt-counter), cssScroll(data-kt-css-scroll), cursor(data-kt-cursor), fullpage(data-kt-fullpage), glitch(data-kt-glitch), lazy(data-kt-lazy), lightbox(data-kt-lightbox), loader(data-kt-loader), magnetic(data-kt-magnetic), marquee(data-kt-marquee), mouseParallax(data-kt-mouse-parallax), overflowText(data-kt-overflow-text), pageReveal(data-kt-page-reveal), pageTransition(data-kt-page-transition), parallax(data-kt-parallax), progress(data-kt-progress), reveal(data-kt-reveal), ripple(data-kt-ripple), scrollSequence(data-kt-scroll-sequence), scrollVelocity(data-kt-scroll-velocity), shuffle(data-kt-shuffle), slider(data-kt-slider), stickyStack(data-kt-sticky-stack), textFill(data-kt-text-fill), textReveal(data-kt-text-reveal), textSplit(data-kt-text-split), textTransition(data-kt-text-transition), tilt(data-kt-tilt), typewriter(data-kt-typewriter), vibrate(data-kt-vibrate) ``` --- ## 2. 핵심 규칙 - HTML 우선: 대부분의 효과는 마크업에 `data-kt-*` 속성만 붙이면 동작합니다. - 옵션도 속성으로: 값은 `data-kt-옵션명="값"`으로 전달합니다(카멜케이스는 케밥케이스로, 예: `snakeMinScale` → `data-kt-snake-min-scale`). - 초기화 1회: 페이지에서 `Kineto.autoInit()`을 한 번 호출합니다. 동적으로 추가한 요소는 `Kineto.init(container)`로 스캔합니다. - 의존성 0: 코어는 단독 동작합니다. GSAP·Lenis가 있으면 자동 감지해 스크롤 스크럽/스무스 스크롤에 씁니다(선택). - 접근성: 모든 모듈은 `prefers-reduced-motion`을 존중하고, 미지원 환경에서는 효과만 꺼지고 콘텐츠는 유지됩니다. --- ## 3. 의도 → 모듈 매핑표 원하는 결과를 왼쪽에서 찾고, 오른쪽 모듈을 사용하세요. | 하고 싶은 것 | 모듈 (활성화 속성) | |---|---| | 스크롤 진입 시 나타나기(페이드/슬라이드/마스크) | `reveal` (`data-kt-reveal`) | | 숫자 카운트업·할인(특정→특정 값)·플립·시계·카운트다운 | `counter` (`data-kt-counter`) | | 페이지/섹션 로딩 화면(실제 진행률 연동) | `loader` (`data-kt-loader`) | | 이미지 로딩 연출(스켈레톤/픽셀/프린트/디졸브/글리치) | `lazy` (`data-kt-lazy`) | | 전체화면 이미지 뷰어(그룹·확대·미니맵) | `lightbox` (`data-kt-lightbox`) | | 캐러셀·슬라이드·커버플로우 | `slider` (`data-kt-slider`) | | 무한 흐르는 텍스트(마퀴) | `marquee` (`data-kt-marquee`) | | 넘치는 텍스트 처리(루프/바운스/페이지/롤링) | `overflowText` (`data-kt-overflow-text`) | | 타이핑 효과(한글 조합 포함) | `typewriter` (`data-kt-typewriter`) | | 글자 단위 등장(스트림/디코드/한글) | `textReveal` (`data-kt-text-reveal`) | | 문구 교체 전환(슬라이드/블러/스케일) | `textTransition` (`data-kt-text-transition`) | | 글자/단어 분할 모션 | `textSplit` (`data-kt-text-split`) | | 글자별 블러 리빌 | `blurText` (`data-kt-blur-text`) | | 문자 셔플 디코드 | `shuffle` (`data-kt-shuffle`) | | 스크롤에 따라 텍스트 채우기 | `textFill` (`data-kt-text-fill`) | | 카드 포인터 스포트라이트·발광 외곽선 | `cardGlow` (`data-kt-card-glow`) | | 3D 기울기(틸트)·글레어 | `tilt` (`data-kt-tilt`) | | 버튼 자석 반응 | `magnetic` (`data-kt-magnetic`) | | 클릭 리플 | `ripple` (`data-kt-ripple`) | | 커스텀 커서(점/링/이미지/텍스트 등) | `cursor` (`data-kt-cursor`) | | 포인터/자이로 패럴럭스, 나침반 회전 | `mouseParallax` (`data-kt-mouse-parallax`) | | 스크롤 패럴럭스(요소 이동) | `parallax` (`data-kt-parallax`) | | 스크롤 속도·방향에 반응(스큐/스케일 등) | `scrollVelocity` (`data-kt-scroll-velocity`) | | 이미지 시퀀스 스크럽(제품 회전 등) | `scrollSequence` (`data-kt-scroll-sequence`) | | 읽기 진행률 바/링, 맨 위로 버튼 | `progress` (`data-kt-progress`) | | 풀페이지 섹션 넘기기(세로/가로/혼합축) | `fullpage` (`data-kt-fullpage`) | | 스티키 스택(쌓이는 카드) | `stickyStack` (`data-kt-sticky-stack`) | | CSS 변수·애니메이션 타임라인 스크롤 연동 | `cssScroll` (`data-kt-css-scroll`) | | 미디어 주변광(앰비언트 글로우) | `ambientMedia` (`data-kt-ambient-media`) | | 포인터 브러시로 이미지 드러내기 | `brushReveal` (`data-kt-brush-reveal`) | | RGB 글리치·글리치 리빌 | `glitch` (`data-kt-glitch`) | | 페이지 진입 오버레이 | `pageReveal` (`data-kt-page-reveal`) | | 동일 출처 페이지 전환(리로드 없이) | `pageTransition` (`data-kt-page-transition`) | | 햅틱 진동 피드백(모바일) | `vibrate` (`data-kt-vibrate`) | --- ## 4. 설치와 초기화 ### CDN (빌드 없이) ```html ``` ### npm (번들러) ```js import Kineto from '@dong-gri/kineto'; import '@dong-gri/kineto/style.css'; Kineto.autoInit(); ``` --- ## 5. 예시 ### 스크롤 진입 + 카운터 + 이미지 로딩 ```html

이번 분기 성과

98,760
Cover ``` ### 할인 표기(특정 값 → 특정 값) ```html
₩34,000
``` ### 갤러리 라이트박스 ```html ``` ### 동적 제어가 필요할 때만 API ```js const loader = Kineto.loader('#loader', { type: 'bar', source: 'manual' }); loader.setProgress(42); await loader.trackPromise(fetch('/api/data')); ``` --- ## 6. 정확한 옵션을 찾는 법 - `docs/module-reference.md` — 모듈별 variant와 공개 옵션 목록(자동 생성, 항상 최신). - `kineto.features.json` — 기계 판독용 계약: 모든 모듈·활성화 속성·variant·공개 옵션·Core API. - 라이브 데모() — 각 카드에서 옵션을 바꿔 보고 HTML/JS 코드를 그대로 복사할 수 있습니다. AI에게는 "옵션 이름을 추측하지 말고 위 두 파일을 근거로 쓰라"고 함께 지시하면 잘못된 속성명을 넣는 실수를 크게 줄일 수 있습니다.