Writes Python code following FiftyOne's official conventions. Use when contributing to FiftyOne, developing plugins, or writing code that integrates with FiftyOne's codebase.
Writes Python code following FiftyOne's official conventions and import patterns.
npx claudepluginhub voxel51/fiftyone-skillsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
"""
Module description.
| Copyright 2017-2026, Voxel51, Inc.
| `voxel51.com <https://voxel51.com/>`_
|
"""
import logging
import os
import numpy as np
import eta.core.utils as etau
import fiftyone as fo
import fiftyone.core.fields as fof
import fiftyone.core.labels as fol
import fiftyone.core.utils as fou
logger = logging.getLogger(__name__)
def public_function(arg):
"""Public API function."""
return _helper(arg)
def _helper(arg):
"""Private helper."""
return arg
Four groups, alphabetized within each, separated by blank lines:
| Group | Example |
|---|---|
| 1. Standard library | import logging, import os |
| 2. Third-party | import numpy as np |
| 3. eta packages | import eta.core.utils as etau |
| 4. FiftyOne | import fiftyone.core.labels as fol |
| Module | Alias |
|---|---|
fiftyone | fo |
fiftyone.core.labels | fol |
fiftyone.core.fields | fof |
fiftyone.core.media | fom |
fiftyone.core.storage | fos |
fiftyone.core.utils | fou |
fiftyone.utils.image | foui |
fiftyone.utils.video | fouv |
def get_operator(operator_uri, enabled=True):
"""Gets the operator with the given URI.
Args:
operator_uri: the operator URI
enabled (True): whether to include only enabled operators (True) or
only disabled operators (False) or all operators ("all")
Returns:
an :class:`fiftyone.operators.Operator`
Raises:
ValueError: if the operator is not found
"""
Key patterns:
param (default): description:class:fiftyone.module.Class``Use fou.lazy_import() for optional/heavy dependencies:
o3d = fou.lazy_import("open3d", callback=lambda: fou.ensure_package("open3d"))
mask_utils = fou.lazy_import(
"pycocotools.mask", callback=lambda: fou.ensure_import("pycocotools")
)
Use hasattr() for optional attributes:
if hasattr(label, "confidence"):
if label.confidence is None or label.confidence < threshold:
label = label.__class__()
Use logger.warning() for non-fatal errors:
try:
result = process_data(data)
except Exception as e:
logger.warning("Failed to process data: %s", e)
Before writing new functions, search for existing implementations:
https://github.com/voxel51/fiftyonefiftyone/core/utils.py and fiftyone/utils/* first| Module | Functions |
|---|---|
fou | lazy_import(), ensure_package(), extract_kwargs_for_class() |
etau | guess_mime_type(), ensure_dir(), make_temp_dir() |
| Pattern | Convention |
|---|---|
| Module structure | Docstring → imports → logger → public → private |
| Private functions | _prefix |
| Docstrings | Google-style with Args/Returns/Raises |
| Error handling | logger.warning() for non-fatal |
| Lazy imports | fou.lazy_import() for optional deps |
| Guard patterns | hasattr() checks |
| Import aliases | fo, fol, fof, fom, fos, fou |
Activates 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 wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.