Skip to content
Back to skills

Worker Visualizer

ASecurity

A real-time data/particle/simulation visualizer whose heavy compute runs in a Web Worker (off the main thread), optionally sharing memory with the UI via SharedArrayBuffer, and renders to a canvas at 60fps. Produced as a single self-contained `index.html`. Use when the brief asks for a "web worker", "simulation", "particle system", "physics", "off-main-thread", "fractal", "real-time compute", or "audio/data visualizer". OpenDesign serves this in powered-preview mode so Workers and SharedArray...

  • 98,936 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 3, 2026
designreactawssecurity

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 3, 2026

npx -y skills add nexu-io/open-design --skill worker-visualizer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Worker Visualizer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Worker Visualizer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nexu-io-worker-visualizer/badge)](https://www.skillsdirectory.com/skills/nexu-io-worker-visualizer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: worker-visualizer
description: |
  A real-time data/particle/simulation visualizer whose heavy compute runs in
  a Web Worker (off the main thread), optionally sharing memory with the UI via
  SharedArrayBuffer, and renders to a canvas at 60fps. Produced as a single
  self-contained `index.html`. Use when the brief asks for a "web worker",
  "simulation", "particle system", "physics", "off-main-thread", "fractal",
  "real-time compute", or "audio/data visualizer". OpenDesign serves this in
  powered-preview mode so Workers and SharedArrayBuffer actually work.
triggers:
  - "web worker"
  - "worker"
  - "simulation"
  - "particle system"
  - "physics sim"
  - "fractal"
  - "off main thread"
  - "sharedarraybuffer"
  - "real-time compute"
  - "visualizer"
  - "多线程"
  - "粒子"
od:
  mode: prototype
  platform: web
  scenario: design
  preview:
    type: html
    entry: index.html
    reload: debounce-100
  design_system:
    requires: false
    sections: [color, typography]
  craft:
    requires: [animation-discipline, state-coverage]
---

# Worker Visualizer Skill

Produce a single self-contained `index.html` that moves heavy per-frame compute into a Web Worker and renders the result to a canvas, keeping the main thread at a smooth 60fps.

## Why this is a powered artifact

OpenDesign detects `new Worker(` / `SharedArrayBuffer` / `OffscreenCanvas` and renders this file in **powered preview** — a cross-origin-isolated iframe with `allow-same-origin`. That means external and blob Web Workers construct successfully, `SharedArrayBuffer` is defined (`crossOriginIsolated === true`), and `importScripts` works. In the old opaque sandbox all three failed; here they just work.

## Resource map

```
worker-visualizer/
├── SKILL.md      ← you're reading this
└── example.html  ← a working 12k-particle SharedArrayBuffer sim (READ FIRST)
```

## Workflow

### Step 0 — Read the reference
Read `example.html`. Note the split: the worker integrates positions each tick; the main thread only reads + draws. It feature-detects `crossOriginIsolated` and uses a `SharedArrayBuffer` for zero-copy when available, falling back to a transferable `postMessage` copy otherwise. Always ship that fallback so the artifact still animates if isolation is off.

### Step 1 — Choose the workload
Pick ONE compute-bound job worth offloading:
- **Particle / N-body field** (default): thousands of bodies with a cheap force law.
- **Fractal**: Mandelbrot/Julia escape-time into an `ImageData` buffer.
- **Cellular automata / reaction-diffusion**: grid updated in the worker.
- **Data/audio visualizer**: transform a stream into bars/rings each frame.

### Step 2 — Build `index.html`
- **One file, zero external requests.** Build the worker from a `Blob` + `URL.createObjectURL` (inline its source), or embed it as a `data:` URL.
- **Prefer SharedArrayBuffer** for large per-frame state: allocate on the main thread, pass the `SharedArrayBuffer` to the worker, and read the same `Float32Array`/`Uint8ClampedArray` view while drawing. Guard on `typeof SharedArrayBuffer !== 'undefined' && crossOriginIsolated`.
- **Fallback path**: if not isolated, `postMessage` a transferable `ArrayBuffer` each frame.
- Consider `OffscreenCanvas` + `canvas.transferControlToOffscreen()` to render inside the worker for the heaviest scenes.

### Step 3 — Overlay + brand
- HUD with the title and 2–3 live stat tiles (particle count, transport mode, fps). Map accent color to the active DESIGN.md when present; otherwise a dark ground with one vivid accent.

### Step 4 — Self-review (P0)
- [ ] Worker constructs with no SecurityError; sim runs.
- [ ] Main-thread render holds ~60fps under the full workload.
- [ ] `SharedArrayBuffer` path engages when `crossOriginIsolated` is true; `postMessage` fallback engages otherwise — verify BOTH branches degrade cleanly.
- [ ] No unbounded growth: velocities/positions stay stable over minutes.
- [ ] The "Transport" stat truthfully reports which path is live.

Files in this skill

  • SKILL.md3.9 KB
  • example.html5.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.