# deepstream-dev

Teaches the agent to write NVIDIA DeepStream SDK code in Python: GStreamer pipelines, TensorRT inference, tracking and broker output.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 2400 installs · ★ 3735
- Author: NVIDIA CORPORATION
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/NVIDIA/skills/tree/HEAD/skills/deepstream-dev/SKILL.md
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/skills/deepstream-dev

## What it does

The skill gives the agent a set of DeepStream reference documents. It has to read them from `references/` before writing any code, because they hold the exact property names, the correct API calls and the usual failure points. Target stack: GStreamer 1.24.2, CUDA 13.1, TensorRT 10.14.1.48, NVIDIA driver 590+, Ubuntu 24.04 on x86_64 or ARM64/Jetson.

A pipeline runs Source → Stream Muxer → Inference → Tracker → OSD → Renderer. The tracker, secondary GIEs, analytics and `nvmsgbroker` stay out unless you ask for them, so the first result is a minimal working graph. Sources go through `nvurisrcbin`, which accepts RTSP, HTTP and `file://` paths. Object and frame metadata come back as one-shot iterators from `.frame_items` and `.object_items`; counting them with `len()` is a dead end.

Some mistakes cost hours. Request pads use the `sink_%u` template, never a literal pad name. Every sink in a tee split or with dynamic sources needs `async=0`, otherwise the pipeline parks in PAUSED and nothing renders. An ONNX model with dynamic axes fails inside TensorRT with `setDimensions: Error Code 3` unless the nvinfer config carries `infer-dims=C;H;W`. On WSL2 with Ubuntu 24 in Docker the skill drops display sinks entirely and writes an annotated MP4 instead, even when display was requested — a flag like `--no-display` does not switch it back.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add NVIDIA/skills --skill deepstream-dev -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/deepstream-dev/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/deepstream-dev/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add NVIDIA/skills --skill deepstream-dev -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/deepstream-dev/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add NVIDIA/skills --skill deepstream-dev -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/deepstream-dev/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install NVIDIA/skills deepstream-dev
```

2. **Manually: put the files in place**
- File: `.github/skills/deepstream-dev/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add NVIDIA/skills --skill deepstream-dev -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/NVIDIA/skills --path skills/deepstream-dev
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/deepstream-dev/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add NVIDIA/skills --skill deepstream-dev -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/NVIDIA/skills/tree/HEAD/skills/deepstream-dev/SKILL.md

## When to use it
- build a GStreamer video analytics pipeline without element name errors
- wire TensorRT inference and handle dynamic ONNX shapes
- add multi-object tracking only where frame-to-frame IDs matter
- push detection events to Kafka through `nvmsgbroker`
- get a working sample for Jetson or x86_64 with the right sink choice

## Example prompts
- Build a DeepStream Python pipeline: RTSP camera input, detection with `nvinfer`, output to a file.
- Add `nvtracker` to the pipeline so objects keep stable IDs across frames.
- Send detection events to Kafka through `nvmsgbroker` and split the stream with `tee`.

## Similar
- [skill-creator](https://affpapa.org/en/nevibecode/skills/skill-creator.md) — skill · 414180 installs
- [writing-for-agents](https://affpapa.org/en/nevibecode/skills/writing-for-agents.md) — skill · 466719 installs
- [media-use](https://affpapa.org/en/nevibecode/skills/media-use.md) — skill · 1100000 installs
- [mcp-builder](https://affpapa.org/en/nevibecode/skills/mcp-builder.md) — skill · 130949 installs
- [subagent-driven-development](https://affpapa.org/en/nevibecode/skills/subagent-driven-development.md) — skill · 237746 installs
- [orchestration](https://affpapa.org/en/nevibecode/skills/orchestration.md) — skill · 349800 installs

From the same set: [nvidia/skills](https://affpapa.org/en/nevibecode/by/nvidia/skills.md) — 178 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
