複数の独立したローカル作業を安全性と依存関係を確認して実行計画にまとめ、対応環境では並列化やAppleシリコン向け処理の選択を支援します。
- ビルドやテストの独立した処理を並列化したいとき
- 複数段階の作業計画を安全に実行したいとき
- Appleシリコン向け処理の候補を確認したいとき
WebGLシェーダーを使い、ブランドカラーの背景や質感、ロゴ演出を動画向けに作成します。HyperFramesやRemotionで同じフレームを再現できます。
Turns Paper Shaders (30 WebGL shaders: mesh and grain gradients, god rays, liquid metal, smoke ring, dithering, halftone, paper texture and more) into frame-exact backgrounds, textures and logo stings for HyperFrames or Remotion videos, in brand colors, with nine tested presets. Every frame is drawn from timeline time, so renders are seekable, parallel and repeatable, and spend no varg credits. Use when a video needs an animated shader background, a grain, dither, halftone or paper look on graphics or stills, or a logo reveal or sting. NOT for generating footage (use varg-ai), grading or film grain on real footage (HyperFrames media treatments), warping existing layers (HyperFrames data-vfx-chain), 3D scenes (a Three.js skill) or shaders for websites.
実行スコア 未検証
インストール方法を見るPaper ShadersのWebGLシェーダーを、HyperFramesまたはRemotionの動画に背景、画像の質感、ロゴ演出として組み込みます。メッシュや粒子のグラデーション、光線、液体金属、煙の輪、ドット表現、紙の質感などを使えます。用意されたプリセットを選び、ブランドカラーを反映して静止画を確認しながら調整し、動画として書き出します。各フレームはタイムラインの時刻から描画されるため、同じ時刻の画を再現できます。
タイトルの背後に動く背景を置きたいときや、静止画に印刷物や紙のような質感を加えたいときに向いています。ロゴの登場演出や短い場面転換にも使えます。HyperFramesまたはRemotionで動画を作っていて、レンダリングするたびに画がずれない演出を加えたい場合にも役立ちます。
HyperFrames 0.8またはRemotion 4とNode 22、ffmpegが必要です。Remotionでは--gl=angleを指定します。Paper Shadersは0.0.82を使用します。画像用のプリセットに使うロゴや静止画は、利用者自身が権利を持つ素材か、使用許諾のある素材に限られます。実写映像への色調補正や粒子追加、映像素材の生成には対応しません。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Paper Shaders draws designer-tuned WebGL shaders into a canvas. Left alone it animates from the wall clock, which flickers and drifts in a video render. This skill mounts every shader at speed 0 and draws each frame from the timeline, so the same frame always gives the same picture.
@paper-design/shaders@0.0.82. Use that exact version everywhere. Never use 0.0.47–0.0.76: they are PolyForm Shield, not open source. Bumping the version follows references/licensing.md.templates/paper-preset.js. Never set speed above 0, and never let scene code read Date.now(), performance.now(), requestAnimationFrame or unseeded Math.random().estimate_cost and wait for the user's approval before any generation.A person approves at each checkpoint (looks, stills, motion) before the next step. Commands run from the skill folder; HF stands for the pinned CLI, npx --yes hyperframes@0.8.206.
references/shaders.md. Say which one and why in one line; that is checkpoint 1.node scripts/new-project.mjs ./video # new HyperFrames project from the template
node scripts/new-project.mjs ./existing --add # paper-preset.js and presets/ only
index.html. Image presets take { image: "assets/logo.png" }; serve images from the project.
node scripts/apply-brand.mjs assets/presets/brand-mesh.json palette.json --out ./video/presets/brand-mesh.json
node scripts/validate-presets.mjs ./video/presets/brand-mesh.json
$HF snapshot ./video --at 0.5,2,4 writes PNGs and a contact sheet. Show them; change one param at a time until approved.(cd ./video && $HF render --quality draft --output draft.mp4). Tune motion.timeScale for pace.node scripts/check-determinism.mjs ./video # must print "deterministic"
(cd ./video && $HF check && $HF render --output final.mp4) # or: npm run check, npm run render
The host is a timed clip with its own composition id and no GSAP timeline. HyperFrames calls render(seconds) for every frame it captures, in any order.
<div id="bg" class="clip" data-composition-id="bg" data-start="0" data-duration="6"
data-track-index="0" data-no-timeline data-layout-allow-overflow></div>
<script type="module">
import * as PS from "https://cdn.jsdelivr.net/npm/@paper-design/shaders@0.0.82/dist/index.js";
import { paperFrameSource } from "./paper-preset.js";
import preset from "./presets/god-rays-reveal.json" with { type: "json" };
const ramp = (t) => 1 - Math.pow(1 - Math.min(t / 1.2, 1), 3);
window.__hyperframes.registerFrameSource(
paperFrameSource(PS, document.getElementById("bg"), preset, {
paramsAt: (t) => ({ intensity: 0.8 * ramp(t), bloom: 0.4 * ramp(t) }), // a reveal, as a pure function of time
}),
);
</script>
await; HyperFrames boots on DOMContentLoaded.paperSequenceSource: one host, one context, any number of presets (see examples/paper-gallery).templates/hyperframes/shader-background.html is a complete composition to start from.npm i @paper-design/shaders@0.0.82
# copy templates/paper-preset.js, templates/paper-preset.d.ts, templates/remotion/ShaderBackground.tsx and the presets
<ShaderBackground preset={brandMesh}>
<h1>Headline</h1>
</ShaderBackground>
<ShaderBackground preset={liquidMetal} image={staticFile("logo.svg")} />
Render with npx remotion render <id> out.mp4 --gl=angle. Do not use Paper's React components for renders; see references/determinism.md.
Two sets ship. Nine varg presets in assets/presets/, in varg colors with brand roles. And all 124 of Paper's own presets in assets/presets/paper/ (paper-<shader>-<name>, for example paper-mesh-gradient-beach, paper-warp-passion), with the colors and speeds shown on shaders.paper.design. When the user wants "the look from Paper's site", start from those. All are validated against Paper's documented ranges; five of Paper's own go past the editor's slider ranges and stay as Paper ships them.
| Varg preset | Shader | Use |
|---|---|---|
brand-mesh | MeshGradient | Background behind titles, product cards and lower thirds |
grain-blob | GrainGradient | Soft grainy blob behind a quote, a product or a speaker |
retro-dither | Dithering | Two-ink texture for interstitials and end cards |
warp-transition | Warp | 0.5–1 s full-frame interstitial between scenes |
god-rays-reveal | GodRays | Rays behind a logo as it appears (ramp with paramsAt) |
liquid-metal-sting | LiquidMetal | 1–2 s chrome logo sting; needs a transparent logo |
smoke-ring-loader | SmokeRing | Ring around a countdown, a loader or a mark |
halftone-overlay | HalftoneDots | Print look for a still (needs the still) |
paper-finish | PaperTexture | Paper grain and folds over a still or title card |
A preset is JSON: shader, motion (timeScale, frame), optional mount and image notes, roles for brand mapping, and every param. paper-preset.js refuses a preset that leaves a uniform unset rather than render a wrong frame.
| When | Read |
|---|---|
| Choosing a shader, writing a new preset, working with footage | references/shaders.md |
| Frames flicker, go black or differ between workers; offline, 4K or Docker renders; Remotion details | references/determinism.md |
| Applying a palette, text contrast over a shader | references/brand-mapping.md |
| Bumping the Paper Shaders version, vendoring it, credits, client work | references/licensing.md |
All run with node or bun, make no network calls of their own, and touch only the paths you give them.
| Script | Does |
|---|---|
new-project.mjs <dir> [--example preset-reel|paper-gallery] [--add] | Scaffolds a HyperFrames project, or adds paper-preset.js and presets/ to one |
validate-presets.mjs [files] | Checks presets against the documented params, ranges, enums and color limits |
apply-brand.mjs <preset> <palette> | Maps a palette onto a preset through its roles |
check-determinism.mjs <project> [--at …] [--software] | Snapshots forwards and backwards in two runs and compares pixels (uses npx hyperframes) |
build-manifest.mjs | Rewrites assets/refs.manifest.json after a preset changes |
refresh-params.mjs <llms.txt> <version> | Rebuilds assets/paper-shaders.params.json when the pinned version changes |
index.html, paper-preset.js, presets/*.json (the branded presets actually used), package.json and hyperframes.json with the HyperFrames version pinned.contact-sheet.jpg, shown at checkpoint 2.renders/<name>.mp4 or the --output path; 1920×1080 at 30 fps unless asked otherwise.check-determinism.mjs result.examples/paper-gallery/ plays all 124 of Paper's presets, 2 s each, full frame, through one host (--example paper-gallery, about 4 minutes of video).
examples/preset-reel/ shows all nine varg presets, 2.5 s each, at 1920×1080 and 30 fps, with a frame counter that is itself a frame source. Posters and the logo are drawn in code, so it needs no outside media. A contact sheet is in assets/previews/preset-reel.webp.
node scripts/new-project.mjs ./preset-reel --example preset-reel
cd preset-reel && npm run render -- --output preset-reel.mp4 # pinned HyperFrames; about 22 s on an M1 Pro
hyperframes check passes; lint's structure warnings come from keeping the reel in one file to read.
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
複数の独立したローカル作業を安全性と依存関係を確認して実行計画にまとめ、対応環境では並列化やAppleシリコン向け処理の選択を支援します。
TikTokやMeta広告の勝ちパターンを分解し、異なる切り口のテスト案や予算、評価時期を整理して、数値から継続・修正・停止を判断するスキルです。
将来の読み手が理由を知りたくなる未決定や暫定対応を、技術的負債として登録し、後から項目ごとに整理できるスキルです。
LangChain、EINO、AutoGen、AgentScope、CrewAI向けのコード雛形やAPI対応、プロジェクト構成を参照し、バージョン確認を踏まえてAIエージェント開発を支援します。
エラーやテスト失敗、画面の異常などを再現して原因を特定し、テストで確認しながら影響を絞った修正を進めるデバッグ用スキルです。
対話を通じてAI Agentの要件整理から設計、ツール定義、コード生成、動作確認まで6段階で進め、実行可能なプロジェクトを作ります。