>- Use when running people attribute search (PAS) image augmentation and attribute search, PAS, person augmentation, attribute search, person re-identification, clothing augmentation, person crop augmentation.
npx skills add https://github.com/NVIDIA/skills --skill physical-ai-people-attribute-search
Default workflow skill for PAS execution on OSMO. It owns flow selection,
preflight, submit-time interpolation, monitoring, and output retrieval.
Run the PAS image augmentation and auto-labeling pipeline safely and
reproducibly from preflight to output download.
The PAS pipeline augments existing person-crop datasets by generating
controlled clothing/appearance variations (image-domain) and synonymous
attribute captions (text-domain). It uses the paidf-augmentation container
for image-edit augmentation with MCQ verification, and the
paidf-auto-labeling container for person-attribute captioning.
Do NOT use this skill for container-internal tuning-only questions.
Confirm these before running preflight or any submit. Missing required secrets
surface as USER_INPUT_REQUIRED: from scripts/preflight_credentials.sh.
| Requirement | How it is satisfied | Used for |
|---|---|---|
| NGC API key (optional) | NGC_API_KEY, NGC_CLI_API_KEY, or compatible nvapi-* token | Optional for nvcr_io credential refresh; default PAS image refs are public |
| Hugging Face token | HF_TOKEN (or HUGGING_FACE_HUB_TOKEN), or a cached token at ~/.cache/huggingface/token | Creates the OSMO hf_token credential |
| OSMO CLI access | osmo on PATH, logged in, with a default profile and a registered DATA credential profile matching storage_url | Submitting/monitoring workflows and listing/downloading objects |
| GPU pool | At least one ONLINE pool in osmo pool list --mode free | Scheduling setup + worker tasks |
| Image Edit endpoint | In-cluster NIM qwen-image-edit-2511 (reused if healthy, else deployed via the NIM operator); external opt-in via image_edit_url | Image-domain augmentation |
| VLM endpoint | In-cluster NIM qwen3-vl (shared with VDA); external opt-in via vlm_url | MCQ verification and person-attribute captioning |
| LLM endpoint | In-cluster NIM qwen25-14b (shared with VDA); external opt-in via llm_url | MCQ question generation |
e2e, augmentation, auto_labeling) from user intent.storage_url).
Use run_script(...) for script execution. Canonical examples:
run_script("bash scripts/preflight_credentials.sh --workflow assets/configs/osmo/e2e.yaml")
Use script-level --help for exact arguments.
| Script | Role |
|---|---|
| scripts/preflight_credentials.sh | Secrets/control-plane preflight and workflow image access checks |
| scripts/augmentation_worker.sh | Image-edit augmentation worker (preprocess, config gen, augment, post-process) |
| scripts/auto_labeling_worker.sh | Person-attribute captioning worker |
| scripts/endpoint_common.sh | Shared endpoint health/auth helpers |
| Flow | OSMO YAML | Group sequence | Typical use |
|---|---|---|---|
| e2e | assets/configs/osmo/e2e.yaml | setup -> augmentation -> auto_labeling | Full pipeline: augment person crops then generate captions |
| augmentation | assets/configs/osmo/augmentation.yaml | setup -> augmentation | Image-edit augmentation only, no captioning |
| auto_labeling | assets/configs/osmo/auto_labeling.yaml | setup -> auto_labeling | Captioning only on pre-augmented person crops |
| User intent | Workflow |
|---|---|
| "Augment person crops and generate captions" / "full PAS pipeline" | e2e |
| "Generate clothing variations" / "augment only" / "image edit" | augmentation |
| "Caption augmented images" / "generate search queries" / "label only" | auto_labeling |
Default to autonomy: ask only when missing information blocks execution.
e2e.default.n_augmentations is not specified, default to 3.| Missing input | Why it matters | Ask |
|---|---|---|
| USER_INPUT_REQUIRED from preflight | Required secret is missing | Ask one concise unblock question |
| Storage backend prefix cannot be derived | Wrong scheme causes runtime storage auth mismatch | "What is the backend-native root prefix for this run?" |
| No ONLINE GPU pool/platform | Workflow cannot schedule | "Which GPU pool/platform should this run target?" |
| NIM deploy fails and no external URLs given | Workers cannot connect to models | "Provide Image Edit / VLM / LLM endpoint URLs, or grant GPU capacity for the NIM operator deploy." |
<person_id>/<view>.jpg subdirectories.Collect only missing values:
storage_url + dataset name).e2e, augmentation, auto_labeling); default to e2e.gpu_platform (auto-select when unambiguous).NIMs and only set for external endpoints.
Generate run stamp before each submit:
STAMP=$(cat /proc/sys/kernel/random/uuid | cut -c1-8)
RUN_ID="run-$STAMP"
Before running any mutating command, provide a short ETA overview.
Baseline ranges:
| Phase | Typical duration |
|---|---|
| Credentials + preflight | ~1-2 min |
| Workflow submit + queue/start | ~1-3 min |
Workflow runtime (depends on dataset size and endpoint latency):
| Flow | Per-image time | Typical dataset (100 images, 3 augs) |
|---|---|---|
| augmentation | ~2.5-3 min/image | ~4-5 hours |
| auto_labeling | ~1-2 min/image | ~2-3 hours |
| e2e | ~3.5-5 min/image | ~6-8 hours |
bash scripts/preflight_credentials.sh --workflow assets/configs/osmo/<flow>.yaml
If output contains USER_INPUT_REQUIRED:, ask one concise unblock question.
storage_url must be derived from the actual dataset/upload backend.
Never silently default to stale values on mismatched backends.
(qwen-image-edit-2511, qwen3-vl, qwen25-14b).
user decision. Do NOT pause to ask. See references/nim/README.md for the
image-edit NIMService manifest and the VLM/LLM NIM operator install.
consume the image_edit_url / vlm_url / llm_url endpoints.
only then override the *_url values at submit.
Every flow uses the same submit shape; only the workflow YAML changes.
SKILLS_DIR="$(cd "$(git rev-parse --show-toplevel)/skills/physical-ai-people-attribute-search" && pwd)"
STAMP=$(cat /proc/sys/kernel/random/uuid | cut -c1-8)
osmo workflow submit assets/configs/osmo/<flow>.yaml \
--pool <pool> \
--set-string \
dataset=<dataset> \
run_id=run-$STAMP \
storage_url=<backend-prefix> \
gpu_platform=<gpu-platform> \
skills_dir="$SKILLS_DIR"
Endpoints default to the in-cluster NIMs (image_edit_url / vlm_url /
llm_url); deploy/reuse them per the Inference policy above. Do not pass these
unless using external endpoints.
Compatibility note:
--set-string flag and pass all key/value pairs after it.--set/--set-string flags in the same command.Common optional overrides (append to the same --set-string list):
cookbook=<cookbook_name> \
n_augmentations=<count> \
image_edit_url=<image-edit-endpoint> \
vlm_url=<vlm-endpoint> \
llm_url=<llm-endpoint>
# Workflow status + task states
osmo workflow query <workflow_id> --format-type json \
| jq '{status, tasks: [.groups[].tasks[] | {name, status, exit_code}]}'
# Logs for a specific task
osmo workflow logs <workflow_id> --task <task_name> -n 200
# Output retrieval
osmo data list --no-pager <output_url>
osmo data download <output_url> <local_dir>/
For runs expected to exceed two minutes, send heartbeat updates at least every
two minutes.
After successful completion, the output directory contains:
For augmentation / e2e:
<person_id>/aug_<n>/output.jpg — augmented multi-pane image<person_id>/aug_<n>/output.txt — natural-language caption<person_id>/aug_<n>/output_metadata.json — verification resultsdataset/augmented_data.json — structured dataset with attributes and queriesdataset/augmented_imgs/ — split per-view cropsFor auto_labeling:
caption_<id>/task/open_qa.json — person-attribute captions grouped by question bankUse these canonical locations:
assets/configs/osmo/*.yamlscripts/*.shreferences/flows/*.mdreferences/setup.md, references/troubleshooting.mdreferences/container-images.mdassets/cookbooks/default/README.mdCreate beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Improves the quality of images, especially screenshots, by enhancing resolution, sharpness, and clarity. Perfect for preparing images for presentations, documentation, or social media posts.
Downloads videos from YouTube and other platforms for offline viewing, editing, or archival. Handles various formats and quality options.
Lightweight WSI tile extraction and preprocessing. Use for basic slide processing tissue detection, tile extraction, stain normalization for H&E images. Best for simple pipelines, dataset preparation, quick tile-based analysis. For advanced spatial proteomics, multiplexed imaging, or deep learning pipelines use pathml.
Microscopy data management platform. Access images via Python, retrieve datasets, analyze pixels, manage ROIs/annotations, batch processing, for high-content screening and microscopy workflows.
Python library for working with DICOM (Digital Imaging and Communications in Medicine) files. Use this skill when reading, writing, or modifying medical imaging data in DICOM format, extracting pixel data from medical images (CT, MRI, X-ray, ultrasound), anonymizing DICOM files, working with DICOM metadata and tags, converting DICOM images to other formats, handling compressed DICOM data, or processing medical imaging datasets. Applies to tasks involving medical image analysis, PACS systems, radiology workflows, and healthcare imaging applications.
This skill should be used when working with pre-trained transformer models for natural language processing, computer vision, audio, or multimodal tasks. Use for text generation, classification, question answering, translation, summarization, image classification, object detection, speech recognition, and fine-tuning models on custom datasets.
Take nvidia/physical-ai-people-attribute-search from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.