Use this skill when the user wants to deploy, run, debug, tear down, or call the REST API of the RTVI-CV 2D detection / tracking microservice. Trigger when the user says things like 'deploy rtvi-cv', 'start warehouse 2d', 'add a stream', 'check rtvi-cv health', or 'stop the perception container'. Not for VLM, embedding, or analytics — use the matching vss-* skill.
Automate repetitive workflows and reduce manual effort
Example: Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example: Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example: Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
Time estimate: 15-45 minutes depending on use case complexity
Prerequisites
Submit your Claude Code skill and start earning
epx add nvidia/skills/vss-deploy-detection-tracking-2dCompatible with
Supported agents
| name | vss-deploy-detection-tracking-2d |
| description | "Use this skill when the user wants to deploy, run, debug, tear down, or call the REST API of the RTVI-CV 2D detection / tracking microservice. Trigger when the user says things like 'deploy rtvi-cv', 'start warehouse 2d', 'add a stream', 'check rtvi-cv health', or 'stop the perception container'. Not for VLM, embedding, or analytics — use the matching vss-* skill." |
| license | Apache-2.0 |
| metadata | version: "3.2.0" github-url: "https://github.com/NVIDIA-AI-Blueprints/video-search-and-summarization" tags: "nvidia rtvi-cv deployment rest-api docker deepstream ngc warehouse smartcity sparse4d gdino rt-detr metropolis stream-management health-check metrics" |
Deploy, debug, and operate the RTVI-CV detection / tracking 2D microservice and drive its REST API.
$HOST_IP (see vss-deploy-profile and references/).$NGC_CLI_API_KEY and $NVIDIA_API_KEY for any image pulls.curl, jq, and Docker available on the caller.Follow the routing tables and step-by-step workflows below. Each section that ends in workflow, quick start, or flow is intended to be executed top-to-bottom. Detailed reference material lives in references/ and helper scripts live in scripts/ — call them via run_script when the skill points to a script by name.
Worked end-to-end examples are kept under evals/ (each *.json manifest contains a runnable scenario) and inline in the per-workflow curl blocks below. Run a Tier-3 evaluation with nv-base validate <this-skill-dir> --agent-eval to replay them.
/docs or /health; redeploy via vss-deploy-profile or the matching vss-deploy-* skill.NGC_CLI_API_KEY. Solution: docker login nvcr.io and re-export the key before retrying.docker compose down.Unified skill for the Real Time Video Intelligence CV (RTVI-CV) microservice. Two action surfaces in one skill:
references/deploy-vss-detection-tracking-2d.mdreferences/usage-vss-detection-tracking-2d.mdService:
rtvi-cv(metropolis_perception_app) Image:nvcr.io/<org>/<repo>:<tag>— user-supplied at deploy time REST port:9000(/api/v1—/live,/ready,/startup,/metrics,/stream/add,/stream/remove, embeddings) Hardware: x86/aarch64 dGPU (T4, A100, L40, H100, B200, RTX), SBSA (Spark, Grace-Hopper), Jetson (Thor, Orin, Xavier)
| User intent (sample phrasing) | Flow | Load this reference |
|---|---|---|
deploy rtvi-cv warehouse 2d, run rtvicv warehouse-3d with 4 streams, start smartcity gdino, launch perception app, bring up sparse4d | DEPLOY | references/deploy-vss-detection-tracking-2d.md |
stop rtvi-cv, tear down, kill the perception container, cleanup rtvicv-perception-docker | TEARDOWN (handled by deploy doc → "Mode Selection") | references/deploy-vss-detection-tracking-2d.md + references/teardown-flow.md |
check rtvi-cv logs, diagnose rtvi-cv crashing, troubleshoot healthcheck failing, rtvi-cv won't start | DEBUG | references/deploy-vss-detection-tracking-2d.md + references/troubleshooting.md |
add a stream, remove camera, list streams, health check, is rtvi-cv ready, get metrics, what's the FPS, check GPU usage, generate text embeddings, call rtvi-cv api | API USAGE | references/usage-vss-detection-tracking-2d.md + references/api-reference.md |
Selection rule: match the user's phrasing against the table above and immediately load the corresponding reference file. Do not mix the flows — DEPLOY assumes no running container yet; API USAGE assumes the container is already running on http://<host>:9000.
If intent is genuinely ambiguous (e.g., the user says just "I want to use rtvi-cv"), ask one AskQuestion: deploy a new instance, or call an already-running one?
vss-deploy-detection-tracking-2d/
├── SKILL.md # this file (routing + contracts)
├── assets/ # data files (deploy-defaults.yml — single source of truth for tags / refs / paths / GPU)
├── evals/ # Tier-3 eval manifests (deploy-evals.json, usage-evals.json)
├── scripts/ # 23 bash + python helpers (see `scripts/` for the full inventory)
└── references/ # workflow runbooks (deploy / api-usage / teardown / troubleshooting / …)
For the full per-file inventory and what each reference covers, see
references/workflow-reference.md.
All scripts are invoked from the skill root via $SKILL_DIR/scripts/<name> — paths inside the deploy reference doc are preserved verbatim and resolve correctly when the agent runs from skill root.
Helpers live in scripts/ and are invoked from the skill root by name —
call each via run_script("scripts/<name>") so the agent records a
proper tool invocation.
| Script | Purpose | Arguments |
|---|---|---|
load_defaults.sh | Detect platform (x86 dGPU / SBSA / Jetson) and resolve YAML defaults from assets/deploy-defaults.yml. | --usecase <name> |
fetch_resources.sh | Download + extract NGC resources, scan for layout. | --ngc-ref <ref> (optional) |
apply_in_container.sh | Host-side wrapper for Step 4 (apply_config.sh inside the running container). | <container_name> |
apply_config.sh | In-container path-substitution, batch, sink, sources, engine cache. | <usecase> <stream_count> <sink_type> |
start_app_in_container.sh | Host-side wrapper for Step 5 (run_app_and_wait.sh). | <container_name> |
run_app_and_wait.sh | In-container app launch + readiness + metrics + log. | <config_path> |
add_streams.sh / update_stream_sources.sh | REST stream lifecycle for Step 6. | <rtsp_or_file_uri>... |
collect_metrics.sh | Pull /api/v1/metrics snapshot. | none |
discover_streams.sh | Enumerate active streams via /stream/get-stream-info. | none |
synthesize_docker_run.sh | Print the platform-correct docker run line for the resolved env. | none |
render_box.sh | Render the fixed-width step receipt. | <step_label> |
calibration_manager.py | Manage calibration artefacts + per-use-case engine cache invalidation. | --usecase <name> --reset |
For the full inventory of helpers (cache, GPU checks, setup) browse
scripts/; each script's --help describes its arguments.
vss-deploy-detection-tracking-2d (deploy/teardown/debug) and rtvicv-api (REST API) — every step ordering invariant, bash-batching rule, box-rendering rule, and AskQuestion contract is retained.TodoWrite array of 5 todos, OR 5 successive TaskCreate calls on newer Claude Code) → Step 1 question. Do not narrate, do not pre-flight, and never print "loading TodoWrite/TaskCreate" or any deferred-tool resolution prose — the planning tool is loaded silently.When running the DEPLOY / TEARDOWN / DEBUG flow, the agent MUST honour all four items below on every successful deploy. These are the user's only feedback channel between steps; skipping any of them is a behaviour regression.
references/deploy-vss-detection-tracking-2d.md
under "Step N box content rule".AskUserQuestion
from references/next-steps.md § "11.c"
— never replace it with a free-form Next steps bullet list. The
menu is the deploy's exit handle: it lets the user run metrics,
manage streams, tail logs, or tear down with one click instead of
having to remember curl URLs.AskUserQuestion from references/next-steps.md
§ "11.d" — never substitute prose + ready-to-copy curl examples + a
free-text "want me to run X?" question. Each bucket has its own
menu of concrete actions; the user picks the action, then the skill
emits the API box and runs the curl. Per-bucket follow-ups:
/stream/get-stream-info — one option
per active stream labelled <camera_id> · <camera_url> plus
"Remove ALL" when ACTIVE > 1 (full spec: § "remove_streams
sub-flow").collect_metrics.sh
directly after printing the /api/v1/metrics API box.references/deploy-vss-detection-tracking-2d.md
under "Step N box content rule". Step 4 (Apply configuration) is
where the agent collapses most often — its canonical
per-use-case key list lives in
references/apply-config.md
§ "Per-use-case complete edit list", and the agent MUST emit one
✔ [section] key=value — annotation row per key in that table for
the active use case + settings. A section with 5 keys → 5 rows; a
section with 6 keys → 6 rows. Never one overview row per section.Forbidden (these are the shortcuts the agent falls back to under pressure, and they break the user's UX):
✔ <pinned-values> summary line followed by the widget — never any
scaffolding around tool resolution.TaskCreate's
description field. When TaskCreate is the available planning
tool, issue 5 separate TaskCreate calls back-to-back (one per
step). See references/task-list.md § "Initial TaskCreate calls"
for the verbatim template. Same rule for TodoWrite — one call with
all 5 todos in the todos:[…] array; never one todo whose content
is a multi-line list.dynamic stream-mode. The skill default is
stream_mode=static — the agent bakes auto-discovered file:// URLs
into the DS main config's [source-list] block before app start.
Switch to dynamic only when the user explicitly asks ("add streams
later via REST", "use dynamic stream mode") OR when they pick dynamic
in the Step 2 AskQuestion. Picking dynamic for a generic "deploy
rtvi-cv with N streams" query breaks the deploy rubric and the
user's /metrics expectations. See
references/pipeline-config.md
§ "Defaults — the skill is static-mode by default" for the full
rationale.✔ App ready in Ns, N streams, fps total Y in place of
the Step 5 Results box.+, -, =, *) instead of light
box-drawing chars (┌ ─ ┐ │ └ ┘).✔ Batch size 3 (tile grid: 1×3) → required: 5 separate rows
([streammux] batch-size=3, [primary-gie] batch-size=3,
[source-list] max-batch-size=3, [tiled-display] rows=1,
[tiled-display] columns=3).✔ Output sink eglsink → required: one row per sink key
(4 keys for eglsink, e.g. [sink0] enable=1, type=2,
sync=0, qos=0 — read apply-config.md for the exact list).✔ Sources static (3 streams, http-port=9000) → required: six
annotated [source-list] rows.✔ Tile grid 1 row × 3 cols (single row) → required: two
rows, [tiled-display] rows=1 and [tiled-display] columns=3.The geometry contract for every step-exit box (Step 1 through Step 5 Results). The same shape across every box; only the title and the body rows change per step.
┌ at column 1, ┐ at
column 128. Wider terminals leave the box flush-left; do not stretch
it. Inner content area is 124 chars (with one space margin on
each side inside the │ borders).┌ ─ ┐ │ └ ┘. No +, -, =,
* ASCII fallbacks.┌ + N₁ dashes + ␣ + title + ␣
┐, where N₁ + N₂ + len(title) + 2 = 126. Distribute
the pad: N₁ = floor((126 − len(title) − 2) / 2),
N₂ = 126 − len(title) − 2 − N₁. N₁ and N₂ differ by at most 1.│ <content padded to inner-content 124> │ per fact.
Each fact line uses the ✔ <key-padded-to-13> <value> form (two
spaces in, glyph, key right-padded to 13, two spaces, value).│ <124 spaces> │ between
logical groups (e.g. Identity / Model / Videos in Step 1) so the
user can scan the box at a glance.└ + 126 dashes + ┘ — solid border, no title.Standard step titles (used at the top of each step's box):
┌─────────────────────────────────────────────────────── Deploy targets ───────────────────────────────────────────────────────┐
┌─────────────────────────────────────────────────── Pipeline configuration ───────────────────────────────────────────────────┐
┌───────────────────────────────────────────────────────── Container ──────────────────────────────────────────────────────────┐
┌──────────────────────────────────────────────────── Apply configuration ─────────────────────────────────────────────────────┐
┌──────────────────────────────────────────────── Perception Application — Plan ───────────────────────────────────────────────┐
┌────────────────────────────────────────────── Perception Application — Results ──────────────────────────────────────────────┐
Per-step content rules (which rows go in which box, mode-aware row
hiding, the apply-config sectioned layout, the Step 5 PLAN-then-RESULT
pattern, the Step 3 docker run synthesis requirement) live in
references/deploy-vss-detection-tracking-2d.md
under "Step N box content rule" — read those when rendering the
corresponding step.
| Phrase | Flow |
|---|---|
deploy rtvicv warehouse 2d with 4 streams and display | DEPLOY |
run smartcity gdino on gpu 1 | DEPLOY |
stop the perception container | TEARDOWN (deploy doc) |
rtvi-cv healthcheck failing | DEBUG (deploy doc + troubleshooting) |
add a stream to rtvi-cv | API USAGE |
is rtvi-cv ready on localhost:9000 | API USAGE |
get rtvi-cv metrics | API USAGE |
generate text embeddings via rtvi-cv | API USAGE |
bump:1
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionvss-deploy-detection-tracking-2dExecute the skills CLI command in your project's root directory to begin installation:
epx add nvidia/skills/vss-deploy-detection-tracking-2dFetches vss-deploy-detection-tracking-2d from nvidia/skills and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
.cursor/skills/vss-deploy-detection-tracking-2d
Restart Cursor to activate vss-deploy-detection-tracking-2d. Access via /vss-deploy-detection-tracking-2din your agent's command palette.
Learn more:View source on GitHubSkills CLI docsAbout CursorWhat are agent skills?
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
rag-blueprint
nvidia/skills · rag · same repo
holoscan-install-container
nvidia/skills · holoscan · same repo
holoscan-setup
nvidia/skills · holoscan · same repo
cuopt-numerical-optimization-api-python
nvidia/skills · cuopt · same repo
jetson-init-source
nvidia/skills · jetson · same repo
jetson-set-target
nvidia/skills · jetson · same repo
I recommend vss-deploy-detection-tracking-2d for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
Registry listing for vss-deploy-detection-tracking-2d matched our evaluation — installs cleanly and behaves as described in the markdown.
vss-deploy-detection-tracking-2d reduced setup friction for our internal harness; good balance of opinion and flexibility.
Keeps context tight: vss-deploy-detection-tracking-2d is the kind of skill you can hand to a new teammate without a long onboarding doc.
Registry listing for vss-deploy-detection-tracking-2d matched our evaluation — installs cleanly and behaves as described in the markdown.
vss-deploy-detection-tracking-2d fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
vss-deploy-detection-tracking-2d reduced setup friction for our internal harness; good balance of opinion and flexibility.
Registry listing for vss-deploy-detection-tracking-2d matched our evaluation — installs cleanly and behaves as described in the markdown.
vss-deploy-detection-tracking-2d is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
vss-deploy-detection-tracking-2d reduced setup friction for our internal harness; good balance of opinion and flexibility.
showing 1-10 of 72