npx skills add smithery/voxel51 --skill fiftyone-voodo-design
voxel51/fiftyone-skills
fiftyone-voodo-design
Build FiftyOne UIs using VOODO (@voxel51/voodo), the official React component library. Use when building plugin panels, creating interactive UIs, or styling FiftyOne applications. Fetches complete component API reference dynamically.
Installation
npx skills add voxel51/fiftyone-skills --skill fiftyone-voodo-design
Similar popular skills
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Also in this package
Other skills from voxel51/fiftyone-skills · top by installs.
npx skills add voxel51/fiftyone-skills
More details
Agent compatibility
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Also listed on
Alternate registries and mirrors of this skill.
Repository health
main
Package contents
Files included with this skill beyond the listing page.
-
skill md
SKILL.md4,182 B -
docs
SUMMARY.md262 B
History
- First seen on skills.sh
- First recorded snapshot · 10 installs
SKILL.md
VOODO Design System for FiftyOne
VOODO (@voxel51/voodo) is the official React component library for FiftyOne applications. Source: https://github.com/voxel51/design-system
Key Directive
ALWAYS fetch the LLM reference BEFORE writing any UI code:
WebFetch(
url="https://voodo.dev.fiftyone.ai/voodo-llm-reference.md",
prompt="Read the complete VOODO component API, design tokens, and composition patterns"
)
This gives you:
- All design token enums with exact member values (Size, Spacing, Variant, Orientation, etc.)
- Every component's props, types, defaults, and usage examples
- Composition patterns for common layouts (forms, cards, lists, selects)
- Anti-patterns to avoid (e.g. raw Tailwind vs. component props)
Workflow
1. Fetch the reference
WebFetch(
url="https://voodo.dev.fiftyone.ai/voodo-llm-reference.md",
prompt="What VOODO components and tokens are available for building [describe UI]?"
)
2. Use components and design tokens from the reference
Always import from @voxel51/voodo. Always use enum values — never pass raw strings.
import { Button, Input, Stack, Text, FormField } from "@voxel51/voodo";
import { Orientation, Size, Spacing, Variant, TextColor } from "@voxel51/voodo";
3. Follow composition patterns
The reference includes patterns for:
- Forms: Wrap controls in
<FormField>, group with<FormFieldGroup> - Layout: Use
<Stack>withorientation,spacing,align,justifyprops — not Tailwind flex classes - Cards: Use
<Card>/<RichCard>for contained content - Lists: Use
Descriptor<T>[]pattern with<RichList>or<RichButtonGroup> - Feedback: Use
<Toast>,<Tooltip>,<EmptyState>
Installation
{
"dependencies": {
"@voxel51/voodo": "latest"
}
}
Import the theme CSS in your app entry point:
import "@voxel51/voodo/theme.css";
FiftyOne Patterns
- Dark theme: FiftyOne App uses dark mode by default
- Semantic variants: Use
Variant.Success,Variant.Danger,Variant.Secondaryfor actions - Design tokens: Always use enum values (
Spacing.Md,Size.Sm) — never arbitrary CSS values - Layout: Use
<Stack>withalignandjustifyprops instead of Tailwinditems-/justify-classes
Integration with FiftyOne SDK
import { useRecoilValue } from "recoil";
import * as fos from "@fiftyone/state"; // Standard FiftyOne alias
import { Button, Text, Stack, FormField, Input } from "@voxel51/voodo";
import { Orientation, Spacing, Size, Variant, TextColor } from "@voxel51/voodo";
const MyPanel: React.FC = () => {
const dataset = useRecoilValue(fos.dataset);
return (
<Stack orientation={Orientation.Column} spacing={Spacing.Md}>
<Text color={TextColor.Secondary}>{dataset?.name}</Text>
<FormField
label="Filter"
control={<Input size={Size.Sm} placeholder="Search..." />}
/>
<Button variant={Variant.Primary} size={Size.Sm}>
Process
</Button>
</Stack>
);
};
Resources
| Resource | URL |
|---|---|
| LLM Reference (fetch first) | https://voodo.dev.fiftyone.ai/voodo-llm-reference.md |
| Source repo | https://github.com/voxel51/design-system |
| Interactive Storybook | https://voodo.dev.fiftyone.ai/ |
| npm package | @voxel51/voodo |
Related: Use fiftyone-develop-plugin skill for full plugin setup.
Troubleshooting
| Problem | Solution |
|---|---|
| Component not found | Fetch the LLM reference to verify current component name |
| Wrong prop value | Use enum members (e.g. Size.Md), not strings (e.g. "md") |
| Layout not working | Use <Stack> with orientation, spacing, align, justify props |
| Styles not applying | Ensure @voxel51/voodo/theme.css is imported; test in dark mode |