Not in the top 1,000 by GitHub stars

AIwithhassan/lets-scroll

Agent skill that builds scroll-scrubbed "fly through the world" landing pages, AI-generated scenes + camera flights chained into one seamless continuous shot, driven by scroll. Claude Code / Codex / SKILL.md-compatible.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/lets-scroll/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a0605366e8e7

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit a0605366e8e774b1596a993ecaf564b6de5916cc

133GitHub stars
3stars in 7 days
1skill in this repository
0commits in 30 days

Heat

2.9
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 2, 2026133

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

lets-scroll

When your agent uses it

Build an immersive scroll-scrubbed "fly through the world" landing page for any industry or brand using Higgsfield. As the visitor scrolls, a pre-rendered camera flies from outside each scene into its interior, then flows on to the next scene with NO cuts — one continuous connected flight (Emons-style isometric diorama world, or any art direction you pick). The skill interviews the user for the topic, the story beats/sections, and brand kit, then generates cohesive scenes + seamless camera clips with Higgsfield (or the user's own tools, via a prompt + conditioning-frame handoff) and wires a portable, framework-agnostic scroll-scrub engine. The video chain renders through Monid by default (Seedance 2.0, pay-per-clip USD — capability re-checked each build, see Step 4) with Higgsfield credits as the fallback biller. Use when the user wants a "3D world" / "browse-through-the-industry" hero, a scroll cinematic, a diorama landing, or to turn a business into a scrollable world.

What it loads into context

Frontmatter

273 tokens

Always available to the agent

SKILL.md

14,828 tokens

When the skill is activated

Reference documents

8,283 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Step 0 — Bootstrap
  2. Step 1 — Interview the user
  3. Step 2 — Generate the scene stills
  4. Step 3 — (Optional) Float the scenes
  5. Step 4 — Camera architecture (implements the Step 1.4 choice)
  6. Step 5 — Connectors (architecture B only)
  7. Step 6 — Encode for smooth scrubbing
  8. Step 7 — Assemble the page
  9. Step 8 — QA the seams (don't skip)
  10. Gotchas (hard-won)
  11. References

Scripts executed separately

  • references/knockout.py
  • references/scrub-engine.js

Files

  • SKILL.mdcore57,278 bytes
  • SKILL.mdcore57,278 bytes
  • SKILL.mdcore57,278 bytes
  • SKILL.mdcore57,278 bytes
  • SKILL.mdcore57,278 bytes
  • SKILL.mdcore57,278 bytes
  • SKILL.mdcore57,278 bytes
  • SKILL.mdcore57,278 bytes
  • SKILL.mdcore57,278 bytes
  • SKILL.mdcore57,278 bytes
  • SKILL.mdcore57,278 bytes
  • references/index-template.htmlasset2,712 bytes
  • references/knockout.pyruns2,855 bytes
  • references/pipeline.mddoc16,603 bytes
  • references/prompts.mddoc11,845 bytes
  • references/scrub-engine.jsruns28,691 bytes
Read SKILL.md

# lets-scroll

Produces a landing page where **scroll drives a camera**: it dives from outside a scene
into its interior, then flies out and into the next scene, continuously, with no visible
cuts. The visuals are AI-generated — stills via Higgsfield (or Codex), the video chain
via **Monid by default** (pay-per-clip Seedance 2.0; Higgsfield credits as fallback) —
and the page just scrubs pre-rendered video by scroll position. A **manual asset path**
(Step 1.7) swaps the render calls for a prompt + file handoff: the user generates every
still and clip in tools of their choice and drops the files into the work folder;
everything downstream (frame extraction, encode, engine, QA) is identical. This is the same technique behind Apple's scroll-through product
pages — the camera genuinely moves, scroll only drives time.

**What you generate:** N scene stills → N "dive-in" camera clips → N-1 "connector" clips
that join consecutive scenes seamlessly → a portable scrub engine that plays the whole
View the complete source on GitHub

Skills included

  • lets-scroll

Repository facts

License
MIT
Created
Aug 15, 2026
Last pushed
Aug 15, 2026
Forks
23
Open issues
0
Project activity
Slowing

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 5, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 10 notes
  • skills/lets-scroll/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/lets-scroll/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/lets-scroll/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/lets-scroll/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/lets-scroll/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/lets-scroll/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/lets-scroll/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/lets-scroll/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/lets-scroll/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/lets-scroll/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 27 signals by file

skills/lets-scroll/SKILL.md

  • Broad permissionsline 1
    Bash, Read, Write, Edit, AskUserQuestion, Skill
  • Network accessline 402
    base64 data URLs are **rejected** ("Must be a public https:// URL or an    asset://<id> reference"). Local frames travel through Monid's free workspace    file system: `sfs /put` → `curl -T` the bytes → `sfs /cat` returns a signed
  • Network accessline 403
    asset://<id> reference"). Local frames travel through Monid's free workspace    file system: `sfs /put` → `curl -T` the bytes → `sfs /cat` returns a signed    public URL to paste into the body ($0, explicitly built for this).
  • Network accessline 404
    file system: `sfs /put` → `curl -T` the bytes → `sfs /cat` returns a signed
  • Network accessline 828
    - **Monid seedance rejects inline images** → "Must be a public https:// URL or an   asset://<id> reference": frames go through the free `sfs` file system   (put → `curl -T` → cat → signed URL; pipeline.md → Monid backend), never base64.
  • Network accessline 829
    asset://<id> reference": frames go through the free `sfs` file system   (put → `curl -T` → cat → signed URL; pipeline.md → Monid backend), never base64.   Quirk: `/put` echoes back `home/<path>`, but `/cat` and `/ls` want the **original
  • Network accessline 830
    (put → `curl -T` → cat → signed URL; pipeline.md → Monid backend), never base64.

skills/lets-scroll/references/knockout.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 25
    [Credential-related source omitted]

skills/lets-scroll/references/pipeline.md

  • Network accessline 45
    url=$(jq -r '.[0].result_url // empty' "$WORK/still_$1.json")   [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/still_$1.png" && echo "still $1 ok" || echo "still $1 FAIL"
  • Network accessline 46
    [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/still_$1.png" && echo "still $1 ok" || echo "still $1 FAIL"
  • Network accessline 81
    --wait --wait-timeout 20m --json > "$WORK/dive_$1.json" 2> "$WORK/dive_$1.err"   url=$(jq -r '.[0].result_url // empty' "$WORK/dive_$1.json")   [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/dive_$1.mp4" && echo "dive $1 ok" || echo "dive $1 
  • Network accessline 82
    url=$(jq -r '.[0].result_url // empty' "$WORK/dive_$1.json")   [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/dive_$1.mp4" && echo "dive $1 ok" || echo "dive $1 FAIL" }
  • Network accessline 83
    [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/dive_$1.mp4" && echo "dive $1 ok" || echo "dive $1 FAIL"
  • Network accessline 114
    --wait --wait-timeout 20m --json > "$WORK/conn_$1.json" 2> "$WORK/conn_$1.err"   url=$(jq -r '.[0].result_url // empty' "$WORK/conn_$1.json")   [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/conn_$1.mp4" && echo "conn $1 ok" || echo "conn $1 
  • Network accessline 115
    url=$(jq -r '.[0].result_url // empty' "$WORK/conn_$1.json")   [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/conn_$1.mp4" && echo "conn $1 ok" || echo "conn $1 FAIL" }
  • Network accessline 116
    [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/conn_$1.mp4" && echo "conn $1 ok" || echo "conn $1 FAIL"
  • Network accessline 229
    curl -fsS -T "$jpg" "$up" > /dev/null
  • Network accessline 254
    monid_wait "$rid" "$WORK/dive_$1.json"   url=$(jq -r '.output.content.video_url // empty' "$WORK/dive_$1.json")   [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/dive_$1.mp4" \
  • Network accessline 255
    url=$(jq -r '.output.content.video_url // empty' "$WORK/dive_$1.json")   [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/dive_$1.mp4" \     && echo "dive $1 ok (\$$(jq -r '.cost.value' "$WORK/dive_$1.json"))" \
  • Network accessline 256
    [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/dive_$1.mp4" \
  • Network accessline 271
    monid_wait "$rid" "$WORK/conn_$1.json"   url=$(jq -r '.output.content.video_url // empty' "$WORK/conn_$1.json")   [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/conn_$1.mp4" \
  • Network accessline 272
    url=$(jq -r '.output.content.video_url // empty' "$WORK/conn_$1.json")   [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/conn_$1.mp4" \     && echo "conn $1 ok (\$$(jq -r '.cost.value' "$WORK/conn_$1.json"))" \
  • Network accessline 273
    [ -n "$url" ] && curl -fsSL "$url" -o "$WORK/conn_$1.mp4" \

skills/lets-scroll/references/scrub-engine.js

  • Executable scriptline 1
    Executable file
  • Network accessline 204
    const url = (isMobile() && s.clipM) ? s.clipM : s.clip;     fetch(url).then(r => r.ok ? r.blob() : Promise.reject(new Error('404')))
  • Network accessline 205
    fetch(url).then(r => r.ok ? r.blob() : Promise.reject(new Error('404')))

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Signal confidence: 27 facts

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md skills/lets-scroll/SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/lets-scroll/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/lets-scroll/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/lets-scroll/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/lets-scroll/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/lets-scroll/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.