Skip to content
Back to skills

Source 1af6fbf751409c64562e27e7

ASecurity

Use when integrating a model into FiftyOne's remote model zoo — detection, classification, segmentation, embedding, keypoint, or vision-language (VLM) models loaded via `register_zoo_model_source` and `load_zoo_model`, then applied with `dataset.apply_model`. Also for debugging zoo registration, `manifest.json` issues, custom `fom.Model` / `TorchModelMixin` subclasses, DataLoader pickle errors, or worker `ModuleNotFoundError` from spawned DataLoader workers.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentsrustdebuggingbackend

Security analysis

A100/100

Pro scans all 13 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add gutsofpratik/OpenClaude-Skills --skill source-1af6fbf751409c64562e27e7 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Source 1af6fbf751409c64562e27e7?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Source 1af6fbf751409c64562e27e7
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gutsofpratik-source-1af6fbf751409c64562e27e7/badge)](https://www.skillsdirectory.com/skills/gutsofpratik-source-1af6fbf751409c64562e27e7)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: fiftyone-zoo-remote-model
description: Use when integrating a model into FiftyOne's remote model zoo — detection, classification, segmentation, embedding, keypoint, or vision-language (VLM) models loaded via `register_zoo_model_source` and `load_zoo_model`, then applied with `dataset.apply_model`. Also for debugging zoo registration, `manifest.json` issues, custom `fom.Model` / `TorchModelMixin` subclasses, DataLoader pickle errors, or worker `ModuleNotFoundError` from spawned DataLoader workers.
---

# FiftyOne Remote Model Zoo — Integration Guide

## When to use

Triggers: new remote zoo source; debugging an existing one; registration "succeeds" but model not loadable; `ModuleNotFoundError` from DataLoader workers; custom `fom.Model` / `TorchModelMixin`; VLM/structured-output integrations.

Not this skill: plugins, operators, panels, brain methods. Route via Phase 0.

## Phase 0 — Confirm the integration surface

| User wants to… | Surface | Skill |
|---|---|---|
| Apply a model (`dataset.apply_model`) | Remote zoo model | this skill |
| UI panels, buttons, side-effects | Plugin / operator | `fiftyone-develop-plugin` |
| Embeddings, similarity, uniqueness | Brain method | brain docs |

**Required output**: one-line confirmation. Example: "Zoo model integration because user wants `dataset.apply_model(model)` to write predictions." If you cannot write that line, stop.

## Phase 1 — Scaffold

Copy `template/`:

- `manifest.json` — top-level `name` required (silent skip if missing).
- `__init__.py` — exports `download_model`, `load_model`, optional `resolve_input`. Relative imports: `from .zoo import ...`.
- `zoo.py` — config + model class.

## Phase 2 — Implement

- Class hierarchy, properties, predict/predict_all input dispatch → [MODEL-CLASS.md](references/MODEL-CLASS.md).
- Label return types, single-`fo.Label` rule, coordinates → [LABEL-TYPES.md](references/LABEL-TYPES.md).
- DataLoader pickle, worker import resolution → [DATALOADER.md](references/DATALOADER.md).
- **VLM / generative-structured-output** (uses `generate()` with prompts/schemas) → also [VLM-PATTERNS.md](references/VLM-PATTERNS.md).

## Phase 3 — Validate

- [ ] `manifest.json` has top-level `name`.
- [ ] `__init__.py` uses relative imports.
- [ ] Image ops return single `fo.Label` (dicts only for video frame-level, integer keys).
- [ ] One-known-example coordinate check passed.
- [ ] `dataset.apply_model(model)` runs with default `num_workers`.
- [ ] On macOS, run `dataset.apply_model(model, ...)` with default `num_workers` and confirm no `ModuleNotFoundError` from spawned workers.

**On failure**, route by symptom:

| Symptom | First look at |
|---|---|
| Registration "succeeds" but `load_zoo_model` fails | [MANIFEST.md](references/MANIFEST.md), [MODEL-CLASS.md](references/MODEL-CLASS.md) |
| `ModuleNotFoundError` / pickle error from workers | [DATALOADER.md](references/DATALOADER.md) |
| Predictions in unexpected fields or not stored | [LABEL-TYPES.md](references/LABEL-TYPES.md) |
| Spatial outputs (boxes/points) in wrong location | [LABEL-TYPES.md](references/LABEL-TYPES.md); VLM: [VLM-PATTERNS.md](references/VLM-PATTERNS.md) |
| Output is schema-correct but values are wrong | [DEBUGGING-PRINCIPLES.md](references/DEBUGGING-PRINCIPLES.md) — *Schema compliance ≠ correctness* |
| Backend / device error (OOM, op unimplemented) | [DEBUGGING-PRINCIPLES.md](references/DEBUGGING-PRINCIPLES.md) — *Document upstream constraints* |

## Key Directives

Canonical names; other files cite by name. Full failure modes and diagnostic moves in [DEBUGGING-PRINCIPLES.md](references/DEBUGGING-PRINCIPLES.md).

- **Runtime parameters are setters.** NEVER make users reconstruct the model to change a `generate()` / forward kwarg, a prompt, an operation selector, or a post-processing threshold. *Why:* weights are large; anything that feeds into `model(...)` is per-call input, not model identity.
- **Framework-first.** ALWAYS use FiftyOne primitives before custom code. *Why:* framework classes are worker-importable; yours aren't.
- **Worker-pickle constraint.** NEVER define pickle-bound objects in `zoo.py`. *Why:* spawned DataLoader workers can't import modules loaded via `importlib.util.spec_from_file_location`.
- **Reference implementations need verification.** NEVER copy a pattern from another zoo source without running it under multi-worker first. *Why:* widely-copied references silently break.
- **Schema compliance ≠ correctness.** NEVER trust schema-conformant outputs as proof of correctness. *Why:* models echo your wrong field names back unchanged.
- **Read specs, don't patch parsers.** NEVER patch a parser more than twice — find the format spec. *Why:* each patch shifts the failure elsewhere; the cycle is unbounded.
- **Bounded repair scope.** NEVER grow repair logic past a few common malformations. *Why:* unbounded repair masks model-quality regressions.

## Quick reference index

- [MANIFEST.md](references/MANIFEST.md) — schema, entry points, idempotent `download_model`.
- [MODEL-CLASS.md](references/MODEL-CLASS.md) — hierarchy, properties, predict dispatch.
- [DATALOADER.md](references/DATALOADER.md) — worker pickle WHY, primitives, wrong fixes that look right.
- [LABEL-TYPES.md](references/LABEL-TYPES.md) — return types, coordinate normalization.
- [DEBUGGING-PRINCIPLES.md](references/DEBUGGING-PRINCIPLES.md) — six rules with failure modes and diagnostic moves.
- [VLM-PATTERNS.md](references/VLM-PATTERNS.md) — tool calling, generation budget, thinking, vision tokens, delimiters, multi-tier parser, coordinate quirks.

Files in this skill

  • PROVENANCE.json215 B
  • README.md1.5 KB
  • SKILL.md5.5 KB
  • UPSTREAM-LICENSE.txt10.5 KB
  • references/DATALOADER.md3.7 KB
  • references/DEBUGGING-PRINCIPLES.md3.2 KB
  • references/LABEL-TYPES.md4.5 KB
  • references/MANIFEST.md1.8 KB
  • references/MODEL-CLASS.md6.9 KB
  • references/VLM-PATTERNS.md4.7 KB
  • template/__init__.py958 B
  • template/manifest.json522 B
  • template/zoo.py2.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.