К основному содержанию
скилл CX Codex

dynamo-recipe-runner — скилл для Claude Code: что делает и как ставить

Скилл подбирает, валидирует, точечно правит и разворачивает готовые Kubernetes-рецепты NVIDIA Dynamo для инференс-моделей под vLLM или SGLang.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add NVIDIA/skills --skill dynamo-recipe-runner -a claude-code
Открыть на GitHub

Что делает dynamo-recipe-runner

Скилл работает с готовой структурой recipes/ в репозитории Dynamo. Вместо генерации манифестов с нуля агент вызывает инструмент scripts/recipe_tool.py для поиска подходящей связки модели, бэкенда (vllm, sglang, trtllm, tokenspeed) и числа GPU, после чего проверяет директорию на ошибки.

Перед применением манифестов запускается предпроверка кластера через kubectl. Скилл проверяет наличие секретов, узлов и доступных классов хранилища. Точечные правки вносятся только в необходимые поля: storageClassName, теги образов или лимиты GPU. Если доступа к кластеру нет, агент не имитирует выполнение, а формирует точные консольные команды для ручного запуска.

Для работы на рабочей машине требуется Python 3.10+ и настроенный контекст kubectl. Скилл проверяет работоспособность только базовым запросом к /v1/models, поэтому проверку интерконнекта для многоузловых распределённых конфигураций придётся запускать отдельными утилитами.

Какие задачи решает

  • найти готовый рецепт Dynamo под целевую модель и фреймворк
  • проверить структуру манифестов через команду validate перед выкаткой
  • пропатчить StorageClass и теги образов без перезаписи всего YAML
  • запустить скачивание модели Hugging Face в кеш кластера
  • провести smoke-тест развёрнутого пода через проброс порта к эндпоинту

Примеры запросов агенту

  • Найди и проверь рецепт Dynamo для nemotron-3-super-fp8 на sglang
  • Подготовь рецепт qwen для фреймворка vllm в режиме disagg для текущего кластера
  • Проверь манифест trtllm и выведи команды kubectl без применения изменений

Как установить dynamo-recipe-runner

1Через Skills CLI (Vercel)

npx skills add NVIDIA/skills --skill dynamo-recipe-runner -a claude-code

2Вручную: положить файлы

~/.claude/skills/dynamo-recipe-runner/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/dynamo-recipe-runner/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о dynamo-recipe-runner

Как установить dynamo-recipe-runner в Claude Code?

Выполните команду npx skills add NVIDIA/skills --skill dynamo-recipe-runner -a claude-code. Манифест навыка запишется в ~/.claude/skills/dynamo-recipe-runner/SKILL.md.

Что делает dynamo-recipe-runner?

Автоматизирует подбор, валидацию параметров и выкатку официальных Kubernetes-рецептов NVIDIA Dynamo для запуска LLM.

Что требуется подготовить в кластере перед запуском?

В целевом пространстве имён должен существовать секрет hf-token-secret с токеном Hugging Face, а в кластере — настроенный StorageClass по умолчанию для PVC кеша моделей.

Исходный текст

SKILL.md · Apache-2.0
---
name: dynamo-recipe-runner
description: Select, validate, patch, and deploy existing NVIDIA Dynamo Kubernetes recipes. Use for model/backend/GPU/deployment-mode recipe bring-up; use router-starter for router-only mode work and troubleshoot for broken deployments.
license: Apache-2.0
metadata:
  author: Dan Gil <[email protected]>
  tags:
    - dynamo
    - kubernetes
    - recipes
    - bring-up
  permissions:
    - file_read
    - network
    - kubectl_exec
---

# Dynamo Recipe Runner

<!--
SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: CC-BY-4.0
-->

## Purpose

Get from user intent to a working Dynamo recipe endpoint with minimal back and
forth. Do not create new guide content. Operate on the existing `recipes/`
tree, patch the smallest necessary set of manifests, deploy when the user has
cluster access, and prove success with an OpenAI-compatible smoke request.

## Prerequisites

- Python 3.10+ on the operator machine.
- `kubectl` configured with a working cluster context.
- Cluster has a default storage class for model-cache PVCs.
- Hugging Face token stored in a Kubernetes secret named `hf-token-secret`
  (or equivalent) in the target namespace.
- Read access to the `recipes/` tree in the ai-dynamo/dynamo repository.

## Required Inputs

Collect or infer these before changing manifests:

- recipe target: model, framework (`vllm`, `sglang`, `trtllm`, `tokenspeed`), deployment mode, and GPU type/count
- Kubernetes context and namespace
- Hugging Face secret name, usually `hf-token-secret`
- storage class for model cache PVCs
- runtime image tag if the recipe uses a placeholder or stale test image
- whether to run commands or only produce exact commands

If a required value is missing and cannot be inferred from the selected recipe,
ask for only that value.

## Instructions

### 1. Preflight

Run read-only checks first:

```bash
git status --short
python3 scripts/recipe_tool.py list --format table
kubectl config current-context
kubectl get storageclass
kubectl get nodes -o wide
kubectl get namespace "${NAMESPACE}"
kubectl get secret hf-token-secret -n "${NAMESPACE}"
```

If `kubectl` is unavailable or the cluster is unreachable, continue by
selecting and validating the recipe, then return exact commands instead of
pretending the deployment ran.

### 2. Select The Recipe

Use the recipe matrix from `recipes/README.md` and the scanner:

```bash
python3 scripts/recipe_tool.py list \
  --query qwen --framework vllm --mode disagg --format table
```

Prefer an exact existing recipe. Do not invent new manifests unless the user
explicitly asks to author a new recipe.

### 3. Inspect And Validate

Read the selected recipe README, model-cache manifests, `deploy.yaml`, and
`perf.yaml` if present. Then run:

```bash
python3 scripts/recipe_tool.py validate \
  recipes/<model>/<framework>/<mode>
```

Resolve reported blockers before applying manifests: storage class, model cache
PVC, image tag, HF token secret, GPU count, frontend service name, and router
mode.

### 4. Patch Minimal Values

Patch only recipe-specific values needed for this run. Do not reformat whole
YAML files. Common patches:

- `storageClassName`
- image repository/tag
- model path or model cache mount path
- GPU resource requests/limits
- frontend `DYN_ROUTER_MODE`
- namespace only when a manifest hardcodes it

Never write Hugging Face tokens into files or logs. Use Kubernetes secrets.

### 5. Deploy

Follow the selected recipe README when it differs from the default sequence.
The default sequence is:

```bash
kubectl apply -f recipes/<model>/model-cache/ -n "${NAMESPACE}"
kubectl wait --for=condition=Complete job/model-download -n "${NAMESPACE}" --timeout=6000s
kubectl apply -f recipes/<model>/<framework>/<mode>/deploy.yaml -n "${NAMESPACE}"
kubectl get dynamographdeployment -n "${NAMESPACE}"
kubectl get pods -n "${NAMESPACE}" -o wide
```

Wait for the frontend and workers to be ready before testing.

### 6. Smoke Test

Port-forward the frontend service, then verify `/v1/models` and one chat
completion:

```bash
kubectl port-forward svc/<deployment-name>-frontend 8000:8000 -n "${NAMESPACE}"
curl http://127.0.0.1:8000/v1/models
```

If `dynamo-router-starter` is also installed, prefer its `scripts/check_router_health.py`
for the full OpenAI-compatible smoke test. If this fails, switch to
`dynamo-troubleshoot`.

## Available Scripts

| Script | Purpose | Arguments |
|---|---|---|
| `scripts/recipe_tool.py list` | Enumerate available recipes, optionally filtered | `--query`, `--framework`, `--mode`, `--format` |
| `scripts/recipe_tool.py validate` | Validate a recipe directory before apply | positional recipe path |

Invoke via the agentskills.io `run_script()` protocol:

```python
run_script("scripts/recipe_tool.py", args=["list", "--framework", "sglang", "--format", "table"])
run_script("scripts/recipe_tool.py", args=["validate", "recipes/nemotron-3-super-fp8/sglang/agg"])
```

## Examples

List sglang recipes that fit a single 8xB200 node:

```bash
python3 scripts/recipe_tool.py list --framework sglang --format table
```

Validate a specific recipe and resolve blockers before applying:

```bash
python3 scripts/recipe_tool.py validate recipes/nemotron-3-super-fp8/sglang/agg
```

Equivalent through the agent protocol:

```python
run_script("scripts/recipe_tool.py", args=["validate", "recipes/nemotron-3-super-fp8/sglang/agg"])
```

## Output Contract

Return:

- selected recipe path and why it was selected
- exact values patched
- commands run or commands to run
- endpoint and smoke-test result
- unresolved blockers, if any
- next troubleshooting step when deployment does not become healthy

## Limitations

- Operates on the existing `recipes/` tree only. Does not author new manifests.
- Cluster-mutating apply steps require `kubectl` permission to the target namespace.
- Smoke-test depth is intentionally minimal; for full router/endpoint coverage use `dynamo-router-starter`.
- Multi-node disagg transport correctness is out of scope; use `dynamo-interconnect-check` after deploy.

## Troubleshooting

| Symptom | Likely cause | Next step |
|---|---|---|
| `kubectl` cluster unreachable | Context not set or VPN down | Return exact commands instead of running them; resume when cluster is reachable |
| `validate` reports missing storage class | Cluster has no default `StorageClass` | Patch `storageClassName` on the model-cache manifest before applying |
| Model-cache job stuck `Pending` | PVC unbound or HF secret missing | Inspect PVC events; create or rename the HF secret to match the recipe |
| Worker pods `ImagePullBackOff` | Stale image tag or missing pull secret | Patch the image tag; verify image pull secret in the namespace |
| `/v1/models` 4xx/5xx after deploy | Frontend not ready or wrong service port | Wait for pods Ready; re-run port-forward; switch to `dynamo-troubleshoot` if it persists |

## Benchmark

See `BENCHMARK.md` for the NVCARPS-EVAL performance report (auto-generated by the NVSkills CI pipeline). To refresh, re-run `/nvskills-ci` on an upstream PR touching this skill.

## References

- Read `references/k8s-recipe-workflow.md` for command templates and readiness checks.
- Use `scripts/recipe_tool.py` for recipe discovery and lightweight validation.

© Dan Gil · Apache-2.0 · NVIDIA/skills

Похожие скиллы

Всё по теме «ИИ и ML» →
google-cloud-solution-guided-gke-ai-migration официальный google Помогает перенести существующую AI-инференсную нагрузку из Cloud Run, Gemini API или другой среды в self-hosted inference на GKE. CX Codex 4 700установок llm-inference-scaling devops-skills Скилл настраивает автомасштабирование инференса LLM в Kubernetes через KEDA, метрики GPU и очереди Redis. Пригодится при непредсказуемом трафике к vLLM и для экономии на спотовых инстансах. CX Codex +1 343установок multi-tenant-llm-hosting devops-skills Скилл помогает спроектировать общий хостинг LLM для нескольких команд или клиентов: изоляция тенантов, квоты, биллинг и защита от шумных соседей. CX Codex +1 309установок hyperloom-workload-optimizer amd Ставит Hyperloom на хост с AMD Instinct и запускает многоагентную оптимизацию пропускной способности LLM. Нужен, когда модель на MI300X, MI325X или MI355X должна отдавать больше токенов в секунду. CX Codex +1 783установок debug-openshell-cluster NVIDIA Скилл находит причины сбоев шлюза OpenShell, проблем с TLS и ошибок запуска песочниц в контейнерах и Kubernetes. CX Codex +1 474установок gke-inference официальный google Готовит Kubernetes-манифесты для AI/ML-инференса на GKE и помогает выбрать модельный профиль и ускоритель для нового сервинга. CX Codex 6 791установок

Из того же набора178

deepstream-dev Помогает агенту собирать видеоаналитику на NVIDIA DeepStream SDK: GStreamer-пайплайны, вывод через TensorRT, трекинг и отправка сообщений в брокер. CX Codex +1 2 400установок nemo-retriever Индексирует и ищет данные в документах через CLI NeMo Retriever 26.8.1. Пригодится для работы с локальной базой LanceDB или удалённым сервисом поиска без написания обвязочного кода. CX Codex +1 2 400установок rag-eval Оценивает качество RAG по файловому набору с corpus/ и train.json. Нужен для сравнения настроек поиска и генерации по метрикам RAGAS. CX Codex +1 2 400установок cuopt-routing-api-python Скилл учит агента решать задачи маршрутизации транспорта через Python API cuOpt: TSP, VRP и pickup-delivery. Пригодится, когда маршруты считают в Python. CX Codex +1 2 300установок deepstream-import-vision-model Скилл проводит модель детекции объектов из HuggingFace или NGC в пайплайн NVIDIA DeepStream: ONNX, TRT-движок, парсер bbox, бенчмарк и PDF-отчёт. CX Codex +1 2 300установок omniverse-usd-performance-tuning Скилл для диагностики и оптимизации сцен USD: медленная загрузка, низкий FPS, высокая память. Ведёт весь рабочий процесс по фазам. CX Codex +1 2 300установок cuopt-server-api-python Скилл помогает развернуть REST-сервер NVIDIA cuOpt и делать запросы через Python или curl. Пригодится для решения задач маршрутизации, LP и MILP на GPU. CX Codex +1 2 200установок rag-perf Гоняет развёрнутый сервер NVIDIA RAG Blueprint через профилирование и нагрузочный тест aiperf по одному YAML-конфигу. CX Codex +1 2 200установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой