Skip to content
AI & Agents
Skill

/threejs-scroll-worlds

Build rich, scroll-controlled real-time Three.js experiences as one persistent 3D world whose camera, lighting, atmosphere, materials, objects, DOM story, and interactions evolve across authored chapters. Use for 3D scrollytelling, scroll-driven WebGL worlds, camera journeys,

From plugin
skill
9.5k127 skills

Claude Code

$ npx -y skills add anbeime/skill --skill threejs-scroll-worlds --agent claude-code

SKILL.md

threejs-scroll-worlds.SKILL.md
name: threejs-scroll-worlds
description: Build rich, scroll-controlled real-time Three.js experiences as one persistent 3D world whose camera, lighting, atmosphere, materials, objects, DOM story, and interactions evolve across authored chapters. Use for 3D scrollytelling, scroll-driven WebGL worlds, camera journeys, interactive portfolios, product stories, exhibitions, explainers, game or film microsites, spatial narratives, and multi-scene websites where native scroll should travel through one continuous place. Not limited to landing pages.
metadata:
  author: Meng To
  source: https://github.com/MengTo/skills/tree/a965851e27dc179e693fde1bee94457a64e1a7a5/agent-skills/web-design/build-threejs-scroll-worlds
  license: MIT

Build Three.js Scroll Worlds

Build one detailed real-time world and use native document scroll as its deterministic conductor. Keep the renderer, scene graph, and spatial continuity alive while camera composition, light, fog, animation, copy, and interaction focus move through authored chapters.

The mechanism is **one persistent Three.js world + one normalized reversible scroll state**. If removing either makes the experience collapse into stacked sections, this skill applies.

The exact [Kage demo](demo/index.html) proves the quality bar; it is staging, not a mandatory subject or layout. Use its detailed anatomy only when the requested direction benefits from it: [references/kage-anatomy.md](references/kage-anatomy.md).

Route the request correctly

  • Use `threejs` for a single interactive scene with no scroll-authored journey.
  • Use `scroll-world-storytelling` when deciding between real-time 3D, pre-rendered video, and DOM-first storytelling.
  • Use `scroll-scrubbed-visual-sequence` for a video or image sequence whose time is scrubbed by scroll.
  • Use `cinematic-scroll-storytelling` for DOM-first GSAP/Lenis choreography.
  • Use this skill when objects must remain truly spatial and interactive while scroll moves through several compositions in one live WebGL world.

Do not disguise a video as Three.js. The public [oso95/scroll-world](https://github.com/oso95/scroll-world) project, reviewed at commit `71cc36d`, is a strong reference for intake, scene ledgers, budget gates, mobile-specific composition, config-driven playback, and seam QA, but its renderer is a pre-generated video chain. This skill adopts those structural strengths while retaining real geometry, materials, lighting, raycasting, and camera control.

Read the build references

Before implementing a new world, read:

  • [references/world-bible.md](references/world-bible.md) for intake, art direction, scene, material, texture, and interaction ledgers;
  • [references/realtime-architecture.md](references/realtime-architecture.md) for the scene graph, conductor, camera, loading, interaction, and lifecycle patterns;
  • [references/quality-and-qa.md](references/quality-and-qa.md) before optimization and final verification.

Copy [references/scroll-conductor.js](references/scroll-conductor.js) when a project needs a portable native-scroll conductor rather than a framework-specific implementation.

Start with the output, not the template

Determine what the world is for: a landing page, portfolio, museum chapter, product explanation, game teaser, editorial essay, data story, or another spatial experience. Do not force every request into a hero-plus-CTA layout.

Discover only what is unknown:

  • the subject, audience, and ordered story beats;
  • the art direction and emotional arc;
  • whether the world is continuous, portal-connected, or composed as adjacent sets;
  • the target devices and minimum acceptable hardware;
  • how interactive the world should be beyond scrolling;
  • available models, textures, brand assets, audio, and copy;
  • the initial-load and total-download budget.

If the user supplied an approved reference or working scene, inspect it first and carry its real geometry, materials, textures, light ratios, camera values, and motion constants into the ledger. Do not replace measured details with adjectives.

Write the world bible before code

Define one reusable visual grammar:

  • scale system and unit convention;
  • silhouette language and level of stylization;
  • palette and per-chapter accent progression;
  • material families and wear logic;
  • key, fill, rim, practical, and emissive light roles;
  • fog, haze, particles, weather, and post-processing;
  • typography, DOM composition, and near-plane foreground rules;
  • motion grammar for camera, ambient objects, and interactions.

Every visible detail must support the same world. Random noise, unrelated texture packs, arbitrary particle effects, and one-off materials create complexity without cohesion.

Author a scene ledger

Use 4–8 chapters for most experiences. Store the full contract as data rather than scattering thresholds through CSS and the render loop:

const chapters = [
  {
    id: "threshold",
    scrollWeight: 1.25,
    copy: {
      eyebrow: "Chapter 01",
      title: "Enter the archive",
      body: "A spatial collection revealed through motion."
    },
    camera: {
      position: [0, 3.8, 13.5],
      target: [0, 2.4, -8],
      fov: 38,
      mobile: { position: [0, 4.8, 18], fov: 46 }
    },
    world: {
      key: 1.0,
      practicals: 0.35,
      fog: 0.018,
      particles: 0.25,
      grade: "cold"
    },
    focus: ["gate", "lantern-left"],
    interactions: ["inspect-gate"],
    assets: ["gate-shell", "stone-1k", "mist-atlas"]
  }
];

For each chapter record the story beat, landmark, camera endpoint, occluders, light/fog state, active animation clips, interaction targets, DOM beat, foreground treatment, asset dependencies, and responsive override. Reject a chapter that differs only by copy.

Build one persistent spatial architecture

Create these systems once:

WebGL canvas
  worldRoot
    environment       sky, terrain, distant silhouettes
    architecture      persistent landmarks and paths
Read more
@anbeime
Ships withskill

收录最全、更新最快的AI Agent技能库,涵盖文档处理、内容创作、编程开发、机器学习、自动化工作流等多个领域的精选技能包。 🎁 知易多模型知识管家 · 免费试用预约 — 20+ 模型自由切换、技能市场、四色卡片知识库,留邮箱锁定免费试用名额,每周再收一份知易AI周刊。

9.5k127 skills
Get the whole plugin

Stars on GitHub

Momentum

stars in total
9.5k
Star history of anbeime/skill on GitHub, a chart by star-history.com

Other skills on skill.

doc-parse

doc-parse

将 PDF/PPT/Excel/Word 等多格式文档解析为结构化 Markdown,并输出元数据与解析置信度,作为 RAG 与四色卡片的数据底座。

@anbeime@anbeimeInstall Skill
four-color-cards

four-color-cards

基于解析后的文档与用户意图,生成四色卡片——事实蓝卡、解释绿卡、风险黄卡、行动红卡,是八官署方法论的核心分析输出。

@anbeime@anbeimeInstall Skill
provenance

provenance

收集系统全链路操作日志,生成可追溯的执行证据链与向量索引,是多智能体系统可观测性与安全审计的底座。

@anbeime@anbeimeInstall Skill
security-scan

security-scan

对进入系统的文件或 URL 执行安全与合规扫描,输出 pass/reject 判定与扫描报告,作为所有文档处理的强制前置关卡。

@anbeime@anbeimeInstall Skill
RuiC-card-skill

RuiC-card-skill

Generate interactive 3D holographic collectible-card websites from a user description or reference image, using layered artwork,…

@anbeime@anbeimeInstall Skill
agent-team

agent-team

产品经理与项目管理专家在应对复杂项目时,使用此技能可动态组建包含“执行、指挥、评审”的专属AI团队。实时查看多智能体辩论与决策全过程,共享统一上下文记忆,一键完成从会议决策到系统构建的全流程高效协同!

@anbeime@anbeimeInstall Skill

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

openclaw2w393k
@openclaw@openclawInstall Skill

Questions about threejs-scroll-worlds.

Which coding agents can use threejs-scroll-worlds?
threejs-scroll-worlds installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.