Find your next open-source project

Search by name, purpose, or keyword — or paste a GitHub repository URL

harshit403-pixel/reveal-cursors

Developer Tools

A Claude skill and standalone script that add a page-rebuilding cursor swarm effect to websites.

110
6
JavaScript
2 days old

Overview

Swarm Cursors packages a visual effect inspired by Joel Califa's Swarm: the page wipes to a blank canvas and then rebuilds itself with animated multiplayer cursors drawing boxes, typing text, drawing pen lines and playing synthesized sounds. This repository turns that effect into a Claude skill plus a standalone installer and script, so it can be added to plain HTML pages, common framework sites and hosted builders, either per page or site-wide.

The effect is an overlay: the real DOM stays untouched, so forms, analytics and SEO content keep working underneath. Trigger it with a floating button, autoplay, a hotkey, a ?swarm URL parameter, a #swarm link or any element marked data-swarm-trigger. The runtime is a single dependency-free file (157 KB, about 44 KB gzipped), loaded with defer, and it makes no server requests.

Install and use

With Claude, enable code execution in Claude.ai, download swarm-cursors.zip from the releases page and upload it as a skill, or copy the swarm-cursors folder into ~/.claude/skills/ (or .claude/skills/) for Claude Code. Then ask for changes such as adding the effect to the homepage only or removing it.

Without Claude, run the installer against an HTML file:

# one page, floating button
python swarm-cursors/scripts/install.py site/index.html

# auto-play 1.5s after load, once per browser session
python swarm-cursors/scripts/install.py site/index.html --trigger auto --delay 1500 --once session

# undo, restoring the file byte-for-byte
python swarm-cursors/scripts/install.py site/index.html --remove

Or add the script tag manually:

<script src="swarm-cursors.js" defer data-trigger="button" data-position="bottom-right"></script>

Configuration uses data-* attributes for trigger type, label, position, hotkey, delay, once-per-session behavior, allowed paths and reduced-motion handling. The page API exposes SwarmCursors.start(), .stop(true) and .isRunning(), plus swarm:start / swarm:exit events. The example page can be opened locally to try the button.

Constraints

  • WebGL canvases, playing video and cross-origin iframes (maps, YouTube) render as gray placeholders; a page script cannot screenshot them.
  • Animations freeze at click time, and pages above roughly 4,000 layers or 40,000 px tall are capped.
  • A CSP whose style-src lacks 'unsafe-inline' blocks the effect; the script detects this, hides the button and logs a warning.
  • It targets desktop pointers and audio unlocks only after the visitor's first click; M mutes.
  • The Next.js, WordPress, Shopify and hosted-builder recipes were not tested on those real platforms; the README recommends running python swarm-cursors/scripts/verify.py <url> against your site.
  • Licensing is pending: the project adapts parts of Swarm, which has no license of its own, so no license is granted until the original author's permission is recorded.

HotRepo's take

The repository appeared on the new-project radar for JavaScript on 2026-11-06, going from 101 to 110 stars within the roughly two-hour observed window. That is a short sampling interval, so it supports only the fact of early interest, not a trend. What stands out is the packaging: a Claude skill, an idempotent installer with byte-exact removal and a documented list of what was tested in headless Chromium. The licensing note is the main open item for anyone considering reuse.

Written by AI from the project's README, updated . The project's own docs are the source of truth.