[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-deepstream-generate-pipeline":3,"mdc-vbx6ih-key":34,"related-repo-nvidia-deepstream-generate-pipeline":2606,"related-org-nvidia-deepstream-generate-pipeline":2708},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"deepstream-generate-pipeline","build DeepStream GStreamer inference pipelines","Build DeepStream GStreamer pipelines interactively. Use when the user asks about pipelines for video\u002Fimage inference, detection, tracking, or streaming — including natural phrases like 'pipeline to infer on image', 'run inference on video', 'detect objects in stream', 'save inference output', 'deepstream pipeline', 'gst-launch pipeline', 'process video with detection', 'build a pipeline', or any request involving GStreamer\u002FDeepStream elements (nvinfer, nvstreammux, nvtracker, etc.).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"Data Pipeline","data-pipeline","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Engineering","engineering",{"name":21,"slug":22,"type":15},"Video","video",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:28:40.698105","CC-BY-4.0 AND Apache-2.0",281,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fdeepstream-generate-pipeline","---\nname: deepstream-generate-pipeline\ndescription: Build DeepStream GStreamer pipelines interactively. Use when the user asks about pipelines for video\u002Fimage inference, detection, tracking, or streaming — including natural phrases like 'pipeline to infer on image', 'run inference on video', 'detect objects in stream', 'save inference output', 'deepstream pipeline', 'gst-launch pipeline', 'process video with detection', 'build a pipeline', or any request involving GStreamer\u002FDeepStream elements (nvinfer, nvstreammux, nvtracker, etc.).\nowner: NVIDIA CORPORATION\nservice: deepstream\nversion: 1.0.0\nreviewed: 2026-04-27\nlicense: CC-BY-4.0 AND Apache-2.0\n---\n\n# DeepStream Pipeline Builder\n\nGenerate ready-to-run `gst-launch-1.0` pipelines for NVIDIA DeepStream SDK by collecting pipeline requirements through an interactive questionnaire, then assembling the pipeline using a standalone BM25 retrieval backend with structural metadata boosting (similarity search over 270+ verified pipelines, zero external dependencies).\n\n## Prerequisites\n\n- **Python:** 3.8+ (stdlib only — no pip packages required)\n- **DeepStream SDK:** Installed at `\u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002F` (for `gst-inspect-1.0` validation and element verification)\n- **GStreamer:** `gst-launch-1.0` and `gst-inspect-1.0` on `PATH` (installed with DeepStream)\n- **Platform:** x86 dGPU (T4, A100, L40, RTX, etc.) or aarch64 — Jetson (Orin, Xavier, Nano) \u002F SBSA (Grace, GH200)\n\n## Usage Examples\n\n```text\n# Fully specified — skips most questions\ndetect and track on 4 rtsp streams and display on jetson\n\n# Partially specified — asks remaining questions\ngive me a pipeline to infer on an image\n\n# Minimal — asks all 7 questions\nbuild a pipeline\n```\n\n## Supported Configurations\n\n| Parameter | Options |\n| --- | --- |\n| **Input** | Local video (.mp4\u002F.h264\u002F.h265), local image (.jpg\u002F.png), RTSP stream, USB camera, test pattern |\n| **Inference** | None, primary (nvinfer), primary+secondary, with preprocessor, Triton (nvinferserver) |\n| **Tracker** | None, NvDCF, IOU, NvSORT, DeepSORT |\n| **Sink** | Display (dGPU\u002FJetson), save (JPG\u002FPNG\u002FMP4\u002FH264), RTSP out, fakesink |\n| **Platform** | x86 dGPU (T4, A100, L40, RTX, etc.) or aarch64 — Jetson (Orin, Xavier, Nano) \u002F SBSA (Grace, GH200) |\n| **Extras** | Resize, rotate\u002Fflip, crop, color format conversion |\n\n## Scripts\n\n| Script | Purpose |\n| --- | --- |\n| `scripts\u002Fgenerate_pipeline.py` | BM25 retrieval engine — scores and ranks pipelines from `data\u002Fdata.csv`. Supports `--format {json,compact,summary}` (default `json`) |\n| `scripts\u002Fvalidate_pipeline.py` | 4-stage validator: syntax, elements, properties, live parse. Supports `--format {json,summary}` (default `json`) |\n| `scripts\u002Flint_data.py` | Data quality linter for the pipeline CSV (`--fix` to auto-repair) |\n\n## Workflow\n\n### Step 1 — Collect Pipeline Requirements\n\n> **You MUST `Read references\u002Frequirement-extraction.md` before doing this step.**\n> It contains the query-inference table, compound-extraction examples, the full\n> `AskUserQuestion` question bank (with the default-first ordering contract), the\n> automatic-OSD and extras\u002Fflip-method rules, and the dynamic question-reduction\n> examples that this step depends on. Apply them exactly.\n\n**Order of operations:**\n\n1. **Infer everything you can from the query** using the inference table in `references\u002Frequirement-extraction.md`. The goal is to identify which of the 7 parameters (input source, num sources, inference, tracker, sink, platform, extras) the user has already specified.\n2. **Ask the user about the unknowns via `AskUserQuestion` in a single call.** Do **not** silently default tracker\u002Fsink\u002Fplatform\u002Fextras — these are real choices the user should make explicitly (display vs save, no tracker vs NvDCF, x86 dGPU vs aarch64 Jetson\u002FSBSA, etc.). Skip only the questions whose answer is already clear from the query.\n3. **Quote the inferred parameters back to the user** in the lead-in to the question call so they can see what you already extracted. Example: *\"From your query I have: 3 mp4 videos, primary inference. Just need a few more details:\"*\n\nFollow the inference table, question bank, and OSD\u002Fextras rules in\n`references\u002Frequirement-extraction.md` to decide which questions to ask and how to\nplace transform elements, then proceed to Step 2.\n\n### Step 2 — Build the Natural Language Query\n\nFrom the user's answers, construct a single descriptive query string. Follow this pattern:\n\n```text\nPlease provide a GStreamer pipeline that [operation] on [num_sources] [input_type] [input_detail] [tracker_detail] and [output_action] [platform_detail]\n```\n\n**Examples of constructed queries:**\n\n| User Selections | Constructed Query |\n| --- | --- |\n| Local video, 1 source, Primary detector, No tracker, Display, dGPU | \"Please provide a GStreamer pipeline that performs primary inference on a single mp4 video and displays the output\" |\n| RTSP, 4 sources, Primary+Secondary, NvDCF, Save MP4, dGPU | \"Please provide a GStreamer pipeline that performs primary and secondary inference with NvDCF tracker on 4 RTSP streams and saves output to MP4 file\" |\n| Local video, 2 sources, Primary with preprocessor, IOU, Display, Jetson | \"Please provide a GStreamer pipeline that performs preprocessing before primary inference with IOU tracker on 2 mp4 streams and displays the output on Jetson\" |\n| Local image, 1 source, None, No tracker, Save file, dGPU, Rotate 90° cw | \"Please provide a GStreamer pipeline that rotates a single jpg image 90° clockwise before processing and saves it to a file\" |\n| Local video, 3 sources, Primary detector, NvDCF, Save MP4, dGPU, Rotate 180° | \"Please provide a GStreamer pipeline that rotates 3 mp4 videos 180° before primary inference with NvDCF tracker and saves output to MP4 file\" |\n\n### Step 3 — Run the Pipeline Generator Script\n\nExecute the backend script with the constructed query and user parameters:\n\n```bash\npython3 \u003Cskill-path>\u002Fscripts\u002Fgenerate_pipeline.py \\\n  --query \"\u003Cconstructed_query>\" \\\n  --source-type \"\u003CLocal video file|Local image file|RTSP stream|USB camera|Test pattern>\" \\\n  --num-sources \u003CN> \\\n  --inference \"\u003CNone|primary|primary+secondary|primary+preprocess|primary+secondary+preprocess|primary-triton|primary+secondary-triton>\" \\\n  --tracker \"\u003Cnone|NvDCF|IOU|NvSORT|DeepSORT>\" \\\n  --sink \"\u003Cdisplay|display-jetson|save-jpg|save-png|save-mp4|save-h264|rtsp-out|fakesink>\" \\\n  --platform \"\u003CdGPU|Jetson|SBSA>\" \\\n  --extras \"\u003Cnone|resize|rotate|crop|color-convert|osd>\" \\\n  --format compact\n```\n\n> **Always pass `--format compact`.** The `compact` mode returns only confidence + the top retrieved pipeline (~25 lines), instead of dumping all 10 retrievals as ~150 lines of JSON in the chat. The `json` mode (default for backward compat) is only useful when debugging the retriever directly. A `summary` mode (single human-readable line) also exists for non-Claude callers.\n\nThe script will (zero external dependencies — pure Python stdlib):\n\n1. Load the pipeline dataset (270+ verified DeepStream pipelines)\n2. Extract structural metadata from each pipeline (platform, source type, sink type, inference mode, tracker, stream count)\n3. Score with BM25 (document-length-normalized) + domain-specific synonym expansion on both queries and documents\n4. Apply structural boosting — results matching the user's platform\u002Fsource\u002Fsink\u002Finference get boosted, mismatches get penalized\n5. Return the top-K results as JSON with a `confidence` field (`high`\u002F`medium`\u002F`low`) based on the top score\n6. Claude uses these retrieved examples + the assembly rules below to construct the final pipeline\n\nWhen `confidence` is `low`, rely more heavily on the assembly rules below rather than the retrieved examples.\n\n### Step 4 — Validate the Pipeline\n\nBefore presenting, run the validation script to catch syntax errors, unknown elements, and linking issues:\n\n```bash\npython3 \u003Cskill-path>\u002Fscripts\u002Fvalidate_pipeline.py \"\u003Cassembled_pipeline>\" --format summary\n```\n\n> **Always pass `--format summary`.** Summary prints a single status line (e.g. `valid · 11 elements · 0 warnings · live-parse skipped (multi-stream)`), with errors\u002Fwarnings indented underneath only if present. The default `json` mode emits ~40 lines of structured output and is only useful for programmatic callers.\n\nThe validator performs 4 checks:\n\n1. **Syntax check** — unbalanced quotes, empty pipe segments, missing source\u002Fsink\n2. **Element check** — verifies each element exists via `gst-inspect-1.0`\n3. **Property check** — validates known properties for DeepStream elements\n4. **Live parse check** — uses `gst-launch-1.0` itself to construct the pipeline graph (with fakesrc\u002Ffakesink substituted), catching linking errors and pad mismatches. **Automatically skipped for multi-stream pipelines** (those with named pad refs like `m.sink_0`) since fakesrc cannot negotiate caps through named pads.\n\nIf validation fails (`\"valid\": false`), fix the errors and re-validate before presenting. **Limit validation retries to a maximum of 2 attempts** — if the pipeline still fails after 2 fixes, present it as-is (the remaining checks already cover syntax, element, property, and structural correctness). If there are only warnings, present the pipeline but mention the warnings to the user.\n\n### Step 5 — Present the Pipeline\n\n#### 5.1 — Output format (THE ONLY ACCEPTED FORM)\n\nYour response **must** be exactly five blocks, in this order:\n\n1. One-line **status badge** (validation + confidence)\n2. **Single bash code block** containing the full `gst-launch-1.0 -e …` command with concrete absolute paths, on **one line** (no `\\` continuations, no shell variables, no shell wrapper)\n3. **Breakdown table** grouped by stage\n4. **Suggestions** bullet list\n5. (only if pre-flight failed) a `⚠` line above the status badge stating which default path is missing\n\nThat is the ONLY accepted output shape for this step. The Section 5.3 template in `references\u002Foutput-format.md` is the literal template — match it.\n\n#### 5.2 — Pre-flight check (run before composing the response)\n\nRun one `Bash` `ls` over the default paths the pipeline will reference (sample video, PGIE config, tracker lib\u002Fconfig). The result tells you whether to mark the badge with `⚠ default path not found: \u003Cpath>` and bump the matching \"Use your own …\" suggestion to the top.\n\n```bash\nls \u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fstreams\u002Fsample_1080p_h264.mp4 \\\n   \u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fconfigs\u002Fdeepstream-app\u002Fconfig_infer_primary.txt \\\n   2>&1\n```\n\n#### 5.3 \u002F 5.4 — Worked example & forbidden anti-patterns\n\n> **You MUST `Read references\u002Foutput-format.md` before composing this response.** It contains the literal Section 5.3 template your output must match exactly, and the Section 5.4 gallery of forbidden output shapes (heredoc wrappers, shell-var indirection, `\\` line-continuations, stray \"Run it\" lines, `Write`-to-script). Mirror Section 5.3; never emit any Section 5.4 form.\n\n#### 5.5 — Self-check before sending the response\n\nBefore you emit your reply, mentally tick each box. If any check fails, rewrite the response.\n\n- [ ] The pipeline is on **exactly one line** inside a single ```` ```bash ```` code block.\n- [ ] The pipeline begins with `gst-launch-1.0 -e` and contains only literal absolute paths (e.g. `\u002Fopt\u002Fnvidia\u002Fdeepstream\u002F...`) — no `$VAR`, no `${VAR:-default}`, no `cat >`, no `EOF`, no `\\` line continuations.\n- [ ] The response does **not** contain any of: `cat > \u002Ftmp\u002Fpipeline.sh`, `bash \u002Ftmp\u002Fpipeline.sh`, `\u003C\u003C'EOF'`, `${VAR:-`.\n- [ ] The response does **not** call the `Write` tool. (Save-to-file is offered as a *suggestion bullet*, not an action.)\n- [ ] The breakdown table is grouped by stage (Source \u002F Mux \u002F Inference \u002F Tracking \u002F Composition \u002F Render — adapt names to the pipeline's actual stages, e.g. add an `Encode\u002FMux` row for file sinks).\n- [ ] The \"Save it to a script?\" line appears in the Suggestions list — never as a primary action.\n\n#### 5.6 — Pre-flight failure variant\n\nIf the Section 5.2 `ls` reported one or more missing default paths, prepend a `⚠` line above the status badge and bump the matching \"Use your own …\" suggestion to the top:\n\n````markdown\n⚠ default path not found: `\u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fstreams\u002Fsample_1080p_h264.mp4` — substitute your own video path before running\n✓ Validated · 11 elements · 0 warnings · confidence: HIGH\n\n```bash\ngst-launch-1.0 -e filesrc location=\u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fstreams\u002Fsample_1080p_h264.mp4 ! …\n```\n\n[breakdown + suggestions as in Section 5.3, with the \"Use your own video\" suggestion bumped to the top]\n````\n\n> **On length:** 5–8 stream pipelines run long when on a single line. That is correct and intended — chat clients render bash code blocks faithfully and copy reproduces them correctly. Long ≠ split.\n\n### Step 6 — Offer Refinement\n\nAfter presenting the pipeline, ask the user if they want to adjust anything:\n\n> Want me to modify anything? For example:\n>\n> - Change the number of streams\n> - Add\u002Fremove tracker or secondary inference\n> - Switch between display and file output\n> - Change the platform (x86 dGPU \u002F aarch64 Jetson \u002F SBSA)\n\nIf the user requests changes, go back to **Step 2** with updated parameters — do NOT re-ask all 7 questions. Only ask about the specific parameter that changed, or just apply the change directly if it's clear.\n\n### Step 6.5 — Optional: Save Pipeline to a Script\n\nOnly do this step when the user explicitly asks (e.g. *\"save it\"*, *\"save to pipeline.sh\"*, *\"write it to a file\"*, *\"put it in ~\u002Frun.sh\"*). Do **not** create the file proactively — Step 5 always shows the concrete pipeline in chat for direct copy-paste; saving is a follow-up convenience.\n\n1. **Filename:** Default to `\u002Ftmp\u002Fpipeline.sh` if the user just says *\"save it\"*. Use the exact path the user named otherwise (e.g. `~\u002Frun.sh`, `scripts\u002Fdemo.sh`).\n2. **File contents:** Two lines — shebang + the same single-line pipeline shown in chat (concrete absolute paths, no shell vars). Keep them in sync — what the user runs from the file is bit-for-bit identical to what they could have copy-pasted.\n\n   ```bash\n   #!\u002Fusr\u002Fbin\u002Fenv bash\n   gst-launch-1.0 -e filesrc location=\u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fstreams\u002Fsample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder ! m.sink_0 … ! nvdsosd ! nveglglessink\n   ```\n\n   Use the `Write` tool to create the file.\n3. **Confirm to user** with the run command:\n\n   > Saved to `\u003Cpath>`. Run it with:\n   >\n   > ```bash\n   > bash \u003Cpath>\n   > ```\n\n---\n\n## Pipeline Assembly Rules\n\nWhen the script is not available or fails, assemble the pipeline using the rules in [references\u002Fassembly-rules.md](references\u002Fassembly-rules.md). These rules cover source elements, multi-stream patterns, inference chains, tracker configs, sink elements, and extra operations. They also serve as validation for script output.\n\n---\n\n## Error Handling\n\n| Failure | Cause | Recovery |\n| --- | --- | --- |\n| `generate_pipeline.py` returns `confidence: low` | Query doesn't match any pipeline in the dataset closely | Rely on the assembly rules in this skill instead of retrieved examples |\n| `validate_pipeline.py` reports unknown element | GStreamer\u002FDeepStream not installed or not on `PATH` | Install DeepStream SDK; confirm `gst-inspect-1.0 nvinfer` works |\n| Validation fails after 2 retries | Unusual element combination or linking issue | Present the pipeline as-is with a warning — syntax\u002Felement\u002Fproperty checks still passed |\n| Script not found at `\u003Cskill-path>\u002Fscripts\u002F` | Skill not installed correctly or path misconfigured | Verify the skill directory is symlinked into `.claude\u002Fskills\u002F` or `.cursor\u002Fskills\u002F` |\n\n## Testing\n\nRun the test suite to verify retrieval quality and validator correctness:\n\n```bash\npython3 -m unittest discover -s \u003Cskill-path>\u002Ftests -v\n```\n\nThe suite includes:\n\n- **Unit tests** for the BM25 retriever (tokenizer, synonym expansion, metadata extraction, scoring)\n- **Unit tests** for the validator (syntax, structure, property, named-pad checks)\n- **Golden regression tests** — 20+ query→expected-result pairs ensuring retrieval quality doesn't regress\n- **Data quality linter** — checks the CSV for duplicates, syntax issues, and structural bugs:\n\n```bash\npython3 \u003Cskill-path>\u002Fscripts\u002Flint_data.py          # report issues\npython3 \u003Cskill-path>\u002Fscripts\u002Flint_data.py --fix     # auto-fix and overwrite\n```\n\n---\n\n## Security, Limitations & Notes\n\nSecurity posture, known limitations, and operational notes are documented in `references\u002Fsecurity-and-limitations.md`. Read that file when you need details on subprocess safety, input validation, platform\u002FSDK requirements, the multi-stream dry-run caveat, or sample-path\u002Fconfig-file reminders.\n\n",{"data":35,"body":40},{"name":4,"description":6,"owner":36,"service":37,"version":38,"reviewed":39,"license":26},"NVIDIA CORPORATION","deepstream","1.0.0","2026-04-27",{"type":41,"children":42},"root",[43,52,67,74,158,164,176,182,306,312,430,436,443,473,481,543,555,561,566,575,583,670,676,681,959,1003,1008,1072,1091,1097,1102,1160,1194,1199,1269,1289,1295,1302,1314,1395,1408,1414,1442,1485,1491,1526,1532,1537,1729,1735,1754,1875,1888,1894,1899,1930,1942,1948,1984,2201,2205,2211,2224,2227,2233,2383,2389,2394,2454,2459,2501,2578,2581,2587,2600],{"type":44,"tag":45,"props":46,"children":48},"element","h1",{"id":47},"deepstream-pipeline-builder",[49],{"type":50,"value":51},"text","DeepStream Pipeline Builder",{"type":44,"tag":53,"props":54,"children":55},"p",{},[56,58,65],{"type":50,"value":57},"Generate ready-to-run ",{"type":44,"tag":59,"props":60,"children":62},"code",{"className":61},[],[63],{"type":50,"value":64},"gst-launch-1.0",{"type":50,"value":66}," pipelines for NVIDIA DeepStream SDK by collecting pipeline requirements through an interactive questionnaire, then assembling the pipeline using a standalone BM25 retrieval backend with structural metadata boosting (similarity search over 270+ verified pipelines, zero external dependencies).",{"type":44,"tag":68,"props":69,"children":71},"h2",{"id":70},"prerequisites",[72],{"type":50,"value":73},"Prerequisites",{"type":44,"tag":75,"props":76,"children":77},"ul",{},[78,90,116,148],{"type":44,"tag":79,"props":80,"children":81},"li",{},[82,88],{"type":44,"tag":83,"props":84,"children":85},"strong",{},[86],{"type":50,"value":87},"Python:",{"type":50,"value":89}," 3.8+ (stdlib only — no pip packages required)",{"type":44,"tag":79,"props":91,"children":92},{},[93,98,100,106,108,114],{"type":44,"tag":83,"props":94,"children":95},{},[96],{"type":50,"value":97},"DeepStream SDK:",{"type":50,"value":99}," Installed at ",{"type":44,"tag":59,"props":101,"children":103},{"className":102},[],[104],{"type":50,"value":105},"\u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002F",{"type":50,"value":107}," (for ",{"type":44,"tag":59,"props":109,"children":111},{"className":110},[],[112],{"type":50,"value":113},"gst-inspect-1.0",{"type":50,"value":115}," validation and element verification)",{"type":44,"tag":79,"props":117,"children":118},{},[119,124,126,131,133,138,140,146],{"type":44,"tag":83,"props":120,"children":121},{},[122],{"type":50,"value":123},"GStreamer:",{"type":50,"value":125}," ",{"type":44,"tag":59,"props":127,"children":129},{"className":128},[],[130],{"type":50,"value":64},{"type":50,"value":132}," and ",{"type":44,"tag":59,"props":134,"children":136},{"className":135},[],[137],{"type":50,"value":113},{"type":50,"value":139}," on ",{"type":44,"tag":59,"props":141,"children":143},{"className":142},[],[144],{"type":50,"value":145},"PATH",{"type":50,"value":147}," (installed with DeepStream)",{"type":44,"tag":79,"props":149,"children":150},{},[151,156],{"type":44,"tag":83,"props":152,"children":153},{},[154],{"type":50,"value":155},"Platform:",{"type":50,"value":157}," x86 dGPU (T4, A100, L40, RTX, etc.) or aarch64 — Jetson (Orin, Xavier, Nano) \u002F SBSA (Grace, GH200)",{"type":44,"tag":68,"props":159,"children":161},{"id":160},"usage-examples",[162],{"type":50,"value":163},"Usage Examples",{"type":44,"tag":165,"props":166,"children":171},"pre",{"className":167,"code":169,"language":50,"meta":170},[168],"language-text","# Fully specified — skips most questions\ndetect and track on 4 rtsp streams and display on jetson\n\n# Partially specified — asks remaining questions\ngive me a pipeline to infer on an image\n\n# Minimal — asks all 7 questions\nbuild a pipeline\n","",[172],{"type":44,"tag":59,"props":173,"children":174},{"__ignoreMap":170},[175],{"type":50,"value":169},{"type":44,"tag":68,"props":177,"children":179},{"id":178},"supported-configurations",[180],{"type":50,"value":181},"Supported Configurations",{"type":44,"tag":183,"props":184,"children":185},"table",{},[186,205],{"type":44,"tag":187,"props":188,"children":189},"thead",{},[190],{"type":44,"tag":191,"props":192,"children":193},"tr",{},[194,200],{"type":44,"tag":195,"props":196,"children":197},"th",{},[198],{"type":50,"value":199},"Parameter",{"type":44,"tag":195,"props":201,"children":202},{},[203],{"type":50,"value":204},"Options",{"type":44,"tag":206,"props":207,"children":208},"tbody",{},[209,226,242,258,274,290],{"type":44,"tag":191,"props":210,"children":211},{},[212,221],{"type":44,"tag":213,"props":214,"children":215},"td",{},[216],{"type":44,"tag":83,"props":217,"children":218},{},[219],{"type":50,"value":220},"Input",{"type":44,"tag":213,"props":222,"children":223},{},[224],{"type":50,"value":225},"Local video (.mp4\u002F.h264\u002F.h265), local image (.jpg\u002F.png), RTSP stream, USB camera, test pattern",{"type":44,"tag":191,"props":227,"children":228},{},[229,237],{"type":44,"tag":213,"props":230,"children":231},{},[232],{"type":44,"tag":83,"props":233,"children":234},{},[235],{"type":50,"value":236},"Inference",{"type":44,"tag":213,"props":238,"children":239},{},[240],{"type":50,"value":241},"None, primary (nvinfer), primary+secondary, with preprocessor, Triton (nvinferserver)",{"type":44,"tag":191,"props":243,"children":244},{},[245,253],{"type":44,"tag":213,"props":246,"children":247},{},[248],{"type":44,"tag":83,"props":249,"children":250},{},[251],{"type":50,"value":252},"Tracker",{"type":44,"tag":213,"props":254,"children":255},{},[256],{"type":50,"value":257},"None, NvDCF, IOU, NvSORT, DeepSORT",{"type":44,"tag":191,"props":259,"children":260},{},[261,269],{"type":44,"tag":213,"props":262,"children":263},{},[264],{"type":44,"tag":83,"props":265,"children":266},{},[267],{"type":50,"value":268},"Sink",{"type":44,"tag":213,"props":270,"children":271},{},[272],{"type":50,"value":273},"Display (dGPU\u002FJetson), save (JPG\u002FPNG\u002FMP4\u002FH264), RTSP out, fakesink",{"type":44,"tag":191,"props":275,"children":276},{},[277,285],{"type":44,"tag":213,"props":278,"children":279},{},[280],{"type":44,"tag":83,"props":281,"children":282},{},[283],{"type":50,"value":284},"Platform",{"type":44,"tag":213,"props":286,"children":287},{},[288],{"type":50,"value":289},"x86 dGPU (T4, A100, L40, RTX, etc.) or aarch64 — Jetson (Orin, Xavier, Nano) \u002F SBSA (Grace, GH200)",{"type":44,"tag":191,"props":291,"children":292},{},[293,301],{"type":44,"tag":213,"props":294,"children":295},{},[296],{"type":44,"tag":83,"props":297,"children":298},{},[299],{"type":50,"value":300},"Extras",{"type":44,"tag":213,"props":302,"children":303},{},[304],{"type":50,"value":305},"Resize, rotate\u002Fflip, crop, color format conversion",{"type":44,"tag":68,"props":307,"children":309},{"id":308},"scripts",[310],{"type":50,"value":311},"Scripts",{"type":44,"tag":183,"props":313,"children":314},{},[315,331],{"type":44,"tag":187,"props":316,"children":317},{},[318],{"type":44,"tag":191,"props":319,"children":320},{},[321,326],{"type":44,"tag":195,"props":322,"children":323},{},[324],{"type":50,"value":325},"Script",{"type":44,"tag":195,"props":327,"children":328},{},[329],{"type":50,"value":330},"Purpose",{"type":44,"tag":206,"props":332,"children":333},{},[334,375,405],{"type":44,"tag":191,"props":335,"children":336},{},[337,346],{"type":44,"tag":213,"props":338,"children":339},{},[340],{"type":44,"tag":59,"props":341,"children":343},{"className":342},[],[344],{"type":50,"value":345},"scripts\u002Fgenerate_pipeline.py",{"type":44,"tag":213,"props":347,"children":348},{},[349,351,357,359,365,367,373],{"type":50,"value":350},"BM25 retrieval engine — scores and ranks pipelines from ",{"type":44,"tag":59,"props":352,"children":354},{"className":353},[],[355],{"type":50,"value":356},"data\u002Fdata.csv",{"type":50,"value":358},". Supports ",{"type":44,"tag":59,"props":360,"children":362},{"className":361},[],[363],{"type":50,"value":364},"--format {json,compact,summary}",{"type":50,"value":366}," (default ",{"type":44,"tag":59,"props":368,"children":370},{"className":369},[],[371],{"type":50,"value":372},"json",{"type":50,"value":374},")",{"type":44,"tag":191,"props":376,"children":377},{},[378,387],{"type":44,"tag":213,"props":379,"children":380},{},[381],{"type":44,"tag":59,"props":382,"children":384},{"className":383},[],[385],{"type":50,"value":386},"scripts\u002Fvalidate_pipeline.py",{"type":44,"tag":213,"props":388,"children":389},{},[390,392,398,399,404],{"type":50,"value":391},"4-stage validator: syntax, elements, properties, live parse. Supports ",{"type":44,"tag":59,"props":393,"children":395},{"className":394},[],[396],{"type":50,"value":397},"--format {json,summary}",{"type":50,"value":366},{"type":44,"tag":59,"props":400,"children":402},{"className":401},[],[403],{"type":50,"value":372},{"type":50,"value":374},{"type":44,"tag":191,"props":406,"children":407},{},[408,417],{"type":44,"tag":213,"props":409,"children":410},{},[411],{"type":44,"tag":59,"props":412,"children":414},{"className":413},[],[415],{"type":50,"value":416},"scripts\u002Flint_data.py",{"type":44,"tag":213,"props":418,"children":419},{},[420,422,428],{"type":50,"value":421},"Data quality linter for the pipeline CSV (",{"type":44,"tag":59,"props":423,"children":425},{"className":424},[],[426],{"type":50,"value":427},"--fix",{"type":50,"value":429}," to auto-repair)",{"type":44,"tag":68,"props":431,"children":433},{"id":432},"workflow",[434],{"type":50,"value":435},"Workflow",{"type":44,"tag":437,"props":438,"children":440},"h3",{"id":439},"step-1-collect-pipeline-requirements",[441],{"type":50,"value":442},"Step 1 — Collect Pipeline Requirements",{"type":44,"tag":444,"props":445,"children":446},"blockquote",{},[447],{"type":44,"tag":53,"props":448,"children":449},{},[450,463,465,471],{"type":44,"tag":83,"props":451,"children":452},{},[453,455,461],{"type":50,"value":454},"You MUST ",{"type":44,"tag":59,"props":456,"children":458},{"className":457},[],[459],{"type":50,"value":460},"Read references\u002Frequirement-extraction.md",{"type":50,"value":462}," before doing this step.",{"type":50,"value":464},"\nIt contains the query-inference table, compound-extraction examples, the full\n",{"type":44,"tag":59,"props":466,"children":468},{"className":467},[],[469],{"type":50,"value":470},"AskUserQuestion",{"type":50,"value":472}," question bank (with the default-first ordering contract), the\nautomatic-OSD and extras\u002Fflip-method rules, and the dynamic question-reduction\nexamples that this step depends on. Apply them exactly.",{"type":44,"tag":53,"props":474,"children":475},{},[476],{"type":44,"tag":83,"props":477,"children":478},{},[479],{"type":50,"value":480},"Order of operations:",{"type":44,"tag":482,"props":483,"children":484},"ol",{},[485,503,527],{"type":44,"tag":79,"props":486,"children":487},{},[488,493,495,501],{"type":44,"tag":83,"props":489,"children":490},{},[491],{"type":50,"value":492},"Infer everything you can from the query",{"type":50,"value":494}," using the inference table in ",{"type":44,"tag":59,"props":496,"children":498},{"className":497},[],[499],{"type":50,"value":500},"references\u002Frequirement-extraction.md",{"type":50,"value":502},". The goal is to identify which of the 7 parameters (input source, num sources, inference, tracker, sink, platform, extras) the user has already specified.",{"type":44,"tag":79,"props":504,"children":505},{},[506,518,520,525],{"type":44,"tag":83,"props":507,"children":508},{},[509,511,516],{"type":50,"value":510},"Ask the user about the unknowns via ",{"type":44,"tag":59,"props":512,"children":514},{"className":513},[],[515],{"type":50,"value":470},{"type":50,"value":517}," in a single call.",{"type":50,"value":519}," Do ",{"type":44,"tag":83,"props":521,"children":522},{},[523],{"type":50,"value":524},"not",{"type":50,"value":526}," silently default tracker\u002Fsink\u002Fplatform\u002Fextras — these are real choices the user should make explicitly (display vs save, no tracker vs NvDCF, x86 dGPU vs aarch64 Jetson\u002FSBSA, etc.). Skip only the questions whose answer is already clear from the query.",{"type":44,"tag":79,"props":528,"children":529},{},[530,535,537],{"type":44,"tag":83,"props":531,"children":532},{},[533],{"type":50,"value":534},"Quote the inferred parameters back to the user",{"type":50,"value":536}," in the lead-in to the question call so they can see what you already extracted. Example: ",{"type":44,"tag":538,"props":539,"children":540},"em",{},[541],{"type":50,"value":542},"\"From your query I have: 3 mp4 videos, primary inference. Just need a few more details:\"",{"type":44,"tag":53,"props":544,"children":545},{},[546,548,553],{"type":50,"value":547},"Follow the inference table, question bank, and OSD\u002Fextras rules in\n",{"type":44,"tag":59,"props":549,"children":551},{"className":550},[],[552],{"type":50,"value":500},{"type":50,"value":554}," to decide which questions to ask and how to\nplace transform elements, then proceed to Step 2.",{"type":44,"tag":437,"props":556,"children":558},{"id":557},"step-2-build-the-natural-language-query",[559],{"type":50,"value":560},"Step 2 — Build the Natural Language Query",{"type":44,"tag":53,"props":562,"children":563},{},[564],{"type":50,"value":565},"From the user's answers, construct a single descriptive query string. Follow this pattern:",{"type":44,"tag":165,"props":567,"children":570},{"className":568,"code":569,"language":50,"meta":170},[168],"Please provide a GStreamer pipeline that [operation] on [num_sources] [input_type] [input_detail] [tracker_detail] and [output_action] [platform_detail]\n",[571],{"type":44,"tag":59,"props":572,"children":573},{"__ignoreMap":170},[574],{"type":50,"value":569},{"type":44,"tag":53,"props":576,"children":577},{},[578],{"type":44,"tag":83,"props":579,"children":580},{},[581],{"type":50,"value":582},"Examples of constructed queries:",{"type":44,"tag":183,"props":584,"children":585},{},[586,602],{"type":44,"tag":187,"props":587,"children":588},{},[589],{"type":44,"tag":191,"props":590,"children":591},{},[592,597],{"type":44,"tag":195,"props":593,"children":594},{},[595],{"type":50,"value":596},"User Selections",{"type":44,"tag":195,"props":598,"children":599},{},[600],{"type":50,"value":601},"Constructed Query",{"type":44,"tag":206,"props":603,"children":604},{},[605,618,631,644,657],{"type":44,"tag":191,"props":606,"children":607},{},[608,613],{"type":44,"tag":213,"props":609,"children":610},{},[611],{"type":50,"value":612},"Local video, 1 source, Primary detector, No tracker, Display, dGPU",{"type":44,"tag":213,"props":614,"children":615},{},[616],{"type":50,"value":617},"\"Please provide a GStreamer pipeline that performs primary inference on a single mp4 video and displays the output\"",{"type":44,"tag":191,"props":619,"children":620},{},[621,626],{"type":44,"tag":213,"props":622,"children":623},{},[624],{"type":50,"value":625},"RTSP, 4 sources, Primary+Secondary, NvDCF, Save MP4, dGPU",{"type":44,"tag":213,"props":627,"children":628},{},[629],{"type":50,"value":630},"\"Please provide a GStreamer pipeline that performs primary and secondary inference with NvDCF tracker on 4 RTSP streams and saves output to MP4 file\"",{"type":44,"tag":191,"props":632,"children":633},{},[634,639],{"type":44,"tag":213,"props":635,"children":636},{},[637],{"type":50,"value":638},"Local video, 2 sources, Primary with preprocessor, IOU, Display, Jetson",{"type":44,"tag":213,"props":640,"children":641},{},[642],{"type":50,"value":643},"\"Please provide a GStreamer pipeline that performs preprocessing before primary inference with IOU tracker on 2 mp4 streams and displays the output on Jetson\"",{"type":44,"tag":191,"props":645,"children":646},{},[647,652],{"type":44,"tag":213,"props":648,"children":649},{},[650],{"type":50,"value":651},"Local image, 1 source, None, No tracker, Save file, dGPU, Rotate 90° cw",{"type":44,"tag":213,"props":653,"children":654},{},[655],{"type":50,"value":656},"\"Please provide a GStreamer pipeline that rotates a single jpg image 90° clockwise before processing and saves it to a file\"",{"type":44,"tag":191,"props":658,"children":659},{},[660,665],{"type":44,"tag":213,"props":661,"children":662},{},[663],{"type":50,"value":664},"Local video, 3 sources, Primary detector, NvDCF, Save MP4, dGPU, Rotate 180°",{"type":44,"tag":213,"props":666,"children":667},{},[668],{"type":50,"value":669},"\"Please provide a GStreamer pipeline that rotates 3 mp4 videos 180° before primary inference with NvDCF tracker and saves output to MP4 file\"",{"type":44,"tag":437,"props":671,"children":673},{"id":672},"step-3-run-the-pipeline-generator-script",[674],{"type":50,"value":675},"Step 3 — Run the Pipeline Generator Script",{"type":44,"tag":53,"props":677,"children":678},{},[679],{"type":50,"value":680},"Execute the backend script with the constructed query and user parameters:",{"type":44,"tag":165,"props":682,"children":686},{"className":683,"code":684,"language":685,"meta":170,"style":170},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python3 \u003Cskill-path>\u002Fscripts\u002Fgenerate_pipeline.py \\\n  --query \"\u003Cconstructed_query>\" \\\n  --source-type \"\u003CLocal video file|Local image file|RTSP stream|USB camera|Test pattern>\" \\\n  --num-sources \u003CN> \\\n  --inference \"\u003CNone|primary|primary+secondary|primary+preprocess|primary+secondary+preprocess|primary-triton|primary+secondary-triton>\" \\\n  --tracker \"\u003Cnone|NvDCF|IOU|NvSORT|DeepSORT>\" \\\n  --sink \"\u003Cdisplay|display-jetson|save-jpg|save-png|save-mp4|save-h264|rtsp-out|fakesink>\" \\\n  --platform \"\u003CdGPU|Jetson|SBSA>\" \\\n  --extras \"\u003Cnone|resize|rotate|crop|color-convert|osd>\" \\\n  --format compact\n","bash",[687],{"type":44,"tag":59,"props":688,"children":689},{"__ignoreMap":170},[690,735,763,789,815,841,867,893,919,945],{"type":44,"tag":691,"props":692,"children":695},"span",{"class":693,"line":694},"line",1,[696,702,708,714,720,725,730],{"type":44,"tag":691,"props":697,"children":699},{"style":698},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[700],{"type":50,"value":701},"python3",{"type":44,"tag":691,"props":703,"children":705},{"style":704},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[706],{"type":50,"value":707}," \u003C",{"type":44,"tag":691,"props":709,"children":711},{"style":710},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[712],{"type":50,"value":713},"skill-pat",{"type":44,"tag":691,"props":715,"children":717},{"style":716},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[718],{"type":50,"value":719},"h",{"type":44,"tag":691,"props":721,"children":722},{"style":704},[723],{"type":50,"value":724},">",{"type":44,"tag":691,"props":726,"children":727},{"style":710},[728],{"type":50,"value":729},"\u002Fscripts\u002Fgenerate_pipeline.py",{"type":44,"tag":691,"props":731,"children":732},{"style":716},[733],{"type":50,"value":734}," \\\n",{"type":44,"tag":691,"props":736,"children":738},{"class":693,"line":737},2,[739,744,749,754,759],{"type":44,"tag":691,"props":740,"children":741},{"style":710},[742],{"type":50,"value":743},"  --query",{"type":44,"tag":691,"props":745,"children":746},{"style":704},[747],{"type":50,"value":748}," \"",{"type":44,"tag":691,"props":750,"children":751},{"style":710},[752],{"type":50,"value":753},"\u003Cconstructed_query>",{"type":44,"tag":691,"props":755,"children":756},{"style":704},[757],{"type":50,"value":758},"\"",{"type":44,"tag":691,"props":760,"children":761},{"style":716},[762],{"type":50,"value":734},{"type":44,"tag":691,"props":764,"children":766},{"class":693,"line":765},3,[767,772,776,781,785],{"type":44,"tag":691,"props":768,"children":769},{"style":710},[770],{"type":50,"value":771},"  --source-type",{"type":44,"tag":691,"props":773,"children":774},{"style":704},[775],{"type":50,"value":748},{"type":44,"tag":691,"props":777,"children":778},{"style":710},[779],{"type":50,"value":780},"\u003CLocal video file|Local image file|RTSP stream|USB camera|Test pattern>",{"type":44,"tag":691,"props":782,"children":783},{"style":704},[784],{"type":50,"value":758},{"type":44,"tag":691,"props":786,"children":787},{"style":716},[788],{"type":50,"value":734},{"type":44,"tag":691,"props":790,"children":792},{"class":693,"line":791},4,[793,798,802,807,811],{"type":44,"tag":691,"props":794,"children":795},{"style":710},[796],{"type":50,"value":797},"  --num-sources",{"type":44,"tag":691,"props":799,"children":800},{"style":704},[801],{"type":50,"value":707},{"type":44,"tag":691,"props":803,"children":804},{"style":716},[805],{"type":50,"value":806},"N",{"type":44,"tag":691,"props":808,"children":809},{"style":704},[810],{"type":50,"value":724},{"type":44,"tag":691,"props":812,"children":813},{"style":716},[814],{"type":50,"value":734},{"type":44,"tag":691,"props":816,"children":818},{"class":693,"line":817},5,[819,824,828,833,837],{"type":44,"tag":691,"props":820,"children":821},{"style":710},[822],{"type":50,"value":823},"  --inference",{"type":44,"tag":691,"props":825,"children":826},{"style":704},[827],{"type":50,"value":748},{"type":44,"tag":691,"props":829,"children":830},{"style":710},[831],{"type":50,"value":832},"\u003CNone|primary|primary+secondary|primary+preprocess|primary+secondary+preprocess|primary-triton|primary+secondary-triton>",{"type":44,"tag":691,"props":834,"children":835},{"style":704},[836],{"type":50,"value":758},{"type":44,"tag":691,"props":838,"children":839},{"style":716},[840],{"type":50,"value":734},{"type":44,"tag":691,"props":842,"children":844},{"class":693,"line":843},6,[845,850,854,859,863],{"type":44,"tag":691,"props":846,"children":847},{"style":710},[848],{"type":50,"value":849},"  --tracker",{"type":44,"tag":691,"props":851,"children":852},{"style":704},[853],{"type":50,"value":748},{"type":44,"tag":691,"props":855,"children":856},{"style":710},[857],{"type":50,"value":858},"\u003Cnone|NvDCF|IOU|NvSORT|DeepSORT>",{"type":44,"tag":691,"props":860,"children":861},{"style":704},[862],{"type":50,"value":758},{"type":44,"tag":691,"props":864,"children":865},{"style":716},[866],{"type":50,"value":734},{"type":44,"tag":691,"props":868,"children":870},{"class":693,"line":869},7,[871,876,880,885,889],{"type":44,"tag":691,"props":872,"children":873},{"style":710},[874],{"type":50,"value":875},"  --sink",{"type":44,"tag":691,"props":877,"children":878},{"style":704},[879],{"type":50,"value":748},{"type":44,"tag":691,"props":881,"children":882},{"style":710},[883],{"type":50,"value":884},"\u003Cdisplay|display-jetson|save-jpg|save-png|save-mp4|save-h264|rtsp-out|fakesink>",{"type":44,"tag":691,"props":886,"children":887},{"style":704},[888],{"type":50,"value":758},{"type":44,"tag":691,"props":890,"children":891},{"style":716},[892],{"type":50,"value":734},{"type":44,"tag":691,"props":894,"children":896},{"class":693,"line":895},8,[897,902,906,911,915],{"type":44,"tag":691,"props":898,"children":899},{"style":710},[900],{"type":50,"value":901},"  --platform",{"type":44,"tag":691,"props":903,"children":904},{"style":704},[905],{"type":50,"value":748},{"type":44,"tag":691,"props":907,"children":908},{"style":710},[909],{"type":50,"value":910},"\u003CdGPU|Jetson|SBSA>",{"type":44,"tag":691,"props":912,"children":913},{"style":704},[914],{"type":50,"value":758},{"type":44,"tag":691,"props":916,"children":917},{"style":716},[918],{"type":50,"value":734},{"type":44,"tag":691,"props":920,"children":922},{"class":693,"line":921},9,[923,928,932,937,941],{"type":44,"tag":691,"props":924,"children":925},{"style":710},[926],{"type":50,"value":927},"  --extras",{"type":44,"tag":691,"props":929,"children":930},{"style":704},[931],{"type":50,"value":748},{"type":44,"tag":691,"props":933,"children":934},{"style":710},[935],{"type":50,"value":936},"\u003Cnone|resize|rotate|crop|color-convert|osd>",{"type":44,"tag":691,"props":938,"children":939},{"style":704},[940],{"type":50,"value":758},{"type":44,"tag":691,"props":942,"children":943},{"style":716},[944],{"type":50,"value":734},{"type":44,"tag":691,"props":946,"children":948},{"class":693,"line":947},10,[949,954],{"type":44,"tag":691,"props":950,"children":951},{"style":710},[952],{"type":50,"value":953},"  --format",{"type":44,"tag":691,"props":955,"children":956},{"style":710},[957],{"type":50,"value":958}," compact\n",{"type":44,"tag":444,"props":960,"children":961},{},[962],{"type":44,"tag":53,"props":963,"children":964},{},[965,978,980,986,988,993,995,1001],{"type":44,"tag":83,"props":966,"children":967},{},[968,970,976],{"type":50,"value":969},"Always pass ",{"type":44,"tag":59,"props":971,"children":973},{"className":972},[],[974],{"type":50,"value":975},"--format compact",{"type":50,"value":977},".",{"type":50,"value":979}," The ",{"type":44,"tag":59,"props":981,"children":983},{"className":982},[],[984],{"type":50,"value":985},"compact",{"type":50,"value":987}," mode returns only confidence + the top retrieved pipeline (~25 lines), instead of dumping all 10 retrievals as ~150 lines of JSON in the chat. The ",{"type":44,"tag":59,"props":989,"children":991},{"className":990},[],[992],{"type":50,"value":372},{"type":50,"value":994}," mode (default for backward compat) is only useful when debugging the retriever directly. A ",{"type":44,"tag":59,"props":996,"children":998},{"className":997},[],[999],{"type":50,"value":1000},"summary",{"type":50,"value":1002}," mode (single human-readable line) also exists for non-Claude callers.",{"type":44,"tag":53,"props":1004,"children":1005},{},[1006],{"type":50,"value":1007},"The script will (zero external dependencies — pure Python stdlib):",{"type":44,"tag":482,"props":1009,"children":1010},{},[1011,1016,1021,1026,1031,1067],{"type":44,"tag":79,"props":1012,"children":1013},{},[1014],{"type":50,"value":1015},"Load the pipeline dataset (270+ verified DeepStream pipelines)",{"type":44,"tag":79,"props":1017,"children":1018},{},[1019],{"type":50,"value":1020},"Extract structural metadata from each pipeline (platform, source type, sink type, inference mode, tracker, stream count)",{"type":44,"tag":79,"props":1022,"children":1023},{},[1024],{"type":50,"value":1025},"Score with BM25 (document-length-normalized) + domain-specific synonym expansion on both queries and documents",{"type":44,"tag":79,"props":1027,"children":1028},{},[1029],{"type":50,"value":1030},"Apply structural boosting — results matching the user's platform\u002Fsource\u002Fsink\u002Finference get boosted, mismatches get penalized",{"type":44,"tag":79,"props":1032,"children":1033},{},[1034,1036,1042,1044,1050,1052,1058,1059,1065],{"type":50,"value":1035},"Return the top-K results as JSON with a ",{"type":44,"tag":59,"props":1037,"children":1039},{"className":1038},[],[1040],{"type":50,"value":1041},"confidence",{"type":50,"value":1043}," field (",{"type":44,"tag":59,"props":1045,"children":1047},{"className":1046},[],[1048],{"type":50,"value":1049},"high",{"type":50,"value":1051},"\u002F",{"type":44,"tag":59,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":50,"value":1057},"medium",{"type":50,"value":1051},{"type":44,"tag":59,"props":1060,"children":1062},{"className":1061},[],[1063],{"type":50,"value":1064},"low",{"type":50,"value":1066},") based on the top score",{"type":44,"tag":79,"props":1068,"children":1069},{},[1070],{"type":50,"value":1071},"Claude uses these retrieved examples + the assembly rules below to construct the final pipeline",{"type":44,"tag":53,"props":1073,"children":1074},{},[1075,1077,1082,1084,1089],{"type":50,"value":1076},"When ",{"type":44,"tag":59,"props":1078,"children":1080},{"className":1079},[],[1081],{"type":50,"value":1041},{"type":50,"value":1083}," is ",{"type":44,"tag":59,"props":1085,"children":1087},{"className":1086},[],[1088],{"type":50,"value":1064},{"type":50,"value":1090},", rely more heavily on the assembly rules below rather than the retrieved examples.",{"type":44,"tag":437,"props":1092,"children":1094},{"id":1093},"step-4-validate-the-pipeline",[1095],{"type":50,"value":1096},"Step 4 — Validate the Pipeline",{"type":44,"tag":53,"props":1098,"children":1099},{},[1100],{"type":50,"value":1101},"Before presenting, run the validation script to catch syntax errors, unknown elements, and linking issues:",{"type":44,"tag":165,"props":1103,"children":1105},{"className":683,"code":1104,"language":685,"meta":170,"style":170},"python3 \u003Cskill-path>\u002Fscripts\u002Fvalidate_pipeline.py \"\u003Cassembled_pipeline>\" --format summary\n",[1106],{"type":44,"tag":59,"props":1107,"children":1108},{"__ignoreMap":170},[1109],{"type":44,"tag":691,"props":1110,"children":1111},{"class":693,"line":694},[1112,1116,1120,1124,1128,1132,1137,1141,1146,1150,1155],{"type":44,"tag":691,"props":1113,"children":1114},{"style":698},[1115],{"type":50,"value":701},{"type":44,"tag":691,"props":1117,"children":1118},{"style":704},[1119],{"type":50,"value":707},{"type":44,"tag":691,"props":1121,"children":1122},{"style":710},[1123],{"type":50,"value":713},{"type":44,"tag":691,"props":1125,"children":1126},{"style":716},[1127],{"type":50,"value":719},{"type":44,"tag":691,"props":1129,"children":1130},{"style":704},[1131],{"type":50,"value":724},{"type":44,"tag":691,"props":1133,"children":1134},{"style":710},[1135],{"type":50,"value":1136},"\u002Fscripts\u002Fvalidate_pipeline.py",{"type":44,"tag":691,"props":1138,"children":1139},{"style":704},[1140],{"type":50,"value":748},{"type":44,"tag":691,"props":1142,"children":1143},{"style":710},[1144],{"type":50,"value":1145},"\u003Cassembled_pipeline>",{"type":44,"tag":691,"props":1147,"children":1148},{"style":704},[1149],{"type":50,"value":758},{"type":44,"tag":691,"props":1151,"children":1152},{"style":710},[1153],{"type":50,"value":1154}," --format",{"type":44,"tag":691,"props":1156,"children":1157},{"style":710},[1158],{"type":50,"value":1159}," summary\n",{"type":44,"tag":444,"props":1161,"children":1162},{},[1163],{"type":44,"tag":53,"props":1164,"children":1165},{},[1166,1177,1179,1185,1187,1192],{"type":44,"tag":83,"props":1167,"children":1168},{},[1169,1170,1176],{"type":50,"value":969},{"type":44,"tag":59,"props":1171,"children":1173},{"className":1172},[],[1174],{"type":50,"value":1175},"--format summary",{"type":50,"value":977},{"type":50,"value":1178}," Summary prints a single status line (e.g. ",{"type":44,"tag":59,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":50,"value":1184},"valid · 11 elements · 0 warnings · live-parse skipped (multi-stream)",{"type":50,"value":1186},"), with errors\u002Fwarnings indented underneath only if present. The default ",{"type":44,"tag":59,"props":1188,"children":1190},{"className":1189},[],[1191],{"type":50,"value":372},{"type":50,"value":1193}," mode emits ~40 lines of structured output and is only useful for programmatic callers.",{"type":44,"tag":53,"props":1195,"children":1196},{},[1197],{"type":50,"value":1198},"The validator performs 4 checks:",{"type":44,"tag":482,"props":1200,"children":1201},{},[1202,1212,1227,1237],{"type":44,"tag":79,"props":1203,"children":1204},{},[1205,1210],{"type":44,"tag":83,"props":1206,"children":1207},{},[1208],{"type":50,"value":1209},"Syntax check",{"type":50,"value":1211}," — unbalanced quotes, empty pipe segments, missing source\u002Fsink",{"type":44,"tag":79,"props":1213,"children":1214},{},[1215,1220,1222],{"type":44,"tag":83,"props":1216,"children":1217},{},[1218],{"type":50,"value":1219},"Element check",{"type":50,"value":1221}," — verifies each element exists via ",{"type":44,"tag":59,"props":1223,"children":1225},{"className":1224},[],[1226],{"type":50,"value":113},{"type":44,"tag":79,"props":1228,"children":1229},{},[1230,1235],{"type":44,"tag":83,"props":1231,"children":1232},{},[1233],{"type":50,"value":1234},"Property check",{"type":50,"value":1236}," — validates known properties for DeepStream elements",{"type":44,"tag":79,"props":1238,"children":1239},{},[1240,1245,1247,1252,1254,1259,1261,1267],{"type":44,"tag":83,"props":1241,"children":1242},{},[1243],{"type":50,"value":1244},"Live parse check",{"type":50,"value":1246}," — uses ",{"type":44,"tag":59,"props":1248,"children":1250},{"className":1249},[],[1251],{"type":50,"value":64},{"type":50,"value":1253}," itself to construct the pipeline graph (with fakesrc\u002Ffakesink substituted), catching linking errors and pad mismatches. ",{"type":44,"tag":83,"props":1255,"children":1256},{},[1257],{"type":50,"value":1258},"Automatically skipped for multi-stream pipelines",{"type":50,"value":1260}," (those with named pad refs like ",{"type":44,"tag":59,"props":1262,"children":1264},{"className":1263},[],[1265],{"type":50,"value":1266},"m.sink_0",{"type":50,"value":1268},") since fakesrc cannot negotiate caps through named pads.",{"type":44,"tag":53,"props":1270,"children":1271},{},[1272,1274,1280,1282,1287],{"type":50,"value":1273},"If validation fails (",{"type":44,"tag":59,"props":1275,"children":1277},{"className":1276},[],[1278],{"type":50,"value":1279},"\"valid\": false",{"type":50,"value":1281},"), fix the errors and re-validate before presenting. ",{"type":44,"tag":83,"props":1283,"children":1284},{},[1285],{"type":50,"value":1286},"Limit validation retries to a maximum of 2 attempts",{"type":50,"value":1288}," — if the pipeline still fails after 2 fixes, present it as-is (the remaining checks already cover syntax, element, property, and structural correctness). If there are only warnings, present the pipeline but mention the warnings to the user.",{"type":44,"tag":437,"props":1290,"children":1292},{"id":1291},"step-5-present-the-pipeline",[1293],{"type":50,"value":1294},"Step 5 — Present the Pipeline",{"type":44,"tag":1296,"props":1297,"children":1299},"h4",{"id":1298},"_51-output-format-the-only-accepted-form",[1300],{"type":50,"value":1301},"5.1 — Output format (THE ONLY ACCEPTED FORM)",{"type":44,"tag":53,"props":1303,"children":1304},{},[1305,1307,1312],{"type":50,"value":1306},"Your response ",{"type":44,"tag":83,"props":1308,"children":1309},{},[1310],{"type":50,"value":1311},"must",{"type":50,"value":1313}," be exactly five blocks, in this order:",{"type":44,"tag":482,"props":1315,"children":1316},{},[1317,1329,1362,1372,1382],{"type":44,"tag":79,"props":1318,"children":1319},{},[1320,1322,1327],{"type":50,"value":1321},"One-line ",{"type":44,"tag":83,"props":1323,"children":1324},{},[1325],{"type":50,"value":1326},"status badge",{"type":50,"value":1328}," (validation + confidence)",{"type":44,"tag":79,"props":1330,"children":1331},{},[1332,1337,1339,1345,1347,1352,1354,1360],{"type":44,"tag":83,"props":1333,"children":1334},{},[1335],{"type":50,"value":1336},"Single bash code block",{"type":50,"value":1338}," containing the full ",{"type":44,"tag":59,"props":1340,"children":1342},{"className":1341},[],[1343],{"type":50,"value":1344},"gst-launch-1.0 -e …",{"type":50,"value":1346}," command with concrete absolute paths, on ",{"type":44,"tag":83,"props":1348,"children":1349},{},[1350],{"type":50,"value":1351},"one line",{"type":50,"value":1353}," (no ",{"type":44,"tag":59,"props":1355,"children":1357},{"className":1356},[],[1358],{"type":50,"value":1359},"\\",{"type":50,"value":1361}," continuations, no shell variables, no shell wrapper)",{"type":44,"tag":79,"props":1363,"children":1364},{},[1365,1370],{"type":44,"tag":83,"props":1366,"children":1367},{},[1368],{"type":50,"value":1369},"Breakdown table",{"type":50,"value":1371}," grouped by stage",{"type":44,"tag":79,"props":1373,"children":1374},{},[1375,1380],{"type":44,"tag":83,"props":1376,"children":1377},{},[1378],{"type":50,"value":1379},"Suggestions",{"type":50,"value":1381}," bullet list",{"type":44,"tag":79,"props":1383,"children":1384},{},[1385,1387,1393],{"type":50,"value":1386},"(only if pre-flight failed) a ",{"type":44,"tag":59,"props":1388,"children":1390},{"className":1389},[],[1391],{"type":50,"value":1392},"⚠",{"type":50,"value":1394}," line above the status badge stating which default path is missing",{"type":44,"tag":53,"props":1396,"children":1397},{},[1398,1400,1406],{"type":50,"value":1399},"That is the ONLY accepted output shape for this step. The Section 5.3 template in ",{"type":44,"tag":59,"props":1401,"children":1403},{"className":1402},[],[1404],{"type":50,"value":1405},"references\u002Foutput-format.md",{"type":50,"value":1407}," is the literal template — match it.",{"type":44,"tag":1296,"props":1409,"children":1411},{"id":1410},"_52-pre-flight-check-run-before-composing-the-response",[1412],{"type":50,"value":1413},"5.2 — Pre-flight check (run before composing the response)",{"type":44,"tag":53,"props":1415,"children":1416},{},[1417,1419,1425,1426,1432,1434,1440],{"type":50,"value":1418},"Run one ",{"type":44,"tag":59,"props":1420,"children":1422},{"className":1421},[],[1423],{"type":50,"value":1424},"Bash",{"type":50,"value":125},{"type":44,"tag":59,"props":1427,"children":1429},{"className":1428},[],[1430],{"type":50,"value":1431},"ls",{"type":50,"value":1433}," over the default paths the pipeline will reference (sample video, PGIE config, tracker lib\u002Fconfig). The result tells you whether to mark the badge with ",{"type":44,"tag":59,"props":1435,"children":1437},{"className":1436},[],[1438],{"type":50,"value":1439},"⚠ default path not found: \u003Cpath>",{"type":50,"value":1441}," and bump the matching \"Use your own …\" suggestion to the top.",{"type":44,"tag":165,"props":1443,"children":1445},{"className":683,"code":1444,"language":685,"meta":170,"style":170},"ls \u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fstreams\u002Fsample_1080p_h264.mp4 \\\n   \u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fconfigs\u002Fdeepstream-app\u002Fconfig_infer_primary.txt \\\n   2>&1\n",[1446],{"type":44,"tag":59,"props":1447,"children":1448},{"__ignoreMap":170},[1449,1465,1477],{"type":44,"tag":691,"props":1450,"children":1451},{"class":693,"line":694},[1452,1456,1461],{"type":44,"tag":691,"props":1453,"children":1454},{"style":698},[1455],{"type":50,"value":1431},{"type":44,"tag":691,"props":1457,"children":1458},{"style":710},[1459],{"type":50,"value":1460}," \u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fstreams\u002Fsample_1080p_h264.mp4",{"type":44,"tag":691,"props":1462,"children":1463},{"style":716},[1464],{"type":50,"value":734},{"type":44,"tag":691,"props":1466,"children":1467},{"class":693,"line":737},[1468,1473],{"type":44,"tag":691,"props":1469,"children":1470},{"style":710},[1471],{"type":50,"value":1472},"   \u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fconfigs\u002Fdeepstream-app\u002Fconfig_infer_primary.txt",{"type":44,"tag":691,"props":1474,"children":1475},{"style":716},[1476],{"type":50,"value":734},{"type":44,"tag":691,"props":1478,"children":1479},{"class":693,"line":765},[1480],{"type":44,"tag":691,"props":1481,"children":1482},{"style":704},[1483],{"type":50,"value":1484},"   2>&1\n",{"type":44,"tag":1296,"props":1486,"children":1488},{"id":1487},"_53-54-worked-example-forbidden-anti-patterns",[1489],{"type":50,"value":1490},"5.3 \u002F 5.4 — Worked example & forbidden anti-patterns",{"type":44,"tag":444,"props":1492,"children":1493},{},[1494],{"type":44,"tag":53,"props":1495,"children":1496},{},[1497,1509,1511,1516,1518,1524],{"type":44,"tag":83,"props":1498,"children":1499},{},[1500,1501,1507],{"type":50,"value":454},{"type":44,"tag":59,"props":1502,"children":1504},{"className":1503},[],[1505],{"type":50,"value":1506},"Read references\u002Foutput-format.md",{"type":50,"value":1508}," before composing this response.",{"type":50,"value":1510}," It contains the literal Section 5.3 template your output must match exactly, and the Section 5.4 gallery of forbidden output shapes (heredoc wrappers, shell-var indirection, ",{"type":44,"tag":59,"props":1512,"children":1514},{"className":1513},[],[1515],{"type":50,"value":1359},{"type":50,"value":1517}," line-continuations, stray \"Run it\" lines, ",{"type":44,"tag":59,"props":1519,"children":1521},{"className":1520},[],[1522],{"type":50,"value":1523},"Write",{"type":50,"value":1525},"-to-script). Mirror Section 5.3; never emit any Section 5.4 form.",{"type":44,"tag":1296,"props":1527,"children":1529},{"id":1528},"_55-self-check-before-sending-the-response",[1530],{"type":50,"value":1531},"5.5 — Self-check before sending the response",{"type":44,"tag":53,"props":1533,"children":1534},{},[1535],{"type":50,"value":1536},"Before you emit your reply, mentally tick each box. If any check fails, rewrite the response.",{"type":44,"tag":75,"props":1538,"children":1541},{"className":1539},[1540],"contains-task-list",[1542,1570,1631,1675,1703,1720],{"type":44,"tag":79,"props":1543,"children":1546},{"className":1544},[1545],"task-list-item",[1547,1553,1555,1560,1562,1568],{"type":44,"tag":1548,"props":1549,"children":1552},"input",{"disabled":1550,"type":1551},true,"checkbox",[],{"type":50,"value":1554}," The pipeline is on ",{"type":44,"tag":83,"props":1556,"children":1557},{},[1558],{"type":50,"value":1559},"exactly one line",{"type":50,"value":1561}," inside a single ",{"type":44,"tag":59,"props":1563,"children":1565},{"className":1564},[],[1566],{"type":50,"value":1567},"```bash",{"type":50,"value":1569}," code block.",{"type":44,"tag":79,"props":1571,"children":1573},{"className":1572},[1545],[1574,1577,1579,1585,1587,1593,1595,1601,1603,1609,1610,1616,1617,1623,1624,1629],{"type":44,"tag":1548,"props":1575,"children":1576},{"disabled":1550,"type":1551},[],{"type":50,"value":1578}," The pipeline begins with ",{"type":44,"tag":59,"props":1580,"children":1582},{"className":1581},[],[1583],{"type":50,"value":1584},"gst-launch-1.0 -e",{"type":50,"value":1586}," and contains only literal absolute paths (e.g. ",{"type":44,"tag":59,"props":1588,"children":1590},{"className":1589},[],[1591],{"type":50,"value":1592},"\u002Fopt\u002Fnvidia\u002Fdeepstream\u002F...",{"type":50,"value":1594},") — no ",{"type":44,"tag":59,"props":1596,"children":1598},{"className":1597},[],[1599],{"type":50,"value":1600},"$VAR",{"type":50,"value":1602},", no ",{"type":44,"tag":59,"props":1604,"children":1606},{"className":1605},[],[1607],{"type":50,"value":1608},"${VAR:-default}",{"type":50,"value":1602},{"type":44,"tag":59,"props":1611,"children":1613},{"className":1612},[],[1614],{"type":50,"value":1615},"cat >",{"type":50,"value":1602},{"type":44,"tag":59,"props":1618,"children":1620},{"className":1619},[],[1621],{"type":50,"value":1622},"EOF",{"type":50,"value":1602},{"type":44,"tag":59,"props":1625,"children":1627},{"className":1626},[],[1628],{"type":50,"value":1359},{"type":50,"value":1630}," line continuations.",{"type":44,"tag":79,"props":1632,"children":1634},{"className":1633},[1545],[1635,1638,1640,1644,1646,1652,1654,1660,1661,1667,1668,1674],{"type":44,"tag":1548,"props":1636,"children":1637},{"disabled":1550,"type":1551},[],{"type":50,"value":1639}," The response does ",{"type":44,"tag":83,"props":1641,"children":1642},{},[1643],{"type":50,"value":524},{"type":50,"value":1645}," contain any of: ",{"type":44,"tag":59,"props":1647,"children":1649},{"className":1648},[],[1650],{"type":50,"value":1651},"cat > \u002Ftmp\u002Fpipeline.sh",{"type":50,"value":1653},", ",{"type":44,"tag":59,"props":1655,"children":1657},{"className":1656},[],[1658],{"type":50,"value":1659},"bash \u002Ftmp\u002Fpipeline.sh",{"type":50,"value":1653},{"type":44,"tag":59,"props":1662,"children":1664},{"className":1663},[],[1665],{"type":50,"value":1666},"\u003C\u003C'EOF'",{"type":50,"value":1653},{"type":44,"tag":59,"props":1669,"children":1671},{"className":1670},[],[1672],{"type":50,"value":1673},"${VAR:-",{"type":50,"value":977},{"type":44,"tag":79,"props":1676,"children":1678},{"className":1677},[1545],[1679,1682,1683,1687,1689,1694,1696,1701],{"type":44,"tag":1548,"props":1680,"children":1681},{"disabled":1550,"type":1551},[],{"type":50,"value":1639},{"type":44,"tag":83,"props":1684,"children":1685},{},[1686],{"type":50,"value":524},{"type":50,"value":1688}," call the ",{"type":44,"tag":59,"props":1690,"children":1692},{"className":1691},[],[1693],{"type":50,"value":1523},{"type":50,"value":1695}," tool. (Save-to-file is offered as a ",{"type":44,"tag":538,"props":1697,"children":1698},{},[1699],{"type":50,"value":1700},"suggestion bullet",{"type":50,"value":1702},", not an action.)",{"type":44,"tag":79,"props":1704,"children":1706},{"className":1705},[1545],[1707,1710,1712,1718],{"type":44,"tag":1548,"props":1708,"children":1709},{"disabled":1550,"type":1551},[],{"type":50,"value":1711}," The breakdown table is grouped by stage (Source \u002F Mux \u002F Inference \u002F Tracking \u002F Composition \u002F Render — adapt names to the pipeline's actual stages, e.g. add an ",{"type":44,"tag":59,"props":1713,"children":1715},{"className":1714},[],[1716],{"type":50,"value":1717},"Encode\u002FMux",{"type":50,"value":1719}," row for file sinks).",{"type":44,"tag":79,"props":1721,"children":1723},{"className":1722},[1545],[1724,1727],{"type":44,"tag":1548,"props":1725,"children":1726},{"disabled":1550,"type":1551},[],{"type":50,"value":1728}," The \"Save it to a script?\" line appears in the Suggestions list — never as a primary action.",{"type":44,"tag":1296,"props":1730,"children":1732},{"id":1731},"_56-pre-flight-failure-variant",[1733],{"type":50,"value":1734},"5.6 — Pre-flight failure variant",{"type":44,"tag":53,"props":1736,"children":1737},{},[1738,1740,1745,1747,1752],{"type":50,"value":1739},"If the Section 5.2 ",{"type":44,"tag":59,"props":1741,"children":1743},{"className":1742},[],[1744],{"type":50,"value":1431},{"type":50,"value":1746}," reported one or more missing default paths, prepend a ",{"type":44,"tag":59,"props":1748,"children":1750},{"className":1749},[],[1751],{"type":50,"value":1392},{"type":50,"value":1753}," line above the status badge and bump the matching \"Use your own …\" suggestion to the top:",{"type":44,"tag":165,"props":1755,"children":1759},{"className":1756,"code":1757,"language":1758,"meta":170,"style":170},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","⚠ default path not found: `\u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fstreams\u002Fsample_1080p_h264.mp4` — substitute your own video path before running\n✓ Validated · 11 elements · 0 warnings · confidence: HIGH\n\n```bash\ngst-launch-1.0 -e filesrc location=\u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fstreams\u002Fsample_1080p_h264.mp4 ! …\n```\n\n[breakdown + suggestions as in Section 5.3, with the \"Use your own video\" suggestion bumped to the top]\n","markdown",[1760],{"type":44,"tag":59,"props":1761,"children":1762},{"__ignoreMap":170},[1763,1790,1798,1806,1820,1852,1860,1867],{"type":44,"tag":691,"props":1764,"children":1765},{"class":693,"line":694},[1766,1771,1776,1781,1785],{"type":44,"tag":691,"props":1767,"children":1768},{"style":716},[1769],{"type":50,"value":1770},"⚠ default path not found: ",{"type":44,"tag":691,"props":1772,"children":1773},{"style":704},[1774],{"type":50,"value":1775},"`",{"type":44,"tag":691,"props":1777,"children":1778},{"style":710},[1779],{"type":50,"value":1780},"\u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fstreams\u002Fsample_1080p_h264.mp4",{"type":44,"tag":691,"props":1782,"children":1783},{"style":704},[1784],{"type":50,"value":1775},{"type":44,"tag":691,"props":1786,"children":1787},{"style":716},[1788],{"type":50,"value":1789}," — substitute your own video path before running\n",{"type":44,"tag":691,"props":1791,"children":1792},{"class":693,"line":737},[1793],{"type":44,"tag":691,"props":1794,"children":1795},{"style":716},[1796],{"type":50,"value":1797},"✓ Validated · 11 elements · 0 warnings · confidence: HIGH\n",{"type":44,"tag":691,"props":1799,"children":1800},{"class":693,"line":765},[1801],{"type":44,"tag":691,"props":1802,"children":1803},{"emptyLinePlaceholder":1550},[1804],{"type":50,"value":1805},"\n",{"type":44,"tag":691,"props":1807,"children":1808},{"class":693,"line":791},[1809,1814],{"type":44,"tag":691,"props":1810,"children":1811},{"style":710},[1812],{"type":50,"value":1813},"```",{"type":44,"tag":691,"props":1815,"children":1817},{"style":1816},"--shiki-light:#90A4AE90;--shiki-default:#EEFFFF90;--shiki-dark:#BABED890",[1818],{"type":50,"value":1819},"bash\n",{"type":44,"tag":691,"props":1821,"children":1822},{"class":693,"line":817},[1823,1827,1832,1837,1842,1847],{"type":44,"tag":691,"props":1824,"children":1825},{"style":698},[1826],{"type":50,"value":64},{"type":44,"tag":691,"props":1828,"children":1829},{"style":710},[1830],{"type":50,"value":1831}," -e",{"type":44,"tag":691,"props":1833,"children":1834},{"style":710},[1835],{"type":50,"value":1836}," filesrc",{"type":44,"tag":691,"props":1838,"children":1839},{"style":710},[1840],{"type":50,"value":1841}," location=\u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fstreams\u002Fsample_1080p_h264.mp4",{"type":44,"tag":691,"props":1843,"children":1844},{"style":710},[1845],{"type":50,"value":1846}," !",{"type":44,"tag":691,"props":1848,"children":1849},{"style":710},[1850],{"type":50,"value":1851}," …\n",{"type":44,"tag":691,"props":1853,"children":1854},{"class":693,"line":843},[1855],{"type":44,"tag":691,"props":1856,"children":1857},{"style":710},[1858],{"type":50,"value":1859},"```\n",{"type":44,"tag":691,"props":1861,"children":1862},{"class":693,"line":869},[1863],{"type":44,"tag":691,"props":1864,"children":1865},{"emptyLinePlaceholder":1550},[1866],{"type":50,"value":1805},{"type":44,"tag":691,"props":1868,"children":1869},{"class":693,"line":895},[1870],{"type":44,"tag":691,"props":1871,"children":1872},{"style":716},[1873],{"type":50,"value":1874},"[breakdown + suggestions as in Section 5.3, with the \"Use your own video\" suggestion bumped to the top]\n",{"type":44,"tag":444,"props":1876,"children":1877},{},[1878],{"type":44,"tag":53,"props":1879,"children":1880},{},[1881,1886],{"type":44,"tag":83,"props":1882,"children":1883},{},[1884],{"type":50,"value":1885},"On length:",{"type":50,"value":1887}," 5–8 stream pipelines run long when on a single line. That is correct and intended — chat clients render bash code blocks faithfully and copy reproduces them correctly. Long ≠ split.",{"type":44,"tag":437,"props":1889,"children":1891},{"id":1890},"step-6-offer-refinement",[1892],{"type":50,"value":1893},"Step 6 — Offer Refinement",{"type":44,"tag":53,"props":1895,"children":1896},{},[1897],{"type":50,"value":1898},"After presenting the pipeline, ask the user if they want to adjust anything:",{"type":44,"tag":444,"props":1900,"children":1901},{},[1902,1907],{"type":44,"tag":53,"props":1903,"children":1904},{},[1905],{"type":50,"value":1906},"Want me to modify anything? For example:",{"type":44,"tag":75,"props":1908,"children":1909},{},[1910,1915,1920,1925],{"type":44,"tag":79,"props":1911,"children":1912},{},[1913],{"type":50,"value":1914},"Change the number of streams",{"type":44,"tag":79,"props":1916,"children":1917},{},[1918],{"type":50,"value":1919},"Add\u002Fremove tracker or secondary inference",{"type":44,"tag":79,"props":1921,"children":1922},{},[1923],{"type":50,"value":1924},"Switch between display and file output",{"type":44,"tag":79,"props":1926,"children":1927},{},[1928],{"type":50,"value":1929},"Change the platform (x86 dGPU \u002F aarch64 Jetson \u002F SBSA)",{"type":44,"tag":53,"props":1931,"children":1932},{},[1933,1935,1940],{"type":50,"value":1934},"If the user requests changes, go back to ",{"type":44,"tag":83,"props":1936,"children":1937},{},[1938],{"type":50,"value":1939},"Step 2",{"type":50,"value":1941}," with updated parameters — do NOT re-ask all 7 questions. Only ask about the specific parameter that changed, or just apply the change directly if it's clear.",{"type":44,"tag":437,"props":1943,"children":1945},{"id":1944},"step-65-optional-save-pipeline-to-a-script",[1946],{"type":50,"value":1947},"Step 6.5 — Optional: Save Pipeline to a Script",{"type":44,"tag":53,"props":1949,"children":1950},{},[1951,1953,1958,1959,1964,1965,1970,1971,1976,1978,1982],{"type":50,"value":1952},"Only do this step when the user explicitly asks (e.g. ",{"type":44,"tag":538,"props":1954,"children":1955},{},[1956],{"type":50,"value":1957},"\"save it\"",{"type":50,"value":1653},{"type":44,"tag":538,"props":1960,"children":1961},{},[1962],{"type":50,"value":1963},"\"save to pipeline.sh\"",{"type":50,"value":1653},{"type":44,"tag":538,"props":1966,"children":1967},{},[1968],{"type":50,"value":1969},"\"write it to a file\"",{"type":50,"value":1653},{"type":44,"tag":538,"props":1972,"children":1973},{},[1974],{"type":50,"value":1975},"\"put it in ~\u002Frun.sh\"",{"type":50,"value":1977},"). Do ",{"type":44,"tag":83,"props":1979,"children":1980},{},[1981],{"type":50,"value":524},{"type":50,"value":1983}," create the file proactively — Step 5 always shows the concrete pipeline in chat for direct copy-paste; saving is a follow-up convenience.",{"type":44,"tag":482,"props":1985,"children":1986},{},[1987,2026,2143],{"type":44,"tag":79,"props":1988,"children":1989},{},[1990,1995,1997,2003,2005,2009,2011,2017,2018,2024],{"type":44,"tag":83,"props":1991,"children":1992},{},[1993],{"type":50,"value":1994},"Filename:",{"type":50,"value":1996}," Default to ",{"type":44,"tag":59,"props":1998,"children":2000},{"className":1999},[],[2001],{"type":50,"value":2002},"\u002Ftmp\u002Fpipeline.sh",{"type":50,"value":2004}," if the user just says ",{"type":44,"tag":538,"props":2006,"children":2007},{},[2008],{"type":50,"value":1957},{"type":50,"value":2010},". Use the exact path the user named otherwise (e.g. ",{"type":44,"tag":59,"props":2012,"children":2014},{"className":2013},[],[2015],{"type":50,"value":2016},"~\u002Frun.sh",{"type":50,"value":1653},{"type":44,"tag":59,"props":2019,"children":2021},{"className":2020},[],[2022],{"type":50,"value":2023},"scripts\u002Fdemo.sh",{"type":50,"value":2025},").",{"type":44,"tag":79,"props":2027,"children":2028},{},[2029,2034,2036,2130,2134,2136,2141],{"type":44,"tag":83,"props":2030,"children":2031},{},[2032],{"type":50,"value":2033},"File contents:",{"type":50,"value":2035}," Two lines — shebang + the same single-line pipeline shown in chat (concrete absolute paths, no shell vars). Keep them in sync — what the user runs from the file is bit-for-bit identical to what they could have copy-pasted.",{"type":44,"tag":165,"props":2037,"children":2039},{"className":683,"code":2038,"language":685,"meta":170,"style":170},"#!\u002Fusr\u002Fbin\u002Fenv bash\ngst-launch-1.0 -e filesrc location=\u002Fopt\u002Fnvidia\u002Fdeepstream\u002Fdeepstream\u002Fsamples\u002Fstreams\u002Fsample_1080p_h264.mp4 ! qtdemux ! h264parse ! nvv4l2decoder ! m.sink_0 … ! nvdsosd ! nveglglessink\n",[2040],{"type":44,"tag":59,"props":2041,"children":2042},{"__ignoreMap":170},[2043,2052],{"type":44,"tag":691,"props":2044,"children":2045},{"class":693,"line":694},[2046],{"type":44,"tag":691,"props":2047,"children":2049},{"style":2048},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[2050],{"type":50,"value":2051},"#!\u002Fusr\u002Fbin\u002Fenv bash\n",{"type":44,"tag":691,"props":2053,"children":2054},{"class":693,"line":737},[2055,2059,2063,2067,2071,2075,2080,2084,2089,2093,2098,2102,2107,2112,2116,2121,2125],{"type":44,"tag":691,"props":2056,"children":2057},{"style":698},[2058],{"type":50,"value":64},{"type":44,"tag":691,"props":2060,"children":2061},{"style":710},[2062],{"type":50,"value":1831},{"type":44,"tag":691,"props":2064,"children":2065},{"style":710},[2066],{"type":50,"value":1836},{"type":44,"tag":691,"props":2068,"children":2069},{"style":710},[2070],{"type":50,"value":1841},{"type":44,"tag":691,"props":2072,"children":2073},{"style":710},[2074],{"type":50,"value":1846},{"type":44,"tag":691,"props":2076,"children":2077},{"style":710},[2078],{"type":50,"value":2079}," qtdemux",{"type":44,"tag":691,"props":2081,"children":2082},{"style":710},[2083],{"type":50,"value":1846},{"type":44,"tag":691,"props":2085,"children":2086},{"style":710},[2087],{"type":50,"value":2088}," h264parse",{"type":44,"tag":691,"props":2090,"children":2091},{"style":710},[2092],{"type":50,"value":1846},{"type":44,"tag":691,"props":2094,"children":2095},{"style":710},[2096],{"type":50,"value":2097}," nvv4l2decoder",{"type":44,"tag":691,"props":2099,"children":2100},{"style":710},[2101],{"type":50,"value":1846},{"type":44,"tag":691,"props":2103,"children":2104},{"style":710},[2105],{"type":50,"value":2106}," m.sink_0",{"type":44,"tag":691,"props":2108,"children":2109},{"style":710},[2110],{"type":50,"value":2111}," …",{"type":44,"tag":691,"props":2113,"children":2114},{"style":710},[2115],{"type":50,"value":1846},{"type":44,"tag":691,"props":2117,"children":2118},{"style":710},[2119],{"type":50,"value":2120}," nvdsosd",{"type":44,"tag":691,"props":2122,"children":2123},{"style":710},[2124],{"type":50,"value":1846},{"type":44,"tag":691,"props":2126,"children":2127},{"style":710},[2128],{"type":50,"value":2129}," nveglglessink\n",{"type":44,"tag":2131,"props":2132,"children":2133},"br",{},[],{"type":50,"value":2135},"Use the ",{"type":44,"tag":59,"props":2137,"children":2139},{"className":2138},[],[2140],{"type":50,"value":1523},{"type":50,"value":2142}," tool to create the file.",{"type":44,"tag":79,"props":2144,"children":2145},{},[2146,2151,2153],{"type":44,"tag":83,"props":2147,"children":2148},{},[2149],{"type":50,"value":2150},"Confirm to user",{"type":50,"value":2152}," with the run command:",{"type":44,"tag":444,"props":2154,"children":2155},{},[2156,2169],{"type":44,"tag":53,"props":2157,"children":2158},{},[2159,2161,2167],{"type":50,"value":2160},"Saved to ",{"type":44,"tag":59,"props":2162,"children":2164},{"className":2163},[],[2165],{"type":50,"value":2166},"\u003Cpath>",{"type":50,"value":2168},". Run it with:",{"type":44,"tag":165,"props":2170,"children":2172},{"className":683,"code":2171,"language":685,"meta":170,"style":170},"bash \u003Cpath>\n",[2173],{"type":44,"tag":59,"props":2174,"children":2175},{"__ignoreMap":170},[2176],{"type":44,"tag":691,"props":2177,"children":2178},{"class":693,"line":694},[2179,2183,2187,2192,2196],{"type":44,"tag":691,"props":2180,"children":2181},{"style":698},[2182],{"type":50,"value":685},{"type":44,"tag":691,"props":2184,"children":2185},{"style":704},[2186],{"type":50,"value":707},{"type":44,"tag":691,"props":2188,"children":2189},{"style":710},[2190],{"type":50,"value":2191},"pat",{"type":44,"tag":691,"props":2193,"children":2194},{"style":716},[2195],{"type":50,"value":719},{"type":44,"tag":691,"props":2197,"children":2198},{"style":704},[2199],{"type":50,"value":2200},">\n",{"type":44,"tag":2202,"props":2203,"children":2204},"hr",{},[],{"type":44,"tag":68,"props":2206,"children":2208},{"id":2207},"pipeline-assembly-rules",[2209],{"type":50,"value":2210},"Pipeline Assembly Rules",{"type":44,"tag":53,"props":2212,"children":2213},{},[2214,2216,2222],{"type":50,"value":2215},"When the script is not available or fails, assemble the pipeline using the rules in ",{"type":44,"tag":2217,"props":2218,"children":2220},"a",{"href":2219},"references\u002Fassembly-rules.md",[2221],{"type":50,"value":2219},{"type":50,"value":2223},". These rules cover source elements, multi-stream patterns, inference chains, tracker configs, sink elements, and extra operations. They also serve as validation for script output.",{"type":44,"tag":2202,"props":2225,"children":2226},{},[],{"type":44,"tag":68,"props":2228,"children":2230},{"id":2229},"error-handling",[2231],{"type":50,"value":2232},"Error Handling",{"type":44,"tag":183,"props":2234,"children":2235},{},[2236,2257],{"type":44,"tag":187,"props":2237,"children":2238},{},[2239],{"type":44,"tag":191,"props":2240,"children":2241},{},[2242,2247,2252],{"type":44,"tag":195,"props":2243,"children":2244},{},[2245],{"type":50,"value":2246},"Failure",{"type":44,"tag":195,"props":2248,"children":2249},{},[2250],{"type":50,"value":2251},"Cause",{"type":44,"tag":195,"props":2253,"children":2254},{},[2255],{"type":50,"value":2256},"Recovery",{"type":44,"tag":206,"props":2258,"children":2259},{},[2260,2290,2327,2345],{"type":44,"tag":191,"props":2261,"children":2262},{},[2263,2280,2285],{"type":44,"tag":213,"props":2264,"children":2265},{},[2266,2272,2274],{"type":44,"tag":59,"props":2267,"children":2269},{"className":2268},[],[2270],{"type":50,"value":2271},"generate_pipeline.py",{"type":50,"value":2273}," returns ",{"type":44,"tag":59,"props":2275,"children":2277},{"className":2276},[],[2278],{"type":50,"value":2279},"confidence: low",{"type":44,"tag":213,"props":2281,"children":2282},{},[2283],{"type":50,"value":2284},"Query doesn't match any pipeline in the dataset closely",{"type":44,"tag":213,"props":2286,"children":2287},{},[2288],{"type":50,"value":2289},"Rely on the assembly rules in this skill instead of retrieved examples",{"type":44,"tag":191,"props":2291,"children":2292},{},[2293,2304,2314],{"type":44,"tag":213,"props":2294,"children":2295},{},[2296,2302],{"type":44,"tag":59,"props":2297,"children":2299},{"className":2298},[],[2300],{"type":50,"value":2301},"validate_pipeline.py",{"type":50,"value":2303}," reports unknown element",{"type":44,"tag":213,"props":2305,"children":2306},{},[2307,2309],{"type":50,"value":2308},"GStreamer\u002FDeepStream not installed or not on ",{"type":44,"tag":59,"props":2310,"children":2312},{"className":2311},[],[2313],{"type":50,"value":145},{"type":44,"tag":213,"props":2315,"children":2316},{},[2317,2319,2325],{"type":50,"value":2318},"Install DeepStream SDK; confirm ",{"type":44,"tag":59,"props":2320,"children":2322},{"className":2321},[],[2323],{"type":50,"value":2324},"gst-inspect-1.0 nvinfer",{"type":50,"value":2326}," works",{"type":44,"tag":191,"props":2328,"children":2329},{},[2330,2335,2340],{"type":44,"tag":213,"props":2331,"children":2332},{},[2333],{"type":50,"value":2334},"Validation fails after 2 retries",{"type":44,"tag":213,"props":2336,"children":2337},{},[2338],{"type":50,"value":2339},"Unusual element combination or linking issue",{"type":44,"tag":213,"props":2341,"children":2342},{},[2343],{"type":50,"value":2344},"Present the pipeline as-is with a warning — syntax\u002Felement\u002Fproperty checks still passed",{"type":44,"tag":191,"props":2346,"children":2347},{},[2348,2359,2364],{"type":44,"tag":213,"props":2349,"children":2350},{},[2351,2353],{"type":50,"value":2352},"Script not found at ",{"type":44,"tag":59,"props":2354,"children":2356},{"className":2355},[],[2357],{"type":50,"value":2358},"\u003Cskill-path>\u002Fscripts\u002F",{"type":44,"tag":213,"props":2360,"children":2361},{},[2362],{"type":50,"value":2363},"Skill not installed correctly or path misconfigured",{"type":44,"tag":213,"props":2365,"children":2366},{},[2367,2369,2375,2377],{"type":50,"value":2368},"Verify the skill directory is symlinked into ",{"type":44,"tag":59,"props":2370,"children":2372},{"className":2371},[],[2373],{"type":50,"value":2374},".claude\u002Fskills\u002F",{"type":50,"value":2376}," or ",{"type":44,"tag":59,"props":2378,"children":2380},{"className":2379},[],[2381],{"type":50,"value":2382},".cursor\u002Fskills\u002F",{"type":44,"tag":68,"props":2384,"children":2386},{"id":2385},"testing",[2387],{"type":50,"value":2388},"Testing",{"type":44,"tag":53,"props":2390,"children":2391},{},[2392],{"type":50,"value":2393},"Run the test suite to verify retrieval quality and validator correctness:",{"type":44,"tag":165,"props":2395,"children":2397},{"className":683,"code":2396,"language":685,"meta":170,"style":170},"python3 -m unittest discover -s \u003Cskill-path>\u002Ftests -v\n",[2398],{"type":44,"tag":59,"props":2399,"children":2400},{"__ignoreMap":170},[2401],{"type":44,"tag":691,"props":2402,"children":2403},{"class":693,"line":694},[2404,2408,2413,2418,2423,2428,2432,2436,2440,2444,2449],{"type":44,"tag":691,"props":2405,"children":2406},{"style":698},[2407],{"type":50,"value":701},{"type":44,"tag":691,"props":2409,"children":2410},{"style":710},[2411],{"type":50,"value":2412}," -m",{"type":44,"tag":691,"props":2414,"children":2415},{"style":710},[2416],{"type":50,"value":2417}," unittest",{"type":44,"tag":691,"props":2419,"children":2420},{"style":710},[2421],{"type":50,"value":2422}," discover",{"type":44,"tag":691,"props":2424,"children":2425},{"style":710},[2426],{"type":50,"value":2427}," -s",{"type":44,"tag":691,"props":2429,"children":2430},{"style":704},[2431],{"type":50,"value":707},{"type":44,"tag":691,"props":2433,"children":2434},{"style":710},[2435],{"type":50,"value":713},{"type":44,"tag":691,"props":2437,"children":2438},{"style":716},[2439],{"type":50,"value":719},{"type":44,"tag":691,"props":2441,"children":2442},{"style":704},[2443],{"type":50,"value":724},{"type":44,"tag":691,"props":2445,"children":2446},{"style":710},[2447],{"type":50,"value":2448},"\u002Ftests",{"type":44,"tag":691,"props":2450,"children":2451},{"style":710},[2452],{"type":50,"value":2453}," -v\n",{"type":44,"tag":53,"props":2455,"children":2456},{},[2457],{"type":50,"value":2458},"The suite includes:",{"type":44,"tag":75,"props":2460,"children":2461},{},[2462,2472,2481,2491],{"type":44,"tag":79,"props":2463,"children":2464},{},[2465,2470],{"type":44,"tag":83,"props":2466,"children":2467},{},[2468],{"type":50,"value":2469},"Unit tests",{"type":50,"value":2471}," for the BM25 retriever (tokenizer, synonym expansion, metadata extraction, scoring)",{"type":44,"tag":79,"props":2473,"children":2474},{},[2475,2479],{"type":44,"tag":83,"props":2476,"children":2477},{},[2478],{"type":50,"value":2469},{"type":50,"value":2480}," for the validator (syntax, structure, property, named-pad checks)",{"type":44,"tag":79,"props":2482,"children":2483},{},[2484,2489],{"type":44,"tag":83,"props":2485,"children":2486},{},[2487],{"type":50,"value":2488},"Golden regression tests",{"type":50,"value":2490}," — 20+ query→expected-result pairs ensuring retrieval quality doesn't regress",{"type":44,"tag":79,"props":2492,"children":2493},{},[2494,2499],{"type":44,"tag":83,"props":2495,"children":2496},{},[2497],{"type":50,"value":2498},"Data quality linter",{"type":50,"value":2500}," — checks the CSV for duplicates, syntax issues, and structural bugs:",{"type":44,"tag":165,"props":2502,"children":2504},{"className":683,"code":2503,"language":685,"meta":170,"style":170},"python3 \u003Cskill-path>\u002Fscripts\u002Flint_data.py          # report issues\npython3 \u003Cskill-path>\u002Fscripts\u002Flint_data.py --fix     # auto-fix and overwrite\n",[2505],{"type":44,"tag":59,"props":2506,"children":2507},{"__ignoreMap":170},[2508,2541],{"type":44,"tag":691,"props":2509,"children":2510},{"class":693,"line":694},[2511,2515,2519,2523,2527,2531,2536],{"type":44,"tag":691,"props":2512,"children":2513},{"style":698},[2514],{"type":50,"value":701},{"type":44,"tag":691,"props":2516,"children":2517},{"style":704},[2518],{"type":50,"value":707},{"type":44,"tag":691,"props":2520,"children":2521},{"style":710},[2522],{"type":50,"value":713},{"type":44,"tag":691,"props":2524,"children":2525},{"style":716},[2526],{"type":50,"value":719},{"type":44,"tag":691,"props":2528,"children":2529},{"style":704},[2530],{"type":50,"value":724},{"type":44,"tag":691,"props":2532,"children":2533},{"style":710},[2534],{"type":50,"value":2535},"\u002Fscripts\u002Flint_data.py",{"type":44,"tag":691,"props":2537,"children":2538},{"style":2048},[2539],{"type":50,"value":2540},"          # report issues\n",{"type":44,"tag":691,"props":2542,"children":2543},{"class":693,"line":737},[2544,2548,2552,2556,2560,2564,2568,2573],{"type":44,"tag":691,"props":2545,"children":2546},{"style":698},[2547],{"type":50,"value":701},{"type":44,"tag":691,"props":2549,"children":2550},{"style":704},[2551],{"type":50,"value":707},{"type":44,"tag":691,"props":2553,"children":2554},{"style":710},[2555],{"type":50,"value":713},{"type":44,"tag":691,"props":2557,"children":2558},{"style":716},[2559],{"type":50,"value":719},{"type":44,"tag":691,"props":2561,"children":2562},{"style":704},[2563],{"type":50,"value":724},{"type":44,"tag":691,"props":2565,"children":2566},{"style":710},[2567],{"type":50,"value":2535},{"type":44,"tag":691,"props":2569,"children":2570},{"style":710},[2571],{"type":50,"value":2572}," --fix",{"type":44,"tag":691,"props":2574,"children":2575},{"style":2048},[2576],{"type":50,"value":2577},"     # auto-fix and overwrite\n",{"type":44,"tag":2202,"props":2579,"children":2580},{},[],{"type":44,"tag":68,"props":2582,"children":2584},{"id":2583},"security-limitations-notes",[2585],{"type":50,"value":2586},"Security, Limitations & Notes",{"type":44,"tag":53,"props":2588,"children":2589},{},[2590,2592,2598],{"type":50,"value":2591},"Security posture, known limitations, and operational notes are documented in ",{"type":44,"tag":59,"props":2593,"children":2595},{"className":2594},[],[2596],{"type":50,"value":2597},"references\u002Fsecurity-and-limitations.md",{"type":50,"value":2599},". Read that file when you need details on subprocess safety, input validation, platform\u002FSDK requirements, the multi-stream dry-run caveat, or sample-path\u002Fconfig-file reminders.",{"type":44,"tag":2601,"props":2602,"children":2603},"style",{},[2604],{"type":50,"value":2605},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2607,"total":2707},[2608,2625,2639,2653,2663,2678,2693],{"slug":2609,"name":2609,"fn":2610,"description":2611,"org":2612,"tags":2613,"stars":23,"repoUrl":24,"updatedAt":2624},"accelerated-computing-cudf","accelerate data processing with cuDF","Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV\u002FParquet I\u002FO, nullable semantics, and multi-GPU DataFrame workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2614,2617,2620,2621],{"name":2615,"slug":2616,"type":15},"Data Analysis","data-analysis",{"name":2618,"slug":2619,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":2622,"slug":2623,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":2626,"name":2626,"fn":2627,"description":2628,"org":2629,"tags":2630,"stars":23,"repoUrl":24,"updatedAt":2638},"aiq-deploy","deploy and manage NVIDIA AI-Q infrastructure","Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2631,2634,2637],{"name":2632,"slug":2633,"type":15},"Deployment","deployment",{"name":2635,"slug":2636,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":2640,"name":2640,"fn":2641,"description":2642,"org":2643,"tags":2644,"stars":23,"repoUrl":24,"updatedAt":2652},"aiq-research","conduct deep research with AI-Q","Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2645,2648,2649],{"name":2646,"slug":2647,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":2650,"slug":2651,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":2654,"name":2654,"fn":2655,"description":2656,"org":2657,"tags":2658,"stars":23,"repoUrl":24,"updatedAt":2662},"amc-run-sample-calibration","run AMC sample dataset calibration","Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2659,2660,2661],{"name":2615,"slug":2616,"type":15},{"name":9,"slug":8,"type":15},{"name":2388,"slug":2385,"type":15},"2026-07-17T05:29:03.913266",{"slug":2664,"name":2664,"fn":2665,"description":2666,"org":2667,"tags":2668,"stars":23,"repoUrl":24,"updatedAt":2677},"amc-run-video-calibration","calibrate video datasets with AutoMagicCalib","Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP\u002Flive streams, use amc-run-rtsp-calibration instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2669,2672,2675,2676],{"name":2670,"slug":2671,"type":15},"Automation","automation",{"name":2673,"slug":2674,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"2026-07-17T05:28:53.905004",{"slug":2679,"name":2679,"fn":2680,"description":2681,"org":2682,"tags":2683,"stars":23,"repoUrl":24,"updatedAt":2692},"amc-setup-calibration-stack","deploy AutoMagicCalib microservice with Docker","Launch AutoMagicCalib microservice and web UI from NGC release images via Docker Compose. Use when user says 'deploy auto calibration', 'launch auto calibration', 'launch AMC', 'start MS+UI', or 'set up auto-magic-calib'. Requires NGC API key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2684,2685,2688,2689],{"name":2632,"slug":2633,"type":15},{"name":2686,"slug":2687,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":2690,"slug":2691,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":2694,"name":2694,"fn":2695,"description":2696,"org":2697,"tags":2698,"stars":23,"repoUrl":24,"updatedAt":2706},"cudaq-guide","develop quantum applications with CUDA-Q","CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2699,2700,2703],{"name":9,"slug":8,"type":15},{"name":2701,"slug":2702,"type":15},"Quantum Computing","quantum-computing",{"name":2704,"slug":2705,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":2709,"total":2860},[2710,2728,2744,2755,2767,2781,2794,2808,2819,2828,2842,2851],{"slug":2711,"name":2711,"fn":2712,"description":2713,"org":2714,"tags":2715,"stars":2725,"repoUrl":2726,"updatedAt":2727},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2716,2719,2722],{"name":2717,"slug":2718,"type":15},"Documentation","documentation",{"name":2720,"slug":2721,"type":15},"MCP","mcp",{"name":2723,"slug":2724,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":2729,"name":2729,"fn":2730,"description":2731,"org":2732,"tags":2733,"stars":2741,"repoUrl":2742,"updatedAt":2743},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2734,2737,2738],{"name":2735,"slug":2736,"type":15},"Containers","containers",{"name":2632,"slug":2633,"type":15},{"name":2739,"slug":2740,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":2745,"name":2745,"fn":2746,"description":2747,"org":2748,"tags":2749,"stars":2741,"repoUrl":2742,"updatedAt":2754},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2750,2753],{"name":2751,"slug":2752,"type":15},"CI\u002FCD","ci-cd",{"name":2632,"slug":2633,"type":15},"2026-07-14T05:25:59.97109",{"slug":2756,"name":2756,"fn":2757,"description":2758,"org":2759,"tags":2760,"stars":2741,"repoUrl":2742,"updatedAt":2766},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2761,2762,2763],{"name":2751,"slug":2752,"type":15},{"name":2632,"slug":2633,"type":15},{"name":2764,"slug":2765,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":2768,"name":2768,"fn":2769,"description":2770,"org":2771,"tags":2772,"stars":2741,"repoUrl":2742,"updatedAt":2780},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2773,2776,2777],{"name":2774,"slug":2775,"type":15},"Debugging","debugging",{"name":2764,"slug":2765,"type":15},{"name":2778,"slug":2779,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2782,"name":2782,"fn":2783,"description":2784,"org":2785,"tags":2786,"stars":2741,"repoUrl":2742,"updatedAt":2793},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2787,2790],{"name":2788,"slug":2789,"type":15},"Best Practices","best-practices",{"name":2791,"slug":2792,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2795,"name":2795,"fn":2796,"description":2797,"org":2798,"tags":2799,"stars":2741,"repoUrl":2742,"updatedAt":2807},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2800,2803,2806],{"name":2801,"slug":2802,"type":15},"Machine Learning","machine-learning",{"name":2804,"slug":2805,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":2809,"name":2809,"fn":2810,"description":2811,"org":2812,"tags":2813,"stars":2741,"repoUrl":2742,"updatedAt":2818},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2814,2817],{"name":2815,"slug":2816,"type":15},"QA","qa",{"name":2388,"slug":2385,"type":15},"2026-07-14T05:25:53.673039",{"slug":2820,"name":2820,"fn":2821,"description":2822,"org":2823,"tags":2824,"stars":2741,"repoUrl":2742,"updatedAt":2827},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2825,2826],{"name":2632,"slug":2633,"type":15},{"name":2635,"slug":2636,"type":15},"2026-07-14T05:25:49.362534",{"slug":2829,"name":2829,"fn":2830,"description":2831,"org":2832,"tags":2833,"stars":2741,"repoUrl":2742,"updatedAt":2841},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2834,2837,2838],{"name":2835,"slug":2836,"type":15},"Code Review","code-review",{"name":2764,"slug":2765,"type":15},{"name":2839,"slug":2840,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2843,"name":2843,"fn":2844,"description":2845,"org":2846,"tags":2847,"stars":2741,"repoUrl":2742,"updatedAt":2850},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2848,2849],{"name":2815,"slug":2816,"type":15},{"name":2388,"slug":2385,"type":15},"2026-07-14T05:25:54.928983",{"slug":2852,"name":2852,"fn":2853,"description":2854,"org":2855,"tags":2856,"stars":2741,"repoUrl":2742,"updatedAt":2859},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2857,2858],{"name":2670,"slug":2671,"type":15},{"name":2751,"slug":2752,"type":15},"2026-07-30T05:29:03.275638",496]