example-solid
Patterns for using Helios with SolidJS. Use when building compositions in a SolidJS environment, utilizing signals for fine-grained reactivity.
Best use case
example-solid is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Patterns for using Helios with SolidJS. Use when building compositions in a SolidJS environment, utilizing signals for fine-grained reactivity.
Teams using example-solid should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/solid/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How example-solid Compares
| Feature / Agent | example-solid | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Patterns for using Helios with SolidJS. Use when building compositions in a SolidJS environment, utilizing signals for fine-grained reactivity.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# SolidJS Composition Patterns
Integrate Helios into SolidJS components using Signals to manage frame state reactivity with high performance.
## Quick Start
### 1. Create Helios Signal
Wrap the Helios instance in a SolidJS signal to make state reactive.
```javascript
// lib/createHeliosSignal.js
import { createSignal, onCleanup } from 'solid-js';
export function createHeliosSignal(helios) {
const [frame, setFrame] = createSignal(helios.getState());
const unsubscribe = helios.subscribe((state) => {
setFrame(state);
});
onCleanup(() => {
unsubscribe();
});
return frame;
}
```
### 2. Create Composition Component
```jsx
// App.jsx
import { createEffect } from 'solid-js';
import { Helios } from '@helios-project/core';
import { createHeliosSignal } from './lib/createHeliosSignal';
// Initialize Helios (outside component or in a context)
const helios = new Helios({
duration: 10,
fps: 30,
width: 1920,
height: 1080
});
// Bind for external control
helios.bindToDocumentTimeline();
function App() {
let canvasRef;
// Create reactive accessor
const state = createHeliosSignal(helios);
createEffect(() => {
const canvas = canvasRef;
if (!canvas) return;
const ctx = canvas.getContext('2d');
const { currentFrame, width, height } = state();
// Clear
ctx.clearRect(0, 0, width, height);
// Draw
ctx.fillStyle = '#446b9e';
const x = (currentFrame / (10 * 30)) * width;
ctx.fillRect(x, height / 2 - 50, 100, 100);
});
return (
<canvas
ref={canvasRef}
width={1920}
height={1080}
style={{ width: '100%', height: 'auto' }}
/>
);
}
export default App;
```
### 3. Three.js Integration
Integrate `three` with Helios by synchronizing the render loop via `createEffect`.
```jsx
// App.jsx
import { createEffect, onCleanup, onMount } from "solid-js";
import * as THREE from "three";
import { Helios } from "@helios-project/core";
import { createHeliosSignal } from "./lib/createHeliosSignal";
// Singleton initialization pattern
if (!window.helios) {
window.helios = new Helios({
fps: 30,
duration: 10,
width: 1920,
height: 1080
});
}
export default function App() {
let canvasRef;
const state = createHeliosSignal(window.helios);
onMount(() => {
// 1. Setup Three.js Scene
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer({ canvas: canvasRef, antialias: true });
// 2. Create Objects
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 5;
// 3. Sync Render Loop
createEffect(() => {
const s = state();
const t = s.currentTime;
// Update animation state based on time
cube.rotation.x = t * 0.5;
cube.rotation.y = t * 0.5;
renderer.render(scene, camera);
});
// 4. Cleanup
onCleanup(() => {
renderer.dispose();
geometry.dispose();
material.dispose();
});
});
return <canvas ref={canvasRef} style={{ width: '100%', height: '100%' }} />;
}
```
## Key Concepts
- **Fine-Grained Reactivity:** SolidJS signals update only what changes. However, since Helios updates on every frame (30-60 times/sec), wrapping the entire state in a signal is the standard approach for canvas rendering.
- **`createEffect`:** Use `createEffect` to trigger imperative canvas drawing logic whenever the Helios signal updates.
- **Cleanup:** Always use `onCleanup` to remove the Helios subscription when the component unmounts.
## Source Files
- Helper: `examples/solid-animation-helpers/src/lib/createHeliosSignal.js`
- Example: `examples/solid-canvas-animation/`
- Example: `examples/solid-threejs-canvas-animation/`Related Skills
example-vue
Patterns for using Helios with Vue. Use when building compositions in a Vue environment.
example-vanilla
Patterns for using Helios with Vanilla JavaScript/TypeScript. Use when building compositions without a framework, or for simple DOM/Canvas manipulations.
example-threejs
Patterns for using Helios with Three.js and React Three Fiber. Use when creating 3D animations or integrating WebGL scenes.
example-tailwind-animation
Learn how to use Tailwind CSS with Helios. Use for styling compositions and animating with utility classes.
example-svelte
Patterns for using Helios with Svelte. Use when building compositions in a Svelte environment, utilizing Svelte stores for reactive frame updates.
example-signals-animation
Learn how to use Helios Signals for high-performance, fine-grained reactivity. Use for complex dependency graphs or when optimizing performance.
example-react
Patterns for using Helios with React. Use when building compositions in a React environment.
example-podcast-visualizer
Workflow for creating a podcast visualizer with multi-track audio mixing and DOM-based synchronization. Use when building audio-reactive compositions.
example-pixi
PixiJS integration patterns for Helios. Use when creating high-performance WebGL 2D animations with PixiJS.
example-p5-animation
Learn how to use P5.js with Helios. Use when creating creative coding sketches or generative art.
example-lottie
Lottie integration patterns for Helios. Use when rendering Lottie (Bodymovin) JSON animations synchronously with Helios.
example-gsap
Patterns for using Helios with GSAP (GreenSock). Use when integrating GSAP timelines with the Helios timeline for precise scrubbing and rendering.