Expert in 2000s-era music visualization (Milkdrop, AVS, Geiss) and modern WebGL implementations. Specializes in Butterchurn integration, Web Audio API AnalyserNode FFT data, GLSL shaders for audio-reactive visuals, and psychedelic generative art. Activate on "Milkdrop", "music visualization", "WebGL visualizer", "Butterchurn", "audio reactive", "FFT visualization", "spectrum analyzer". NOT for simple bar charts/waveforms (use basic canvas), video editing, or non-audio visuals.
npx skills add https://github.com/curiositech/some_claude_skills --skill 2000s-visualization-expert
Expert in recreating the legendary 2000s music visualization era - Milkdrop, AVS, Geiss - using modern WebGL and Web Audio APIs.
✅ Use for:
❌ NOT for:
| Era | Key Software | Innovation |
|-----|--------------|------------|
| 1998-2000 | Geiss | Simple plasma effects, DirectX |
| 2001-2007 | Milkdrop 1 & 2 | Per-pixel equations, preset system |
| 2007-2015 | Decline | Streaming services rise |
| 2018-Present | Butterchurn | WebGL renaissance |
Milkdrop's magic: Layering simple effects - blur, zoom, rotation, color shift - with audio-reactive parameters.
→ See references/butterchurn-guide.md for full history and integration.
butterchurn, butterchurn-presetsimport butterchurn from 'butterchurn';
const visualizer = butterchurn.createVisualizer(audioContext, canvas, {
width: window.innerWidth,
height: window.innerHeight,
pixelRatio: window.devicePixelRatio || 1,
});
visualizer.connectAudio(audioNode);
visualizer.loadPreset(preset, 2.0); // 2s blend
const analyser = audioContext.createAnalyser();
analyser.fftSize = 2048;
analyser.smoothingTimeConstant = 0.8;
const frequencyData = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(frequencyData);
Critical: FFT bins are linear but hearing is logarithmic! Use logarithmic mapping.
→ See references/web-audio-fft.md for frequency band extraction.
Pass audio data as 1D texture, use uniforms for bass/mid/treble:
uniform float u_bass;
float glow = smoothstep(0.5 - u_bass * 0.3, 0.0, dist);
→ See references/glsl-shaders.md for complete patterns.
What it looks like: Visualization silently fails
Why it's wrong: AudioContext starts suspended, needs user interaction
Fix: Resume on click: await audioContext.resume()
What it looks like: Bass dominates, treble invisible
Why it's wrong: FFT bins are linear; first 100 bins might be 0-2kHz
Fix: Use logarithmic bin mapping (code in references)
What it looks like: Jittery, seizure-inducing visuals
Why it's wrong: Raw FFT data is noisy frame-to-frame
Fix: analyserNode.smoothingTimeConstant = 0.7
What it looks like: Memory leaks, multiple render loops
Fix: Store animation ID, call cancelAnimationFrame on unmount
What it looks like: Blurry on retina, wrong aspect ratio
Fix: Multiply by devicePixelRatio, handle resize events
What it looks like: Choppy audio, dropped frames
Why it's wrong: Heavy shader compilation on UI thread
Fix: Compile shaders during loading, not during playback
Psychedelic/Trippy:
Flexi, martin + geiss - dedicated to the sherwin maxawowRovastar - FractopiaSmooth/Chill:
Flexi - predator-prey-spiralsGeiss - Cosmic Strings 2High Energy:
Flexi + Martin - disconnectedshifter - tumbling cubestextureRatio: 0.5will-change: transform on canvas→ references/butterchurn-guide.md - Complete Butterchurn integration
→ references/web-audio-fft.md - FFT extraction and frequency analysis
→ references/glsl-shaders.md - Audio-reactive shader patterns
This skill covers: Butterchurn/Milkdrop | Web Audio FFT | GLSL shaders | Full-screen visualization | Audio-reactive art
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Improves the quality of images, especially screenshots, by enhancing resolution, sharpness, and clarity. Perfect for preparing images for presentations, documentation, or social media posts.
Downloads videos from YouTube and other platforms for offline viewing, editing, or archival. Handles various formats and quality options.
Lightweight WSI tile extraction and preprocessing. Use for basic slide processing tissue detection, tile extraction, stain normalization for H&E images. Best for simple pipelines, dataset preparation, quick tile-based analysis. For advanced spatial proteomics, multiplexed imaging, or deep learning pipelines use pathml.
Microscopy data management platform. Access images via Python, retrieve datasets, analyze pixels, manage ROIs/annotations, batch processing, for high-content screening and microscopy workflows.
Python library for working with DICOM (Digital Imaging and Communications in Medicine) files. Use this skill when reading, writing, or modifying medical imaging data in DICOM format, extracting pixel data from medical images (CT, MRI, X-ray, ultrasound), anonymizing DICOM files, working with DICOM metadata and tags, converting DICOM images to other formats, handling compressed DICOM data, or processing medical imaging datasets. Applies to tasks involving medical image analysis, PACS systems, radiology workflows, and healthcare imaging applications.
This skill should be used when working with pre-trained transformer models for natural language processing, computer vision, audio, or multimodal tasks. Use for text generation, classification, question answering, translation, summarization, image classification, object detection, speech recognition, and fine-tuning models on custom datasets.
Take curiositech/2000s-visualization-expert from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.