Run ML model inference on FiftyOne datasets. Use when running models for detection, classification, segmentation, or embeddings. Discovers available models dynamically from the Zoo, plugin operators, or custom sources — never assumes a fixed model list.
Runs ML model inference on FiftyOne datasets for detection, classification, segmentation, or embedding tasks.
npx claudepluginhub voxel51/fiftyone-skillsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
ALWAYS follow these rules:
list_datasets()
If the dataset doesn't exist, use the fiftyone-dataset-import skill to load it first.
set_context(dataset_name="my-dataset")
The App must be running to execute inference operators:
launch_app(dataset_name="my-dataset")
Always confirm with the user:
predictions, detections, embeddings)close_app()
list_datasets()
If the dataset is not in the list:
set_context(dataset_name="my-dataset")
dataset_summary(name="my-dataset")
Review:
launch_app(dataset_name="my-dataset")
Ask the user about the task, model, or type of data they're using (detection, classification, segmentation, embeddings, or a specific model name); note users may give a 'tool name' (see Path B). Then determine the path:
Path A — Zoo model (most common)
ALWAYS first fetch the live model list — never assume what's available:
get_operator_schema(operator_uri="@voxel51/zoo/apply_zoo_model")
Pick the right model from the schema's model enum, then apply:
execute_operator(
operator_uri="@voxel51/zoo/apply_zoo_model",
params={
"tab": "BUILTIN",
"model": "<model-name-from-schema>",
"label_field": "predictions"
}
)
Path B — Plugin operator
If the user mentions a specific tool (e.g. CLIP similarity, SAM, a third-party model), check installed operators first:
list_operators(builtin_only=False)
Find the matching operator, inspect its schema, then execute it:
get_operator_schema(operator_uri="@org/plugin/operator")
execute_operator(operator_uri="@org/plugin/operator", params={...})
Path C — Remote / externally registered model
Check registered remote sources first:
import fiftyone.zoo as foz
foz.list_zoo_model_sources()
If the model comes from a registered remote source (GitHub repo registered via foz.register_zoo_model_source()):
execute_operator(
operator_uri="@voxel51/zoo/apply_zoo_model",
params={
"tab": "REMOTE",
"source": "<github-repo-url>",
"label_field": "predictions"
}
)
set_view(exists=["predictions"])
close_app()
ALWAYS fetch the live model list — never rely on a hardcoded list.
get_operator_schema(operator_uri="@voxel51/zoo/apply_zoo_model")
The schema returns the full set of available models at runtime. Use the model names from there directly.
For plugin-provided models or operators:
list_operators(builtin_only=False)
If a model fails with a dependency error, the response includes
install_command. Offer to run it for the user.
# Verify dataset exists
list_datasets()
# Set context and launch
set_context(dataset_name="my-dataset")
launch_app(dataset_name="my-dataset")
# Apply detection model
execute_operator(
operator_uri="@voxel51/zoo/apply_zoo_model",
params={
"tab": "BUILTIN",
"model": "faster-rcnn-resnet50-fpn-coco-torch",
"label_field": "predictions"
}
)
# View results
set_view(exists=["predictions"])
set_context(dataset_name="my-dataset")
launch_app(dataset_name="my-dataset")
execute_operator(
operator_uri="@voxel51/zoo/apply_zoo_model",
params={
"tab": "BUILTIN",
"model": "resnet50-imagenet-torch",
"label_field": "classification"
}
)
set_view(exists=["classification"])
set_context(dataset_name="my-dataset")
launch_app(dataset_name="my-dataset")
execute_operator(
operator_uri="@voxel51/zoo/apply_zoo_model",
params={
"tab": "BUILTIN",
"model": "clip-vit-base32-torch",
"label_field": "clip_embeddings"
}
)
If dataset has existing labels:
set_context(dataset_name="my-dataset")
dataset_summary(name="my-dataset") # Check existing fields
launch_app(dataset_name="my-dataset")
# Run inference with different field name
execute_operator(
operator_uri="@voxel51/zoo/apply_zoo_model",
params={
"tab": "BUILTIN",
"model": "yolov8m-coco-torch",
"label_field": "predictions" # Different from ground_truth
}
)
# View both fields to compare
set_view(exists=["ground_truth", "predictions"])
set_context(dataset_name="my-dataset")
launch_app(dataset_name="my-dataset")
# Run detection
execute_operator(
operator_uri="@voxel51/zoo/apply_zoo_model",
params={
"tab": "BUILTIN",
"model": "yolov8n-coco-torch",
"label_field": "detections"
}
)
# Run classification
execute_operator(
operator_uri="@voxel51/zoo/apply_zoo_model",
params={
"tab": "BUILTIN",
"model": "resnet50-imagenet-torch",
"label_field": "classification"
}
)
# Run embeddings
execute_operator(
operator_uri="@voxel51/zoo/apply_zoo_model",
params={
"tab": "BUILTIN",
"model": "clip-vit-base32-torch",
"label_field": "embeddings"
}
)
Error: "Dataset not found"
list_datasets() to see available datasetsError: "Model not found"
get_operator_schema(operator_uri="@voxel51/zoo/apply_zoo_model") to get the current live model list and pick the correct nameError: "Missing dependency" (e.g., ultralytics, segment-anything)
missing_package and install_commandpip install <package>Inference is slow
yolov8n instead of yolov8x)Out of memory
predictions, yolo_detections, clip_embeddingsdataset_summary() before running inferenceActivates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.