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/workflow-stage-integration.md

CDF Workflow Stage Integration

Use this skill when the user asks to add a new stage/service, wire a pending architecture into the workflow runner, or review a stage MR for runner readiness.

Workflow

Linear spine, Step 1 -> 7. The seven numbered steps are the only flow nodes. The three decision gates are Step 2 (requirements), Step 4 (validation), and Step 7 (branch separation); the only loop is the bounded fix-and-revalidate self-loop in Step 4. The Step 4 validation scopes (focused package/service tests, then make lint-check, make mypy, make test, then the asset scan) run in that order inside Step 4 as one gate - they are ordered content of that step, not separate nodes each with its own loop. Required Checks are the content of Step 3 and Guardrails are constraints applied within Steps 3-6, not separate flow steps. Terminals: blocked-requirements stop (Step 2), unresolved-validation stop (Step 4), and done (Step 6, with optional Step 7).

  1. Identify the active runner path. The current target service path is services/workflow_runner; verify the branch before touching runner-owned files. Then go to Step 2.

  2. Gate - are stage requirements clear? Trigger: before implementing.

    • Unclear (target modality, annotation outputs, stage dependencies, model endpoints, GPU/model-cache constraints, or sidecar namespace) -> ask one concise question and offer concrete options (a new linear stage, a training_export dataset-aggregation stage, or a generic stage that owns its own sidecar namespace); wait for the answer. If it stays blocked, STOP.

    • Clear -> go to Step 3. Do not implement on assumptions.

  3. Implement against the contract (single step). Read stage-service-contract.md and satisfy every item in Required Checks (stage identity, CLI/DataEntry contract, Docker registration and runner constants, canonical stage order, linear cookbook shape, owned sidecars and pipeline_state.json slice, cookbook fields, and tests). Treat this as one implementation step, then go to Step 4.

  4. Gate - does validation pass? Run validation narrowest scope first, then broaden: focused package/service tests, then make lint-check, make mypy, make test, and the asset scan, per validation-checklist.md.

    • Fails -> fix the code and re-run the same scope. The loop stays inside this Step 4 (re-run the current scope only; it does not re-enter Steps 1-3). Bounded: repeat only until that scope passes, or STOP and report a blocker you cannot resolve. Do not broaden until the narrower scope passes.

    • Passes at all scopes -> go to Step 5.

  5. Runner dry-run. Run the runner with --container-dry-run and confirm stage order, image names/build targets, mounts, model cache, endpoints, question banks, prompts, and stage args without launching containers. Then go to Step 6.

  6. Confirm MR readiness (done). Re-check the MR-readiness items in validation-checklist.md: unrelated changes excluded; new stage names, cookbook fields, and dry-run examples documented; error-case tests included; pending service/image dependencies stated. The integration task is complete here; Step 7 is optional.

  7. Gate - did the user request branch separation? Runs after Step 6.

    • Yes -> keep each integration part on its own branch (service rename, runner schema, stage implementation, cookbook recipe, skill/doc updates).

    • No -> keep the change stacked as the user prefers.

Required Checks

  • Stage CLI contract: every container entrypoint accepts --input-file JSONL and uses the shared DataEntry schema.

  • Docker registration: the service package has [project.scripts] and [tool.build.images]; the runner constants in services/workflow_runner map each stage name to a container image and build target.

  • Stage set: canonical stages run in the fixed relative order super_resolution -> detection_and_tracking -> captioning -> visual_qa -> reasoning -> training_export -> person_attribute_search. A stage key can differ from its image/build target; e.g. person_attribute_search (the Visual Attribute Search product) keeps its stage key but maps to the event-and-person-attribute-search-service image and build target.

  • Cookbook shape: author a workflow.nodes DAG. It is validate-only today (parsed, topologically flattened, and run sequentially, not executed as a parallel DAG), but every shipped cookbook uses it and test_repo_cookbooks_use_workflow_nodes_and_list_environment requires it; do not author a stages: list.

  • Input/output sidecars: stage outputs stay under the scene data_path, with durable diagnostics under sidecars/<stage>/ unless the DAFT contract requires contextual/ or task/.

  • pipeline_state.json: each stage writes only its owned state slice and preserves sibling slices.

  • Cookbook fields: new knobs have declarative cookbook fields or explicit stage_args guidance, plus dry-runnable example paths.

  • Dry-run behavior: runner dry-run prints stage order, images, mounts, endpoints, model cache, question banks, prompts, and stage args without launching containers.

  • Tests: add focused unit tests for parser/runner behavior and service contract tests for the new stage.

Examples

Adding a new media_chunking stage.

Service package pyproject.toml (Docker registration):

[project.scripts]
media-chunking = "media_chunking.cli:main"

[tool.build.images]
media-chunking-service = { dockerfile = "Dockerfile", context = "." }

Runner constants in services/workflow_runner/.../cookbook.py — add the per-stage image-override entry so a cookbook can pin the image:

_IMAGE_ARG_BY_STAGE: dict[StageName, tuple[str, str]] = {
    # ...existing stages...
    "media_chunking": ("media_chunking_image", "--media-chunking-image"),
}

Entrypoint honors the shared contract (JSONL DataEntry, owned sidecar + state):

media-chunking --input-file "$INPUT_JSONL"   # writes sidecars/media_chunking/ and its own pipeline_state.json slice

Cookbook can pin the image per stage, then dry-run to confirm the plan:

container:
  images:
    media_chunking: media-chunking-service:dev
make run SCRIPT=workflow-runner:main \
  ARGS='--cookbook-file cookbooks/<scenario>/configs/pipeline.yaml --container-dry-run'

Guardrails

  • Do not add runner-only flags to stage CLIs unless the service truly owns the behavior.

  • Do not hard-code absolute experiment paths, endpoints, secrets, or local model cache paths in committed cookbooks.

  • Do not claim parallel or non-linear DAG execution; the runner only linearizes and validates a stage graph.

  • Do not let two stages write the same artifact key or sidecar path.

  • Do not reference the retired single daft_export stage. DAFT task/ writing now belongs to reasoning, and dataset aggregation belongs to the shipped training_export stage (a well-scoped generic export stage).

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