Automate 21risk tasks via Rube MCP (Composio). Always search tools first for current schemas.
The English summary is being prepared. Showing the original description.
Add a restrained particle atmosphere inside one section with configurable shapes, density, gravity, wind, sway, rotation, recycling or settling, pointer disturbance, visibility pausing, responsive limits, and reduced-motion fallbacks. Use for petals, leaves, snow, sparks, confetti, dots, paper, icons, or brand fragments that support a section's mood without obscuring content.
The English summary is being prepared. Showing the original description.
Run score Not tested
See how to installReview the instructions the agent will receive before you install.
Build particles as a bounded atmosphere layer, not as a page-wide screensaver. Keep the content primary and stop work when the effect cannot be seen.
Start with the least expensive renderer that preserves the desired shape language.
const particles = {
count: 54,
gravity: 7,
wind: -3,
sway: 16,
speed: [8, 18],
size: [4, 12],
opacity: [0.18, 0.62],
rotation: [-0.8, 0.8],
mode: "recycle",
pointerRadius: 110,
maxDpr: 2
};
Scale density by container area, then clamp it for mobile and low-power devices. Do not derive count from viewport width alone.
pointer-events: none; listen for pointer movement on the section.requestAnimationFrame loop for the whole layer.ResizeObserver; cap canvas backing resolution at min(devicePixelRatio, maxDpr).Support explicit end modes:
recycle: return particles above the section after exit.exit: remove particles after they leave the bounds.settle: resolve into a shallow visual pile with a strict height cap.static: render a deterministic still composition.Use IntersectionObserver to start only when the section is visible. Cancel animation frames when it exits or document.hidden becomes true. Resume from the current simulation state instead of spawning a second loop.
On teardown, disconnect observers, remove resize and pointer listeners, cancel the frame, and release renderer resources.
prefers-reduced-motion: reduce, render a sparse static arrangement or remove the layer.Test entry and exit pausing, background-tab recovery, fast resize, 390/768/1440 widths, device pixel ratio, pointer and touch input, reduced motion, section overflow, content focus, long text, route cleanup, and console errors. Confirm only one animation loop survives repeated mounts.
Use demo/index.html as the working reference and demo/PROMPT.md to recreate or remix it. Keep REFERENCES.md as the links-only implementation source list.
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Automate 21risk tasks via Rube MCP (Composio). Always search tools first for current schemas.
The English summary is being prepared. Showing the original description.
Automate 2chat tasks via Rube MCP (Composio). Always search tools first for current schemas.
The English summary is being prepared. Showing the original description.
Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.
The English summary is being prepared. Showing the original description.
Build integrated IS/BS/CF financial workbooks in Excel.
The English summary is being prepared. Showing the original description.
Entry point for 9Router — local/remote AI gateway with OpenAI-compatible REST for chat, image, TTS, embeddings, web search, web fetch. Use when the user mentions 9Router, NINEROUTER_URL, or wants AI without writing provider boilerplate. This skill covers setup + indexes capability skills; fetch the relevant capability SKILL.md from the URLs below when needed.
The English summary is being prepared. Showing the original description.
Chat / code generation via 9Router using OpenAI /v1/chat/completions or Anthropic /v1/messages format with streaming + auto-fallback combos. Use when the user wants to ask an LLM, generate code, summarize text, or run prompts through 9Router.
The English summary is being prepared. Showing the original description.