Extensions
Make Recast yours. Open packs, no lock-in.
Community packs install straight into the editor's pickers. Each one is a manifest and a few static files, hash-checked. Nothing runs, nothing asks for permission.
What a pack adds
It shows up where you already work.
A pack feeds the pickers you already use. Nothing new to learn.
Cursors
New pointer styles with rest and click states, plus precise hotspots, right in the cursor picker.
Backgrounds
Wallpapers that drop straight into the canvas background picker.
Gradients
Curated gradient sets, rendered live in both the preview and the export.
Colors
Solid color swatches for the canvas, ready to click.
Caption themes
Ready-made caption looks (font, color, outline, backing), applied in one click to overlay and burned-in captions.
Easing presets
Named motion curves for zoom and cursor animation.
Smoothing presets
Cursor smoothing recipes, strength plus click snap, that you can share as packs.
How it works
Three clicks, not a config file.
Step 1
Browse or paste
Open Extensions, browse the registry, or paste a pack URL to install directly.
Step 2
Install in a click
Downloads, every asset gets hash-checked, installs locally. No account, nothing phones home.
Step 3
Use it everywhere
Cursors, backgrounds, gradients, presets show up in the pickers you already use.
Safe by design
Installable, without the install-anything risk.
No code runs. A pack is just assets, so plugin supply-chain attacks don't apply.
No code runs
A pack is a manifest plus static files. Nothing executes.
Hash-pinned over HTTPS
Every asset is checked against its SHA-256 on download. Tampered files fail the install.
Zero permissions
Asset packs can't request capabilities. A pack never reaches further than the app already can.
Open and checked
The registry is public on GitHub, CI checks every submission for schema, hashes, and safe filenames.
Build & share
Make a pack in an afternoon.
Drop your SVGs or images in a folder, write a manifest, open a PR. CI checks the rest.
- Add your assets Cursors as SVG, backgrounds as PNG, JPG or WebP. Bare files, sitting in your pack's assets folder.
- Write the manifest A few lines of JSON that say what each file contributes. No URLs or hashes to write by hand.
- Verify and open a PR Run pnpm verify:extensions, push, and the Verify Extensions workflow takes it from there.
extension.json
{
"id": "my-cursors",
"name": "My Cursors",
"version": "1.0.0",
"kind": "asset-pack",
"permissions": [],
"contributes": {
"cursors": [
{ "id": "ring", "label": "Ring",
"rest": "ring",
"hotspot": { "x": 32, "y": 32 } }
]
},
"assets": [
{ "id": "ring", "file": "assets/ring.svg" }
]
}