Roids is a cross-agent UI variant picker workflow for design changes that need visual review before they are finalized.
The core experience is simple:
tryroids.com.docs/picker-contract.md: DOM contract, script rules, cleanup checklistdocs/variant-workflow.md: end-to-end lifecycle from prompt to finalizationskills/shared/ui-variant-core.md: shared instructions all agent adapters should follow.cursor/skills/ui-variant-picker/SKILL.md: Cursor-native skilladapters/claude-code/ui-variant-picker.md: Claude Code adapter promptpublic/ui-picker.js: vendored Roids picker runtime for hosts that publish public/ at the site rootui-picker.js: root-level copy for GitHub Pages so https://tryroids.com/ui-picker.js works without rewritesCNAME: custom-domain file for GitHub Pagesexamples/static-preview/index.html: standalone static preview exampleexamples/react-preview/TestimonialVariants.tsx: component-based exampleCopy the skill directory into a repo that uses Cursor:
.cursor/skills/ui-variant-picker/SKILL.mdskills/shared/ui-variant-core.mddocs/picker-contract.mddocs/variant-workflow.mdThen invoke the skill with a request like:
/ui add a big testimonial under the logos after the hero. come up with a few ideas that i can pick from.
Use adapters/claude-code/ui-variant-picker.md as your Claude project guidance or reusable prompt template, and keep the shared docs nearby so the same contract is available.
data-roids-pick region with data-roids-option siblings.<script src="https://tryroids.com/ui-picker.js"></script>.A or B.This repo now includes the vendored runtime in two deployment-friendly locations:
public/ui-picker.js for frameworks and hosts that map public/ to the site rootui-picker.js at the repo root for GitHub PagesIf tryroids.com is deployed from a framework like Next.js or any host that serves the public directory at the site root, public/ui-picker.js will be published as:
https://tryroids.com/ui-picker.js
If tryroids.com is deployed with GitHub Pages, the root-level ui-picker.js and CNAME files are the important ones.
That lets the rest of the Roids workflow keep using the same script URL without depending on any third-party host at runtime.
Use live injection when the target surface is mostly presentational and safe to render as temporary sibling variants.
Use a standalone preview file when the host component tree is fragile, stateful, or likely to suffer hydration issues.
Open examples/static-preview/index.html in a browser once the vendored runtime has been deployed to tryroids.com. This example demonstrates a full page with a hero, logos, and a testimonial experiment directly below them.
If the hosted script is blocked by CSP, networking, or local development constraints, the page still renders but the floating picker UI will not appear until the runtime is reachable or vendored locally.
Import RoidsPickerScript and TestimonialVariants from examples/react-preview/TestimonialVariants.tsx into a React page or sandbox. This demonstrates the same contract inside a component tree and shows how to inject the script exactly once from React.
For the quickest demo path, import RoidsTestimonialPreview, which mounts both the script and the variant region together.
The task is not finished until:
data-roids-* attributes are gone unless intentionally retainedThis repository focuses on the skill-only v1. A later version can add: