Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/ne11nn/cantos-plugin/scroll-videonpx skills add ne11nn/cantos-plugin --skill scroll-videogit clone --depth 1 https://github.com/ne11nn/cantos-pluginWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ne11nn/cantos-plugin/scroll-video)<a href="https://agentmods.dev/skills/ne11nn/cantos-plugin/scroll-video"><img src="https://agentmods.dev/badge/skills/ne11nn/cantos-plugin/scroll-video.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00040 | $0.03836 |
| Opus 5 | $0.00020 | $0.01918 |
| Sonnet 5 | $0.00008 | $0.00767 |
| Haiku 4.5 | $0.00004 | $0.00384 |
Grade A, and why
scroll-video scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 478 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Scroll-Driven Video — Foundation
The core mechanism: extract a video into still frames, preload them into memory, and paint the correct frame onto a canvas as the user scrolls. Lenis smooths the scroll; GSAP ScrollTrigger drives the frame index. A circle-wipe reveals the canvas as the hero section scrolls away. Text sections float over the canvas, appearing and disappearing at defined scroll positions with staggered entrance animations.
Step 1: Analyze the Video
ffprobe -v error -select_streams v:0 \
-show_entries stream=width,height,duration,r_frame_rate,nb_frames \
-of csv=p=0 "<VIDEO_PATH>"
Determine resolution, duration, frame rate, total frames. Then decide:
- Target frame count: 150–300 for a smooth scroll experience
- Short (<10s): extract at original fps, cap at ~300
- Medium (10–30s): 10–15fps
- Long (30s+): 5–10fps
- Output resolution: match aspect ratio, cap width at 1920px
Step 2: Extract Frames
mkdir -p frames
ffmpeg -i "<VIDEO_PATH>" \
-vf "fps=<CALCULATED_FPS>,scale=<WIDTH>:-1" \
-c:v libwebp -quality 80 \
"frames/frame_%04d.webp"
Count the output: ls frames/ | wc -l
Step 3: Project Scaffold
project-root/
index.html
css/style.css
js/app.js
frames/frame_0001.webp ...
No bundler. Vanilla HTML/CSS/JS + CDN libraries only.
Step 4: HTML Structure
Minimal required structure — in this order:
<!-- 1. Hero: .hero-standalone (100vh, solid bg) -->
<!-- 2. Canvas: .canvas-wrap > canvas#canvas (fixed, full viewport) -->
<!-- 3. Scroll container: #scroll-container (800vh+) containing text sections -->
<section class="hero-standalone">
<h1 class="hero-heading">Your Headline</h1>
</section>
<div class="canvas-wrap">
<canvas id="canvas"></canvas>
</div>
<div id="scroll-container">
<!-- Text section: appears at 20% scroll, leaves at 38% -->
<!-- data-enter / data-leave are percentages of total scroll progress -->
<!-- data-animation picks the entrance type (see 6e) -->
<section class="scroll-section"
data-enter="20" data-leave="38" data-animation="slide-left">
<div class="section-inner">
<span class="section-label">Label / category</span>
<h2 class="section-heading">Your headline here</h2>
<p class="section-body">Supporting text here.</p>
</div>
</section>
<!-- Add more sections — stagger their enter/leave ranges so they don't overlap -->
<section class="scroll-section"
data-enter="42" data-leave="60" data-animation="fade-up">
<div class="section-inner">
<span class="section-label">Another label</span>
<h2 class="section-heading">Second point</h2>
<p class="section-body">More detail here.</p>
</div>
</section>
<!-- Final section: data-persist keeps it visible at end of scroll -->
<section class="scroll-section"
data-enter="75" data-leave="95" data-animation="scale-up" data-persist="true">
<div class="section-inner">
<h2 class="section-heading">Closing statement or CTA</h2>
</div>
</section>
</div>
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 478 lines · 40 tokens per session scan A 61e9a51ccacf
scroll-video is a skill published in the GitHub repository ne11nn/cantos-plugin (1 stars, last pushed yesterday), licensed MIT. It adds 40 tokens to every session and 3,836 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
orch
AI agent orchestrator — manage teams of AI agents that work on your codebase in parallel. Use when the user wants to: run multiple agents, coordinate AI work, deploy agent teams, manage tasks/goals/agents, check orchestrator status, or mentions 'orch', 'orchestry', 'agents team', 'agent orchestration'.
pm
Project manager for GitHub issues: brainstorm design approaches, create structured issues optimized for LLM agent teams, triage and recommend what to work on next, audit and clean up stale issues, or deep-validate a single issue against the codebase. Triggers: create issue, plan work, new task, project manager, write…
security
Security scan: dependency audits, SAST analysis, and secret detection. Detects project type, runs available security tools, classifies findings by severity, and creates a structured GitHub issue.
skill-creation
Use when creating a new skill, improving an existing skill, or deciding what a skill should contain and how it should be structured.
quest
Use for any non-trivial task. Orchestrates the Research-Plan-Implement cycle with compaction between phases, integrating council, lembas, gather-lore, and warden. Enforces discipline and phase gates.
pb-injury
Log and manage an injury — track the episode, stage the return-to-run, and guardrail the plan.