canopy-part-title — скилл для Claude Code: титры в листве
Блок HyperFrames, в котором плотный слой листьев пролетает через кадр, расходится и открывает заголовок. Пригодится, когда нужна готовая анимированная плашка с двумя строками текста.
npx skills add heygen-com/hyperframes --skill canopy-part-title -a claude-codeЧто делает canopy-part-title
Скилл кладёт в проект готовую композицию HyperFrames. Текстурированные листья идут через кадр с малой глубиной резкости, расходятся и открывают первый заголовок. Вторая партия листьев, уже приподнятая по глубине, проносит второй заголовок мимо камеры; несколько листков остаются на буквах и слегка колышутся. Композиция canopy-part-title идёт 1920×1080, 12 s при 30 fps.
Внутри canopy-part-title.html и две текстуры в assets/: leaf-surface-color.webp и leaf-surface-normal.webp. Ставится командой npx hyperframes add canopy-part-title, файлы ложатся в compositions/canopy-part-title/, потом блок монтируется из хостового index.html через ` с data-composition-id и data-composition-src`. Заголовки, шрифт, вес, размер, межбуквенное расстояние, число листьев в пролёте, скорость и ветер на оставшихся листьях вынесены в 11 переменных и читаются через window.__hyperframes.getVariables().
Скрипты three.js 0.170.0 и GSAP 3.14.2 тянутся с jsDelivr, шрифт Gelasio берётся из Google Fonts. Один живой экземпляр занимает примерно 350 MB памяти, поэтому запускать стоит по одному. Нужен ли блок, зависит от задачи: для статичного титра без 3D-сцены он избыточен.
Какие задачи решает
- сделать заставку, где листва расходится и открывает заголовок
- вписать две строки текста в одну 12-секундную композицию
- подменить заголовки, шрифт и вес без правки кода
- настроить плотность листвы, скорость пролёта и ветер на оставшихся листьях
- отрендерить композицию с нестандартными значениями переменных из CLI
Примеры запросов агенту
- Поставь скилл canopy-part-title и покажи, как вставить блок в `index.html`.
- Поставь `headline1` в Understory, `headline2` в Move slowly и отрендери через `npx --yes [email protected] render`.
- Сбавь скорость пролёта и оставь меньше листьев на тексте.
Как установить canopy-part-title
1Через Skills CLI (Vercel)
npx skills add heygen-com/hyperframes --skill canopy-part-title -a claude-code2Вручную: положить файлы
~/.claude/skills/canopy-part-title/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/canopy-part-title/
1Через Skills CLI (Vercel)
npx skills add heygen-com/hyperframes --skill canopy-part-title -a codex2Вручную: положить файлы
.agents/skills/canopy-part-title/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add heygen-com/hyperframes --skill canopy-part-title -a cursor2Вручную: положить файлы
.cursor/skills/canopy-part-title/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install heygen-com/hyperframes canopy-part-title2Вручную: положить файлы
.github/skills/canopy-part-title/SKILL.md1Через Skills CLI (Vercel)
npx skills add heygen-com/hyperframes --skill canopy-part-title -a gemini-cli2Командой платформы
gemini skills install https://github.com/heygen-com/hyperframes --path registry/blocks/canopy-part-titleВручную: положить файлы
.devin/skills/canopy-part-title/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add heygen-com/hyperframes --skill canopy-part-title -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора14
Весь набор →Похожие
Вопросы о canopy-part-title
Как установить canopy-part-title в Claude Code?
Командой npx skills add heygen-com/hyperframes --skill canopy-part-title -a claude-code. Файл скилла появится по пути ~/.claude/skills/canopy-part-title/SKILL.md, а сами файлы композиции ставит npx hyperframes add canopy-part-title.
Что делает canopy-part-title?
Собирает 12-секундную композицию 1920×1080, в которой листья пролетают через кадр, расходятся и открывают первый заголовок, а вторая партия проносит второй.
Что нужно для работы блока?
three.js 0.170.0 и GSAP 3.14.2 подгружаются с jsDelivr, шрифт Gelasio идёт из Google Fonts. Плюс примерно 350 MB памяти на один живой экземпляр, поэтому рендерить лучше по одному.
Исходный текст
SKILL.md · Apache-2.0
--- name: canopy-part-title description: Leaves sweep through the frame and part to reveal the headline. HyperFrames block, 1920×1080, 12s, 11 variables. --- # Canopy Part Title A dense canopy of textured leaves sweeps across the frame with shallow depth of field, then parts to uncover the first headline; a second, depth-lifted batch carries the second headline past the camera. A handful of leaves stay behind on the type and keep a light breeze. Font, weight, size, letter spacing, leaf counts, sweep speed and the retained-leaf breeze are variables. Composition id: `canopy-part-title`. Duration 12 s at 30 fps, 1920×1080. ## Files - `canopy-part-title.html` (57 KB) - `assets/leaf-surface-color.webp` (64 KB) - `assets/leaf-surface-normal.webp` (136 KB) ## Install Install with `npx hyperframes add canopy-part-title`; by default the files above land under `compositions/canopy-part-title/`. Then mount the block from the host `index.html`: ```html <div data-composition-id="canopy-part-title" data-composition-src="compositions/canopy-part-title/canopy-part-title.html" data-start="0" data-duration="12" data-track-index="1" data-width="1920" data-height="1080" ></div> ``` Render with custom values by targeting the composition file directly: ```sh npx --yes [email protected] render 'compositions/canopy-part-title/canopy-part-title.html' --variables '{"headline1":"Understory","headline2":"Move slowly"}' ``` ## Variables Read at runtime via `window.__hyperframes.getVariables()`; declared on the composition root as `data-composition-variables` (single-quoted attribute, plain JSON). | id | type | default | label / range | | ---------------- | ------ | --------------- | ---------------------------------------- | | `headline1` | string | `"Understory"` | Headline 1 | | `headline2` | string | `"Move slowly"` | Headline 2 | | `font` | string | `"Helvetica"` | Headline font | | `fontWeight` | number | `900` | Font weight 100–900 step 100 | | `fontSize` | number | `1` | Font size (1 = auto-fit) 0.3–2 step 0.01 | | `letterSpacing` | number | `0.01` | Letter spacing (em) -0.2–1 step 0.01 | | `background` | color | `"#020805"` | Background | | `leafCount` | number | `170` | Leaves per sweep 40–320 step 1 | | `stayCount` | number | `5` | Leaves left behind 0–20 step 1 | | `sweepSpeed` | number | `1` | Sweep speed 0.3–3 step 0.05 | | `retainedBreeze` | number | `1` | Retained leaf breeze 0–2 step 0.05 | ## Runtime contract - One paused GSAP timeline registered as `window.__timelines["canopy-part-title"]`. - Re-syncs on the `hf-seek` CustomEvent; every frame is a closed-form function of time (seeded PRNG only, no rAF loops, no Date.now). - Renderer: three.js 0.170.0, GSAP 3.14.2, Canvas 2D, Post-processing, Seeded PRNG, Shadow maps. Budget roughly 350 MB per live instance; run one at a time. - External runtime dependencies: `https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.js`, `https://cdn.jsdelivr.net/npm/[email protected]/build/three.module.js`, `https://cdn.jsdelivr.net/npm/[email protected]/examples/jsm/postprocessing/EffectComposer.js`, `https://cdn.jsdelivr.net/npm/[email protected]/examples/jsm/postprocessing/RenderPass.js`, `https://cdn.jsdelivr.net/npm/[email protected]/examples/jsm/postprocessing/BokehPass.js`. - Web fonts from Google Fonts: Gelasio. ## Editing rules (from the source project) 1. Keep `data-composition-variables` a single-quoted attribute with plain `"` JSON. Never save it through Studio's Design panel. 2. Do not put `<canvas>` in static markup; create it at runtime. 3. Keep every visual state a function of t; seek-safety is what makes the block renderable.
© heygen-com · Apache-2.0 · heygen-com/hyperframes