New Experiment
Tresjs/tres
Create a new experiment in TresJS Lab with all necessary files
Build a burning-paper ring loader whose GLSL flame is drawn by a Worker on an OffscreenCanvas started from the head, so a main thread blocked by the page build cannot freeze it, with a progress…
$ npx skills add MengTo/Skills --skill fire-paper-loader -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install MengTo/Skills fire-paper-loader --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/MengTo/Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agent-skills/web-design/fire-paper-loader .claude/skills/fire-paper-loader && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "fire-paper-loader" agent skill from https://github.com/MengTo/Skills/tree/main/agent-skills/web-design/fire-paper-loader into .claude/skills/fire-paper-loader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fire-paper-loader", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/MengTo/Skills/tree/main/agent-skills/web-design/fire-paper-loaderType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add MengTo/Skills --skill fire-paper-loader -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install MengTo/Skills fire-paper-loader --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MengTo/Skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/agent-skills/web-design/fire-paper-loader .agents/skills/fire-paper-loader && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "fire-paper-loader" agent skill from https://github.com/MengTo/Skills/tree/main/agent-skills/web-design/fire-paper-loader into .agents/skills/fire-paper-loader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fire-paper-loader", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add MengTo/Skills --skill fire-paper-loader -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install MengTo/Skills fire-paper-loader --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MengTo/Skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/agent-skills/web-design/fire-paper-loader .cursor/skills/fire-paper-loader && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "fire-paper-loader" agent skill from https://github.com/MengTo/Skills/tree/main/agent-skills/web-design/fire-paper-loader into .cursor/skills/fire-paper-loader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fire-paper-loader", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/MengTo/Skills.git --path agent-skills/web-design/fire-paper-loader--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add MengTo/Skills --skill fire-paper-loader -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install MengTo/Skills fire-paper-loader --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MengTo/Skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/agent-skills/web-design/fire-paper-loader .gemini/skills/fire-paper-loader && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "fire-paper-loader" agent skill from https://github.com/MengTo/Skills/tree/main/agent-skills/web-design/fire-paper-loader into .gemini/skills/fire-paper-loader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fire-paper-loader", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install MengTo/Skills fire-paper-loaderInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add MengTo/Skills --skill fire-paper-loader -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/MengTo/Skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/agent-skills/web-design/fire-paper-loader .github/skills/fire-paper-loader && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "fire-paper-loader" agent skill from https://github.com/MengTo/Skills/tree/main/agent-skills/web-design/fire-paper-loader into .github/skills/fire-paper-loader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fire-paper-loader", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add MengTo/Skills --skill fire-paper-loader -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install MengTo/Skills fire-paper-loader --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MengTo/Skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/agent-skills/web-design/fire-paper-loader .opencode/skills/fire-paper-loader && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "fire-paper-loader" agent skill from https://github.com/MengTo/Skills/tree/main/agent-skills/web-design/fire-paper-loader into .opencode/skills/fire-paper-loader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fire-paper-loader", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
fire-paper-loaderBuild a burning-paper ring loader whose GLSL flame is drawn by a Worker on an OffscreenCanvas started from the head, so a main thread blocked by the page build cannot freeze it, with a progress…
Fire Paper Loader is an agent skill from MengTo/Skills. Build a burning-paper ring loader whose GLSL flame is drawn by a Worker on an OffscreenCanvas started from the head, so a main thread blocked by the page build cannot freeze it, with a progress count, an even-paced run into the hand-off, and a clean fade to the page. Covers the ember thread and ember gradient, porous char, worker start-up, parallel shader compile with a waited 1-px warm-up draw, hand-off without a stall, reduced motion and hidden-tab behaviour. Use for a loading screen, preloader, page loader…
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files (for example `PROMPT.md` and `agents/openai.yaml`).
It sits in Game Development, covering Shaders and 3D graphics and WebGL. It works with Three.js and JavaScript. The repository describes itself as: Agent skills for designers and builders using Codex, Claude, Cursor, and other AI coding agents. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 83a47fe. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Fire Paper Loader loads about 2.7k tokens when it runs. Until then it costs about 179 tokens; SKILL.md has 1,697 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from MengTo/Skills at commit 83a47fe, republished under its MIT licence (© MengTo). 1,697 words, ~2,697 tokens.
.claude/skills/fire-paper-loader/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.A ring of burning paper opens on black while the page builds. The mechanism: the fire is drawn by a Worker on an OffscreenCanvas that is started from <head>, so the ring keeps burning while the main thread is blocked for hundreds of milliseconds. The flame look is staging; a loader that stops dead for 450 ms reads as a hang whatever it looks like.
Nearest skills: web-design-performance covers general page speed; this one is specifically a loader that survives a blocked thread. For the burning-paper look on scroll transitions (not a loader), the flame GLSL is the same kbFlame but the page draws it. For a spinner or AI-status orb, use thinking-orbs.
Stack, verified in the source: Vanilla JavaScript, raw WebGL 1 (GLSL ES 1.00, no Three.js in the loader), Worker plus OffscreenCanvas, CSS for the label and fade.
Symptom: the loader appears 1-2 s late, or the worker never gets a GL context, or the fire stands still while three.js downloads. A worker can start and create its WebGL context only while the main thread is free, which is during stylesheet loading in <head> and not again until the page is parsed.
<script> in <head>: create a canvas, transferControlToOffscreen(), start a Worker from a Blob URL of a tiny boot script, post {kbPre, canvas} and call getContext('webgl', {antialias:false, alpha:false, depth:false, stencil:false}) in the worker there and then. Keep the canvas and worker on window.__kbPre.<script> (later in the body) sends its own textContent to the worker with {kbInit, src, canvas:null, t0, origin: performance.timeOrigin, reduced, view, target}, and the worker evals it. One source text runs on both threads: const IN_W = typeof document === 'undefined'. Two copies drift apart.Worker, no OffscreenCanvas, no transferControlToOffscreen, worker onerror, or a fail message means draw on the main thread with the same code after the same warm-up.performance.now() differs from the page's: send performance.timeOrigin, and add performance.timeOrigin - origin in the worker so every timestamp the page reads is its own.Symptom: the first visible frames are the slowest of the load (30-130 ms, once 408 ms on Metal).
linkProgram both, and only then ask for status. With KHR_parallel_shader_compile the driver compiles on its own threads; reading COMPILE_STATUS per shader defeats it. Skip the per-shader check when the extension exists.warmUp(): run a real frame's draws of both programs into a 1x1 viewport, then readPixels 1 pixel, waited. A first draw builds the GPU pipeline; make that happen before anything is seen.requestAnimationFrame. The page's LOAD.ready() resolves when the worker draws (typically 0.15-0.3 s, timed out at 1.2 s); the build awaits it so it does not hold the thread off for a second while the fire stands still.Symptom: the coal sits at one size for a second, then leaps 2.5x; or a ring that stalls is overtaken by a faster one and reads as two fires.
S = gain + ln(radius / first radius), not in the raw progress u. Equal steps in S look like equal growth at every size. The fade-in weighs 0.3 in S (at 1 it held the size back for 0.9 s).S with a critically damped spring (omega 5/s, speed clamped to 1.6/s, integrated in 1/120 s sub-steps) toward a goal that is the real progress but never behind a creep: creep = 0.38*(1 - exp(-t/800 ms)), and the goal cannot pass WAIT 0.290 while waiting, easing toward CEIL 0.335 with a 2.5 s time constant. A hard hold and progress arriving in lumps read as a ring parked, then shoved.VMIN 0.016/s (about 5 px a frame at 8 fps), maximum VMAX 0.05/s. The seen radius: a 4 px fleck at progress 0, 5.8 px by 0.15, then the burn's own radius.Symptom: the ring lurches into the page's intro, or the page stutters for 55-240 ms when the loader goes away.
done() runs a Hermite in S from the creep's speed to the intro's speed V_HAND 0.24 (u/s), over ds = clamp(2.8*du/vH, 0.30, 1.2) seconds, and reports when the rim reaches the hand-off progress HAND 0.36. The page resumes its own intro from exactly that progress and clock. A safety timer (doneDur + 400 ms, and 2.4 s on the page side) resolves anyway if rAF stalled.transition: opacity .40s linear .12s): a busy first frame cannot cut it short.close(): set alive = false and tell the worker to stop drawing. Two contexts drawing during the fade shared the GPU and ran the fade's frames at 35-67 ms. The last frame stays up and is faded with CSS opacity (120 ms, 250 ms under reduced motion), scaled by Web Animations keyframes along the intro's own curve so it stays on the page's rim while it goes.worker.terminate() while the page is on screen. It held the main thread 55-240 ms at any time. Post free (lose the GL context in the worker, on the worker's thread) and terminate only on visibilitychange hidden or pagehide. Never loseContext() on the main thread either: it waits on all queued GPU work, including the intro's first frames (100 ms).await LOAD.step(p) sets progress and, at most every 45 ms (90 ms when the worker draws, since only the count needs it), waits one requestAnimationFrame plus setTimeout 0. In a hidden tab it does not wait, because rAF does not run there.Symptoms the owner named, in order: "too static", "the black part should be alpha masked", then after a four-step posterised ramp, "too non-realistic, like before, the footer burn was better".
run), patches flicker at 7 Hz (flk), beads drift, a roll travels back through the zone. A still frame of it looks fine; the loader is judged in motion.(1.85, 1.02, 0.30), ember (1.10, 0.64, 0.17) at most, only where hot. Cream and khaki came from letting the hot end go white or dimming by darkening; a dim stretch goes down the ramp toward deep red instead.(0.0085, 0.0062, 0.0048) with fibre grain, and pores open in it with age down to the frame beneath. Never ring the pores with glowing edges: they joined into one drawn contour along the edge.0x2f6b9d1), only off the upper arc (20-160 degrees), short lives, heat orange to deep red and never white. Tone-mapped ACES, then sRGB in the shader (aces then srgb), so keep gl_FragColor alpha 1 and the canvas alpha:false.dtp max 1.5 s, 1/120 s spring sub-steps).role="progressbar" on the label with aria-valuenow kept in step; the canvases are aria-hidden. The count is text, so it is readable without the fire.prefers-reduced-motion: reduce: no time (tSec = 0), no cinders, no compositor scale; the ring still opens with progress as a still, grained rim and the fade is 250 ms. The frame is designed as a still, not hidden.step() stops waiting; done() resolves at once, and the worker is terminated only then.view (w, h, DPR) to the worker; the canvas resizes on the next frame.Mechanism (keep): head-started worker, one source on two threads, parallel compile plus waited 1-px warm-up, S-space pacing, Hermite hand-off, stop-then-CSS-fade, no early terminate. Staging (replace freely): the fire's palette and shape, the label copy, the page it hands to. The demo stands in for the page's intro: after done() the loader's ring runs on along the intro curve for 1.8 s until it leaves the frame, where the real page draws its own rim from the hand-off progress.
Source: extracted from the KINDLING loader of KIBORI 木彫, a scroll-linked Three.js woodcraft page whose 1.1 MB build held the main thread for up to 1.2 s.
© MengTo, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files in agent-skills/web-design/fire-paper-loader of MengTo/Skills.
Open the folder on GitHubat commit 83a47fe
Fire Paper Loader next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Fire Paper Loader this skillMengTo/Skills | 6.7k | — | ~2.7k | Automated safety check: Pass | MIT | |
| New ExperimentTresjs/tres | 3.8k | — | ~782 | Automated safety check: Pass | MIT | |
| Polycsslayoutit/polycss | 761 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Shader Extractcth9191/site-clone | 133 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Typegpusoftware-mansion-labs/skills | 291 | 2 repos | ~5.6k | Automated safety check: Pass | None | |
| Tslpmndrs/glyph | 395 | — | ~1.5k | Automated safety check: Pass | MIT |
Tresjs/tres
Create a new experiment in TresJS Lab with all necessary files
layoutit/polycss
Build PolyCSS scenes that render 3D meshes, primitive shapes, or custom polygons as DOM/CSS polygon elements.
cth9191/site-clone
Extract, reproduce, and locally replay a single WebGL / WebGPU / Canvas / shader / animated-3D visual effect from a web page — the GPU-rendered surface that DOM/CSS cloning is blind to.
software-mansion-labs/skills
TypeGPU is type-safe WebGPU in TypeScript. An agent skill from software-mansion-labs/skills.
pmndrs/glyph
Implement, migrate, review, debug, or verify Three.js Shading Language (TSL) materials, node graphs, WebGPU compute work, and post-processing.
Siege-Perilous/tableslayer
Architecture and gotchas for packages/stage — the Threlte/Three.js map renderer (layers, two-pass rendering, shaders, coordinate flips, performance tiers, disposal).
MengTo/Skills
Draws hand-authored SVG spot illustrations in a bold pop-geometric style for design and coding scenes.
MengTo/Skills
Draws a slim, long-limbed character acting out one coding or design moment as an outline-free flat SVG card, in a fixed measured palette with confetti and no ground line.
MengTo/Skills
Draws flat vector spot illustrations of lanky people doing design and coding things, with solid black as a main fill, for empty states, onboarding and error pages.
MengTo/Skills
Draws cozy animal scenes as hand-authored 480x360 SVG cards in a grainy, risograph-like gouache style on hot pink, for empty states, headers and marketing cards.
MengTo/Skills
Draws hand-authored SVG spot illustrations in a halftone line style for design and coding scenes.
MengTo/Skills
Draws hand-inked cartoon critters and living objects as SVG cards (480x360), each acting out a coding or design idea.
Works with
Categories
Build a burning-paper ring loader whose GLSL flame is drawn by a Worker on an OffscreenCanvas started from the head, so a main thread blocked by the page build cannot freeze it, with a progress…. Fire Paper Loader is an agent skill from MengTo/Skills. Build a burning-paper ring loader whose GLSL flame is drawn by a Worker on an OffscreenCanvas started from the head, so a main thread blocked by the page build cannot freeze it, with a progress count, an even-paced run into the hand-off, and a clean fade to the page.
Fire Paper Loader fits situations like: A loading screen; burning paper hole; A loader that must keep moving while heavy JavaScript; shader builds hold the main thread.
Run `npx skills add MengTo/Skills --skill fire-paper-loader -a claude-code`. Or copy the skill folder (agent-skills/web-design/fire-paper-loader in MengTo/Skills) into .claude/skills/fire-paper-loader in your project. Claude Code loads it when a task matches its description.
Run `npx skills add MengTo/Skills --skill fire-paper-loader -a codex`. Or copy the skill folder (agent-skills/web-design/fire-paper-loader in MengTo/Skills) into .agents/skills/fire-paper-loader in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add MengTo/Skills --skill fire-paper-loader -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fire-paper-loader, .gemini/skills/fire-paper-loader, .github/skills/fire-paper-loader and .opencode/skills/fire-paper-loader in your project.
SKILL.md names no scripts, command-line tools or credentials: Fire Paper Loader is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Fire Paper Loader is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Fire Paper Loader: New Experiment (Tresjs/tres, 3.8k stars), Polycss (layoutit/polycss, 761 stars), Shader Extract (cth9191/site-clone, 133 stars) and Typegpu (software-mansion-labs/skills, 291 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
MengTo (a GitHub user) maintains it in MengTo/Skills, which has 6,675 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 6, 2026.
Source: MengTo/Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.