Cdf Auto Labeling
NVIDIAOfficialCreated by NVIDIA
- Skill
- Workflow
- Automation and integrations
- Apache-2.0
- Medium risk
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
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/nvidia/cdf-auto-labeling/downloadUnzip 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 like | Read |
|---|---|
| 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 domain | references/scenario-planning.md |
| Create, review, or adapt a cookbook | references/cookbook-authoring.md |
| Write or adapt VLM/LLM prompts or question banks | references/prompt-authoring.md |
| Migrate an existing annotation repo into this one | references/pipeline-migration.md |
| Run the video data augmentation cookbook | references/video-data-augmentation.md |
| Run or choose an EPAS / PAS cookbook | references/event-and-person-attribute-search.md |
| Run event-verification reasoning | references/event-verification-reasoning.md |
| Debug an already-integrated workflow | references/workflow-runner-debugging.md |
Pull prebuilt stage images from NGC, log in to nvcr.io, or fix a missing cdf-* image | references/ngc-containers.md |
| Implement or review a new stage or Dockerized service | references/workflow-stage-integration.md |
| Configure or debug one production stage | The 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
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_tokenscap. Restate the confirmed values back to the user before the first execution.Verify the environment: repository cloned,
maketargets 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 withmake pullinstead of building them. Use ngc-containers.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.
Plan the target scenario: define modality, domain, intended consumer, and required annotations, and get a minimal stage subset. Use scenario-planning.
Adapt the closest shipped cookbook to the new domain rather than authoring from scratch. Use cookbook-authoring.
Author the domain prompts and question banks. Use prompt-authoring.
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.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(addgrounding_2dfor caption→boxes orreferring_expressionsfor boxes→phrases; use grounding-2d / referring-expressions).Copy the closest cookbook to
cookbooks/warehouse_safety/configs/pipeline.yamland 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_tokenson thevisual_qaandreasoningLLM 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:maininside this repo.
Files
- ATTRIBUTION.mdAdded by AutoGineer909 B
- BENCHMARK.md7.3 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md7.5 KiB
- evals/evals.json5.2 KiB
- references/README.md1.3 KiB
- references/cookbook-authoring.md6.3 KiB
- references/cookbook-authoring/cookbook-schema.md6.3 KiB
- references/cookbook-authoring/scenario-authoring.md2.8 KiB
- references/event-and-person-attribute-search.md5.1 KiB
- references/event-and-person-attribute-search/run-reference.md2.4 KiB
- references/event-verification-reasoning.md1.9 KiB
- references/event-verification-reasoning/run-reference.md1.3 KiB
- references/ngc-containers.md4.2 KiB
- references/pipeline-migration.md7.2 KiB
- references/pipeline-migration/migration-playbook.md3.8 KiB
- references/pipeline-migration/nonlinear-video-pipeline-example.md2.7 KiB
- references/pipeline-migration/service-reuse-matrix.md3.4 KiB
- references/pipeline-migration/sidecar-contracts.md3.0 KiB
- references/prompt-authoring.md3.3 KiB
- references/prompt-authoring/domain-evidence-checklists.md2.2 KiB
- references/prompt-authoring/prompt-patterns.md3.9 KiB
- references/prompt-authoring/question-bank-authoring.md2.0 KiB
- references/scenario-planning.md3.6 KiB
- references/scenario-planning/annotation-recommendations.md5.0 KiB
- references/scenario-planning/intake-and-decisions.md2.6 KiB
- references/scenario-planning/pipeline-composition.md6.0 KiB
- references/stages/captioning.md3.6 KiB
- references/stages/detection-and-tracking.md6.2 KiB
- references/stages/detection-tracking-patterns.md10.3 KiB
- references/stages/grounding-2d-patterns.md1.6 KiB
- references/stages/grounding-2d.md5.1 KiB
- references/stages/guardrails.md532 B
- references/stages/person-attribute-search.md4.5 KiB
- references/stages/reasoning.md5.0 KiB
- references/stages/referring-expressions-patterns.md1.2 KiB
- references/stages/referring-expressions.md5.5 KiB
- references/stages/super-resolution.md4.4 KiB
- references/stages/training-export.md3.7 KiB
- references/stages/visual-qa.md6.2 KiB
- references/video-data-augmentation.md12.2 KiB
- references/video-data-augmentation/run-reference.md3.7 KiB
- references/workflow-runner-debugging.md6.0 KiB
- references/workflow-runner-debugging/data-handoff.md3.5 KiB
- references/workflow-runner-debugging/runner-debugging-patterns.md3.7 KiB
- references/workflow-stage-integration.md7.1 KiB
- references/workflow-stage-integration/stage-service-contract.md3.0 KiB
- references/workflow-stage-integration/validation-checklist.md2.1 KiB
- skill-card.md4.9 KiB
- skill.oms.sig15.6 KiB
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):
Media: input clip or media directory, and its rough resolution (drives super_resolution behavior).
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-*?SAM3 weights: host path to mount at
/models/sam3.GPUs: which GPU ids are free; SeedVR2 super_resolution is heavy and needs a dedicated GPU.
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 underendpoints.Keep the tracked/committed cookbook on placeholder paths and
NVIDIA_API_KEYenv 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
stagesfrom scope (a value, not a branch): full pipeline keeps all five stages; a requested subset setsstagesto that subset. Relative order is unchanged either way.Keep
super_resolution.resolver/variant,detection_and_tracking.classes/prompts, andstage_argsas shipped unless the user asks to change them.Set the reasoning-substage
max_tokensfrom the model type (a value, not a branch): a reasoning/"thinking" LLM raises it; a non-reasoning instruct model keeps the defaults. See the reasoningmax_tokensnote 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_trackingis enabled; a VLM endpoint unreachable whencaptioning/visual_qa/reasoningis enabled; an LLM endpoint unreachable whenvisual_qa/reasoningis enabled; no free GPU whensuper_resolutionis enabled) -> STOP and report the failure; do not proceed to Step 5.Only checkpoints are missing and
super_resolutionis 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_dirwill be partial or empty. This STOP is terminal for the current run. Common remedies to suggest: OOM -> free/assign a dedicated SR GPU or useseedvr2_3b; timeout -> raise the timeout; reasoning truncation -> raise the reasoningmax_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_tokensnote (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 andNVIDIA_API_KEYenv names.Always run
--container-dry-runbefore any real run.Require explicit user approval of the exact command before executing any Docker command.
Do not modify the caller's
media_pathor 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_tokensnote.
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