Generated banner for Cdf Auto Labeling
Generated logo for Cdf Auto Labeling

Cdf Auto Labeling

NVIDIAOfficialCreated by NVIDIA

  • Skill
  • Workflow
  • Automation and integrations
  • Apache-2.0
  • Medium risk

From the author

Use when a user needs to get started with CDF Auto-Labeling, plan a scenario, run or debug a shipped cookbook, author prompts or cookbooks, migrate a pipeline, configure a stage, or pull the prebuilt stage containers from NGC (nvcr.io). Confirm critical inputs (data path, output path, endpoints) and ask when any are missing. This is a router: read the matching reference instead of inventing a workflow.
— the description by NVIDIA

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

CDF Auto-Labeling is a central routing skill designed to guide users through the lifecycle of automated data labeling tasks within the Cosmos Data Factory ecosystem. It provides a structured approach to onboarding, scenario planning, cookbook authoring, and pipeline execution. By acting as a router, it directs users to specialized documentation for specific tasks—such as migrating pipelines, debugging workflows, or managing containerized stages—while enforcing strict input validation and operational guardrails to ensure reproducible results.

What it does

  • Routes users to specific documentation based on their current task or stage in the pipeline.
  • Validates critical run inputs like data paths, output directories, and model endpoints.
  • Provides a standardized workflow for running, debugging, and customizing annotation cookbooks.
  • Facilitates the integration of new stages and the management of prebuilt container images.
  • Enforces operational guardrails to prevent common errors like hardcoding secrets or skipping validation steps.

When to use it

  • When you are a new user needing to get started with CDF Auto-Labeling.
  • When you need to plan a new annotation scenario or adapt an existing cookbook.
  • When you are troubleshooting a failed pipeline run or debugging a specific stage.
  • When you need to migrate an external annotation repository into the CDF framework.
  • When you need to pull or configure prebuilt stage containers from NGC.

Advantages

  • Ensures consistent and reproducible pipeline execution through standardized cookbooks.
  • Prevents configuration errors by mandating input validation before execution.
  • Simplifies complex workflows by breaking them down into manageable, modular tasks.
  • Promotes best practices by delegating specialized tasks to dedicated reference guides.

Usage examples

“I cloned the repo and have my own warehouse-safety video. How do I produce auto-labels for my domain?”
The agent will guide you to verify your environment, run a shipped example to confirm the stack, plan your scenario, adapt a cookbook, and execute a dry-run.
“How do I pull the prebuilt stage containers from NGC?”
The agent will direct you to the ngc-containers reference and provide instructions on using make pull to retrieve the necessary images.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/nvidia/cdf-auto-labeling/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip cdf-auto-labeling.zip -d .agents/skills

Documentation by NVIDIA

CDF Auto-Labeling

Use this skill when a user wants to kick off CDF Auto-Labeling on their own data, domain, or use case, or when the request matches a shipped cookbook, stage, authoring, or migration task. This is a router: sequence the specialized references instead of duplicating their detail.

Routing (Read First)

Request looks likeRead
New user, clean checkout, first validated run, "how do I get started"This file, then the matching reference below
Choose annotation targets / stage subset for a domainreferences/scenario-planning.md
Create, review, or adapt a cookbookreferences/cookbook-authoring.md
Write or adapt VLM/LLM prompts or question banksreferences/prompt-authoring.md
Migrate an existing annotation repo into this onereferences/pipeline-migration.md
Run the video data augmentation cookbookreferences/video-data-augmentation.md
Run or choose an EPAS / PAS cookbookreferences/event-and-person-attribute-search.md
Run event-verification reasoningreferences/event-verification-reasoning.md
Debug an already-integrated workflowreferences/workflow-runner-debugging.md
Pull prebuilt stage images from NGC, log in to nvcr.io, or fix a missing cdf-* imagereferences/ngc-containers.md
Implement or review a new stage or Dockerized servicereferences/workflow-stage-integration.md
Configure or debug one production stageThe matching file under references/stages/

Stage references: super-resolution, detection-and-tracking, captioning, visual-qa, reasoning, person-attribute-search, grounding-2d, referring-expressions, training-export.

Instructions

  1. Confirm the critical run inputs with the user before doing anything else, and ask a concise question whenever one is missing or ambiguous - never guess or silently invent a default. At minimum confirm: input data path, output path, VLM/LLM endpoint URLs and model names, model cache path, GPU ids, and (for reasoning-capable models) the max_tokens cap. Restate the confirmed values back to the user before the first execution.

  2. Verify the environment: repository cloned, make targets available, the model cache path exists, the VLM/LLM endpoints are reachable, and a GPU is available. State any missing prerequisite as a blocker instead of assuming it. If the stage images are not present locally, offer to pull the prebuilt images from NGC with make pull instead of building them. Use ngc-containers.

  3. Run a shipped example first to confirm the stack works end to end before customizing. Pick the closest operator pipeline - video data augmentation, event-and-person-attribute-search, or event-verification-reasoning - and run its committed cookbook. Use the matching operator reference.

  4. Plan the target scenario: define modality, domain, intended consumer, and required annotations, and get a minimal stage subset. Use scenario-planning.

  5. Adapt the closest shipped cookbook to the new domain rather than authoring from scratch. Use cookbook-authoring.

  6. Author the domain prompts and question banks. Use prompt-authoring.

  7. Configure the per-stage settings for the domain (detector classes or SAM3 prompts, endpoints, windowing, max_tokens). Use the relevant stage reference, starting with detection-and-tracking.

  8. Dry-run the adapted cookbook, then execute and validate the outputs. Use workflow-runner-debugging.

Adopting an existing external annotation or dataset-generation repository into CDF instead of starting from a shipped cookbook is a migration task; use pipeline-migration for that path.

Examples

New user, new domain: "I cloned the repo and have my own warehouse-safety video. How do I produce auto-labels for my domain?"

Guided path:

  • Confirm env (model cache, VLM/LLM endpoints, GPU), then prove the stack on a shipped example before customizing:

make run SCRIPT=workflow-runner:main \
  ARGS='--cookbook-file cookbooks/video_data_augmentation/configs/pipeline_video.yaml --container-dry-run'
  • Plan the domain (scenario-planning) -> subset detection_and_tracking -> captioning -> visual_qa -> reasoning -> training_export (add grounding_2d for caption→boxes or referring_expressions for boxes→phrases; use grounding-2d / referring-expressions).

  • Copy the closest cookbook to cookbooks/warehouse_safety/configs/pipeline.yaml and adapt inputs, detector classes/SAM3 prompts, prompts, and question banks.

  • Dry-run the new cookbook, then run for real and validate outputs:

make run SCRIPT=workflow-runner:main \
  ARGS='--cookbook-file cookbooks/warehouse_safety/configs/pipeline.yaml --container-dry-run'

Guardrails

  • Do not guess or fabricate the critical inputs enumerated in step 1; if any is missing or ambiguous, ask the user and confirm before executing.

  • Do not customize a cookbook before a shipped example runs clean; a broken base makes domain debugging ambiguous.

  • Keep the first custom pipeline minimal - only the stages needed for the requested annotations - and expand later.

  • Verify that every selected stage's service package and image exist in the current branch before promising an end-to-end run.

  • Do not put secrets, tokens, or absolute home paths in committed cookbooks; use placeholders such as <model-cache> and env vars for endpoint keys.

  • For reasoning-capable models (for example Gemini 3 Flash), raise max_tokens on the visual_qa and reasoning LLM substages to avoid the thinking-token tax; keep the default cap for non-reasoning models.

  • Do not rely on non-CDF pipelines, commands, or file locations. A first run must be reproducible through workflow-runner:main inside this repo.

Files

references/video-data-augmentation.md

CDF Video Data Augmentation Pipeline

Use this skill when the user wants to RUN the end-to-end Video Data Augmentation pipeline (traffic-safety use case) on a clip or media directory through the CDF workflow-runner container. The shipped cookbook is cookbooks/video_data_augmentation/configs/pipeline_video.yaml (pipeline: video). Build a complete run, then obtain explicit user approval before executing any Docker command.

The pipeline runs five stages in fixed order: super_resolution -> detection_and_tracking -> captioning -> visual_qa -> reasoning.

Workflow

Canonical flow (this diagram is authoritative - transcribe it; do not infer extra nodes). The only nodes are the six numbered steps plus the Start, STOP, and Complete terminals; the only stops are the three gates in Steps 4-5.

flowchart TD
    Start([Start]) --> S1[Step 1: Interview]
    S1 --> S2[Step 2: Prepare Config]
    S2 --> S3[Step 3: Dry-Run]
    S3 --> S4[Step 4: Pre-flight]
    S4 -->|Gate 1: value malformed| STOP([STOP])
    S4 -->|Gate 1: blocking check fails| STOP
    S4 -->|Gate 1: only SR checkpoints missing - warn| S5[Step 5: Execute]
    S4 -->|Gate 1: pass| S5
    S5 -->|Gate 2: user declines| STOP
    S5 -->|Gate 2: user approves - run| G3{Gate 3: exit code}
    G3 -->|exit 0| S6[Step 6: Validate Artifacts]
    G3 -->|non-zero / OOM / timeout / crash| STOP
    S6 --> Done([Complete])

A Gate 3 STOP is terminal for the current run; a rerun is a new pass that re-enters at Step 5 only after the user asks (see Step 5).

The flow is a strict linear spine: Step 1 -> 2 -> 3 -> 4 -> 5 -> 6. The six numbered steps are the only nodes in this flow; the interview questions in Step 1 and the bullet lists in Steps 2-4 are that step's content (inputs gathered or config values set), not separate flow nodes or branches. Steps 1-3 always run and each hands directly to the next; any conditionals inside them (scope, reasoning-model max_tokens, runner image) only set config values and never skip a step, so they are not branches in the flow. The flow can stop at exactly three gates: Step 4 (readiness - which blocks on either a malformed-input confirmation or a failed check), Step 5 (approval), and the Step 5 execution result. Each step below opens with a one-line signature stating whether it is mandatory, when it runs, and what it produces. Combine steps into one turn when the user has already supplied the required inputs.

Step 1: Understand the Goal (Interview)

Mandatory first step. Produces: the run inputs (media, endpoints, reasoning-model flag, SAM3 path, GPUs, scope). Then go to Step 2.

Ask in one message (skip anything already answered):

  1. Media: input clip or media directory, and its rough resolution (drives super_resolution behavior).

  2. Endpoints: served VLM and LLM base URLs and model names. Is the reasoning/visual_qa LLM a reasoning ("thinking") model, for example gcp/google/gemini-3-*?

  3. SAM3 weights: host path to mount at /models/sam3.

  4. GPUs: which GPU ids are free; SeedVR2 super_resolution is heavy and needs a dedicated GPU.

  5. Scope: full pipeline, or a subset of stages.

Step 2: Prepare the Run Config

Mandatory; runs after Step 1. Produces: a completed pipeline_video.yaml for this run. Then go to Step 3.

  • Set the run values in your local working copy of pipeline_video.yaml - do not stage or commit these edits: the media path (data.0.inputs.media_path), the SAM3 weights host mount (container.mounts, host side of :/models/sam3:ro), and the served VLM/LLM model names under endpoints.

  • Keep the tracked/committed cookbook on placeholder paths and NVIDIA_API_KEY env names: never commit real media paths, host mounts, endpoints, or secrets. The working-copy edits above are for running this pipeline only; leave the tracked file unchanged in git.

  • Set stages from scope (a value, not a branch): full pipeline keeps all five stages; a requested subset sets stages to that subset. Relative order is unchanged either way.

  • Keep super_resolution.resolver/variant, detection_and_tracking.classes/prompts, and stage_args as shipped unless the user asks to change them.

  • Set the reasoning-substage max_tokens from the model type (a value, not a branch): a reasoning/"thinking" LLM raises it; a non-reasoning instruct model keeps the defaults. See the reasoning max_tokens note in run-reference.md.

  • Read run-reference.md for the stage-by-stage config summary, mounts/endpoints/GPU needs, and expected artifacts.

Step 3: Container Dry-Run

Mandatory; runs after Step 2. Produces: the inspected runner-generated Docker command (nothing is executed here). Then go to Step 4.

Always dry-run first to inspect the runner-generated Docker command; use the dry-run command in run-reference.md.

Confirm the generated command includes the intended stages, the SAM3 mount, the model-cache mount, GPU selection, endpoint values, and every intended stage_args flag. Set the --container-build-images flag from image state (a value, not a branch): add it when the runner image is missing or stale, omit it when the image is already built. Either way, go to Step 4.

Step 4: Pre-flight Checklist

Mandatory; runs after Step 3. Produces: a pass/fail readiness report. Gate 1 - this is where the flow can stop before execution.

Validate substituted values first: confirm each value that goes into the checks below (media path, SAM3 path, model-cache path, endpoint URLs, out_dir) is well-formed and safely quoted. If any value looks malformed or contains unexpected characters, STOP and confirm it with the user before running any command. This malformed-input STOP is part of Gate 1 (readiness), not a separate gate.

Then report pass/fail before asking for execution approval. Check only what the enabled stages need: each item below is blocking only when a stage that requires it is in stages (shown in parentheses). Skip - do not fail - checks whose stages are not in this run (e.g. a captioning-only run does not need SAM3 weights or a dedicated SR GPU).

[ ] Input media exists        →  ls <media_path>            (always blocking)
[ ] SAM3 weights present      →  ls <sam3_weights_host_path> (blocking iff detection_and_tracking enabled)
[ ] SR GPU free (dedicated)   →  nvidia-smi                 (blocking iff super_resolution enabled)
[ ] Model cache / checkpoints →  ls <model_cache_path>      (super_resolution: warn-only, see Gate 1)
[ ] VLM endpoint reachable    →  curl -s <vlm_url>/models   (blocking iff captioning, visual_qa, or reasoning enabled; no secrets in logs)
[ ] LLM endpoint reachable    →  curl -s <llm_url>/models   (blocking iff visual_qa or reasoning enabled; no secrets in logs)

Shell safety: always double-quote user-provided values (media path, SAM3 path, model-cache path, endpoint URLs) when substituting them into these commands - e.g. ls "<media_path>", curl -s "<vlm_url>/models" - so spaces or shell metacharacters cannot break or alter the command. Never place API keys or tokens on the command line or in logged URLs; pass secrets only via the NVIDIA_API_KEY env names.

Gate 1 (readiness) - trigger: substituted values have been validated and the checklist has been run. Evaluate each item only for the enabled stages; an item required solely by a stage that is not in this run is never a blocker. Outcomes:

  • A substituted value looks malformed or contains unexpected characters -> STOP and confirm it with the user before running; do not proceed to Step 5.

  • A blocking item for an enabled stage fails (missing input media; missing SAM3 weights when detection_and_tracking is enabled; a VLM endpoint unreachable when captioning/visual_qa/reasoning is enabled; an LLM endpoint unreachable when visual_qa/reasoning is enabled; no free GPU when super_resolution is enabled) -> STOP and report the failure; do not proceed to Step 5.

  • Only checkpoints are missing and super_resolution is enabled -> warn, then continue forward to Step 5 (do not re-run the checklist; stage init may fetch SeedVR2 weights on first run, so the first run can spend time downloading).

  • All items required by the enabled stages pass -> go to Step 5.

Step 5: Execute (Approval Required)

Mandatory; runs after a passing Step 4. Produces: either an executed run or a STOP. Holds Gate 2 (approval) and Gate 3 (execution result).

After a passing pre-flight, present an execution summary (full command, GPU count, expected long runtime for SR + reasoning, mounts, endpoints, output directory). Use the execute command in run-reference.md.

Gate 2 (approval) - trigger: the summary has been presented. Outcomes:

  • User declines -> STOP; run no Docker command.

  • User approves that exact command -> run it (set a generous timeout; super_resolution (SeedVR2) and reasoning stages can run for many minutes), then evaluate Gate 3.

Gate 3 (execution result) - trigger: the container has finished. Outcomes:

  • Exit 0 -> go to Step 6.

  • Non-zero exit, GPU OOM, timeout, or crash -> STOP: report the failing stage, the exit code, and the last error lines; do not run Step 6, since out_dir will be partial or empty. This STOP is terminal for the current run. Common remedies to suggest: OOM -> free/assign a dedicated SR GPU or use seedvr2_3b; timeout -> raise the timeout; reasoning truncation -> raise the reasoning max_tokens. Do not silently retry and do not loop back automatically: any rerun is a new, separately approved pass. After the user asks to rerun, re-enter at Step 5 (present summary, get approval); re-run Step 4 (pre-flight) first only if config or environment changed.

Step 6: Validate Artifacts

Runs only after Gate 3 passes (container exit 0); skipped on any failed run. Produces: an artifact-validation report. Terminal step.

Confirm each enabled stage wrote its expected outputs under the sample out_dir (see Expected Artifacts for the per-stage list), then run ls -lhR -- "<out_dir>/" and report which stage outputs are present or empty.

Key Facts

  • Stage order is fixed; listing stages in a different order does not reorder execution.

  • For per-stage config, mounts/endpoints/GPU needs, expected artifacts, and the reasoning max_tokens note (raise it for reasoning/"thinking" models), see run-reference.md.

Examples

Key edits to pipeline_video.yaml (reasoning model shown); run it with the dry-run and execute commands in run-reference.md:

data:
  - inputs: { media_path: data/video.mp4 }
    output: { out_dir: output/auto_labeling/video }
endpoints:
  vlm: { url: http://host.docker.internal:18002/v1, model: gcp/google/gemini-3-pro }
  llm: { url: http://host.docker.internal:18003/v1, model: gcp/google/gemini-3-pro }
container:
  mounts:
    - <host_sam3_weights>:/models/sam3:ro
reasoning:
  temporal_localization: { max_tokens: 32768 }    # use 4096 for instruct models
  open_qa: { max_tokens: 32768 }
  mcq_openended: { max_tokens: 32768 }
  bcq_openended: { max_tokens: 32768 }

Guardrails

  • Do not commit secrets, tokens, or absolute user home paths in the tracked pipeline_video.yaml. Keep real media paths and SAM3 host mounts out of the committed cookbook; use placeholder paths and NVIDIA_API_KEY env names.

  • Always run --container-dry-run before any real run.

  • Require explicit user approval of the exact command before executing any Docker command.

  • Do not modify the caller's media_path or edit their input media in place.

  • Never invent endpoint URLs, model names, credentials, or the input/output paths; use only values the user provides. If a data path, output path, endpoint, or other critical setting is missing or ambiguous, ask the user and confirm the values before running.

References

  • Read run-reference.md for the stage-by-stage config summary, mounts/endpoints/GPU needs, dry-run and execute commands, expected artifacts, and the reasoning max_tokens note.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

What our scanner noticed· Medium risk

  • Large base64-encoded blobs

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
NVIDIA
Publisher
NVIDIA (Official)
Source
NVIDIA/skills · skills/cdf-auto-labeling · commit fce3cca
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE-APACHE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by NVIDIA.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download cdf-auto-labeling.zip