本文へ移動
cccskills
無料GitHub で公開

cookbook-add-model

Add a new model to the SGLang Cookbook (docs/, Mintlify), config-driven format — instantiate the model-agnostic template into a per-model config (+ benchmarks) JSX under src/snippets/configs/, an MDX page, the docs.json nav entry, NEW-tag hygiene, and the homepage vendor card. Interactive, multi-phase. Run with /cookbook-add-model.

インストール方法を見る

含まれるファイル(11)

  • SKILL.md16.7 KB
  • references/authoring-reference.md25.1 KB
  • references/diffusion-authoring.md5.5 KB
  • references/engine-axis.md13.4 KB
  • references/mintlify-authoring.md6.6 KB
  • references/vendor-logo.md3.2 KB
  • templates/benchmarks.jsx.tmpl2.2 KB
  • templates/config.jsx.tmpl18.2 KB
  • templates/diffusion-config.jsx.tmpl6.0 KB
  • templates/diffusion-page.mdx.tmpl1.6 KB
  • templates/page.mdx.tmpl5.8 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Add a model to the SGLang Cookbook

Migrating an existing legacy-template page (one that imports a monolithic …/autoregressive/<slug>-deployment.jsx generator)? Use the cookbook-migrate-model skill instead — same target format, but the legacy page (not the user) is the source of truth.

The cookbook is config-driven: two shared engines contain NO model-specific code — docs/src/snippets/_deployment.jsx (the 5-dim deploy matrix) and _playground.jsx (the diff-based override Playground). Adding a model = adding data: a per-model config (+ optional benchmarks) consumed by both engines, plus an MDX page that imports them. No engine edits.

Instantiate the model-agnostic template (NOT a clone of any live cookbook — the template is decoupled and covers all hardware + all axes):

  • templates/config.jsx.tmpl → docs/src/snippets/configs/<hf-org>/<model-slug>.jsx
  • templates/benchmarks.jsx.tmpl → …/<model-slug>-benchmarks.jsx (skip if no numbers)
  • templates/page.mdx.tmpl → docs/cookbook/<category>/<Vendor>/<ModelName>.mdx

The template uses explicit __TOKEN__ placeholders; you fill them, prune what the model lacks, and replace the EXAMPLE cells with verified recipes. DeepSeek-V4 is a populated instance you can consult, but is not the template.

Deep references (read on demand, don't inline):

Architecture at a glance

┌─────────────────────────────────────────────────────────────────┐
│  cookbook/<category>/<Vendor>/<Model>.mdx                       │
│  import { Deployment } from "/src/snippets/_deployment.jsx";    │
│  import { Playground } from "/src/snippets/_playground.jsx";    │
│  import { config }     from "/src/snippets/configs/.../X.jsx";  │
│  <Deployment config={config} />   <Playground config={config} />│
└─────────────────────────────────────────────────────────────────┘
              │ (config passed as React prop)
              ▼
┌─────────────────────────────────────────────────────────────────┐
│  src/snippets/configs/<vendor>/<model>.jsx                      │
│  export const config = {                                        │
│    supportedHardware, variants, quantizations, strategies, ...  │
│    cells: [ { match:{hw,variant,quant,strategy,nodes},          │
│              env:[...], flags:[...] }, ... ],   // 5-dim matrix  │
│    playgroundFeatures: { attention, moe, parsers, ... },        │
│  };                                                             │
└─────────────────────────────────────────────────────────────────┘
              │ (consumed by BOTH engines — no model code in engines)
              ▼
┌──────────────────────────────────┬──────────────────────────────┐
│  _deployment.jsx                 │  _playground.jsx             │
│  Renders the verified matrix;    │  Renders override chips +    │
│  one cell → its env/flags.       │  diff against the cell.      │
└──────────────────────────────────┴──────────────────────────────┘

The two widgets stay in sync via: the URL hash (deploy mirrors its selection; playground reads it), the sglang-deploy-sel custom event (deploy dispatches on every change; playground listens — replaceState doesn't fire hashchange), and the shared sglang-deploy-env localStorage key (HOST/PORT placeholders).

The main template is autoregressive. Diffusion pages use templates/diffusion-page.mdx.tmpl plus references/diffusion-authoring.md; do not force the autoregressive deployment matrix on them. Omni pages follow their own category structure. All categories still obey the Mintlify / NEW-tag / docs.json / category-card / validation rules below.


Interactive, multi-step workflow. Collect inputs incrementally — don't ask for everything upfront. The real work is the verified cells[] recipes + measured benchmarks (Phases 2 + 4); everything else is filling the template.

Phase 1 — Collect inputs

  1. Model card — HuggingFace repo/URL. Fetch the page and extract description, param count, architecture, context length, license. (Fetching guards factual bugs like an off-by-a-few-B param count.) If the model isn't public, ask the user.
  2. Variants / quantizations — keep separate: variants are size/mode (e.g. Flash/Pro, Instruct/Thinking); quantizations come from the HF card / linked repos (BF16/FP8/FP4/…). Default to BF16 when a full-precision repo exists.
  3. Tested hardware + parallelism — which platforms are actually tested, and TP/EP/DP for each. List only tested hw (unlisted greys out).
  4. Verified launch recipes — the full sglang serve flags per (hw × variant × quant × strategy × nodes) combo → these become cells[]. Rewrite any python -m sglang.launch_server to sglang serve form.
  5. sglang version / image tag — ask which sglang build the recipes + benchmarks ran on (a release like 0.5.x, or main/nightly). Never guess or hallucinate it. This one tag fills dockerImages and the benchmarks' sglang_version; when the user is unsure, default the image to lmsysorg/sglang:dev (nightly) rather than inventing a release.
  6. Pre-flight: gh pr list --repo sgl-project/sglang --search "<model>" (dup check).

Hardware reference (the shared HARDWARE_CATALOG in _deployment.jsx). A GPU not in this table (RTX PRO 6000, GH200, future chips) goes in the model's own config.hardware ({id,label,vram,vendor}) — the engine merges it in; don't edit the engine catalog:

PlatformVendorVRAMDocker image
H100NVIDIA80GBlmsysorg/sglang:<ver>
H200NVIDIA141GBlmsysorg/sglang:<ver>
B200NVIDIA192GBlmsysorg/sglang:<ver>
B300NVIDIA288GBlmsysorg/sglang:<ver> (or -cu130 when required)
GB200NVIDIA192GBlmsysorg/sglang:<ver> (or -cu130)
GB300NVIDIA288GBlmsysorg/sglang:<ver> (or -cu130)
DGX SparkNVIDIA128GB (unified)lmsysorg/sglang:<ver> — needs a CUDA 13 build
MI300XAMD192GBlmsysorg/sglang:<ver>-rocm720-mi30x
MI325XAMD256GBlmsysorg/sglang:<ver>-rocm720-mi30x
MI350XAMD288GBlmsysorg/sglang:<ver>-rocm720-mi35x
MI355XAMD288GBlmsysorg/sglang:<ver>-rocm720-mi35x
  • Image tag (<ver>): don't guess — ask the user for the tag the recipes ran on, or default to dev (nightly). The same tag goes in dockerImages and benchmarks' sglang_version; the engine falls back to lmsysorg/sglang:dev for any unmapped hw.
  • TP sizing (sanity-check recipes): weight_GB / gpu_mem, round up to a power of 2, ~20–30% headroom. BF16 ≈ params×2 GB, FP8 ≈ ×1, FP4 ≈ ×0.5. MoE → total weight, not active params. FP4 is Blackwell-only (B200/B300/GB200/GB300/DGX Spark). GB200/GB300 single-node hosts are typically 4 GPUs (TP=4 ceiling); a DGX Spark is 1 GPU, so its only multi-GPU topology is TP=2 across 2 nodes.
  • Platform flags: Blackwell may need --attention-backend trtllm_mha; AMD typically needs --attention-backend triton + env SGLANG_USE_AITER=1 / SGLANG_ROCM_FUSED_DECODE_MLA=0 (check AITER TP constraints, e.g. heads_per_gpu % 16 == 0).
  • EP (MoE): 8-GPU NVIDIA --tp 8 --ep 8; AMD EP = TP; small NVIDIA (TP≤4) omit --ep unless benchmarked. (The template's AMD example cell shows these.)

Phase 2 — Instantiate the template

For a diffusion model, instantiate templates/diffusion-page.mdx.tmpl and keep the shared DiffusionModelTags component, plus templates/diffusion-config.jsx.tmpl for the opt-in scoped command builder. Put the compact install command and builder in §1 Quick start. The first two paragraphs in §2 Model capabilities are not generic filler: they must state the model's capability range, strongest differentiator, when to choose it, and at least one real deployment or capability boundary. Put orthogonal runtime features in scope: "serve" or scope: "request", not in the base recipe; use the schema from references/diffusion-authoring.md.

  1. Copy the three template files to their target paths (above). Note the two vendor-folder conventions: under configs/ the folder is the HuggingFace org (deepseek-ai); under cookbook/ it's the display vendor (DeepSeek).

  2. Replace every __TOKEN__: __MODEL_DISPLAY__, __MODEL_SLUG__, __HF_ORG__, __HF_REPO__, __REASONING_PARSER__, __TOOLCALL_PARSER__, __ONE_LINER__. Verify none remain: grep -rn '__[A-Z_]*__' <new files>.

  3. Prune to what the model supports (delete, don't stub) — using references/authoring-reference.md:

    • supportedHardware + the EXAMPLE cells: keep your tested families; delete the mi* ids + AMD example cell if no AMD recipe, etc. A GPU not in the shared catalog (e.g. RTX PRO 6000) → declare it in config.hardware and add its id here.
    • playgroundFeatures axes: remove the megamoe backend option + the megamoeQuant block from the moe axis (non-Blackwell-MoE), delete hisparse (non-DSA), pdDisagg/router (no PD), the parsers axis (no parsers), etc.
    • quantizations / variants: drop what the model doesn't ship; collapse variants to single default if there's no variant axis (then drop the variant half of modelNames/defaultAccuracy keys).
  4. Fill cells[] with the verified recipes from Phase 1 (replace every EXAMPLE cell; set verified: true only on tested combos), and modelNames with real HF slugs, dockerImages for your hw (use the Phase-1 tag, or default lmsysorg/sglang:dev — never a guessed release; key by hw, or a more specific key — hw|variant|quant, variant|quant, hw|quant|strategy, hw|quant, resolved in that order before hw — when one variant/quant/strategy needs its own image), multiNodeHints only for fabric-specific hw (e.g. gb200).

  5. Diffusion pages: add the ComfyUI section. Every diffusion cookbook page ends with a ## <n>. Run in ComfyUI section so a reader never has to guess whether the model is reachable from ComfyUI. It is one component; the per-model facts live in the component, not the page:

    ## <n>. Run in ComfyUI
    
    import { ComfyUISupport } from '/src/snippets/diffusion/comfyui-support.jsx';
    
    <ComfyUISupport model="<key>" />
    

    Pick model from the table in docs/src/snippets/diffusion/comfyui-support.jsx. Use the model's own key when it has an entry (its executor or dedicated node differs); otherwise use the generic image or video. A model gets its own key only when the plugin actually treats it specially — an entry in executor_class_dict (python/sglang/multimodal_gen/apps/ComfyUI_SGLDiffusion/core/generator.py) or a dedicated node. Adding a key without the matching plugin support makes the page lie.

Site-wiring (do all three)

  • docs/docs.json — add the page under Cookbook → <category> → <Vendor>, at the top of that vendor's pages (root-relative, no .mdx: cookbook/<category>/<Vendor>/<Model>). New vendor group → insert in the section's local ordering.
  • NEW-tag hygiene — the new page keeps tag: NEW (from the template). Scan the vendor dir for existing NEW and strip it from siblings; verify ≤1: grep -rn 'tag: NEW' docs/cookbook/<category>/<Vendor>/ → at most one result. (Scan files; don't assume the first docs.json entry holds NEW.)
  • Homepage card — docs/cookbook/<category>/intro.mdx: if the org already has a <Card>, update only its href (keep img). If the org is new, add a <Card> (title = nav-group name; keep card order aligned with docs.json) and create its logo: ask the user for the brand logo, then generate the conforming icon-only 940×525 RGBA transparent PNG → docs/cards/logos/<org-slug>.png per references/vendor-logo.md (track with git add -f — *.png is gitignored repo-wide). Never invent or copy a logo.

Phase 3 — Validate

cd docs
mint validate        # frontmatter, missing nav entries, MDX/JSX errors
mint broken-links
mint dev             # visual smoke test at http://localhost:3000/cookbook/<category>/<Vendor>/<Model>

Spot-check: cells render sensible commands; URL-hash nav persists across reload; the Playground inherits the Deploy selection live; each axis toggle produces the expected diff; Docker mode wraps in docker run with the right image; multi-node cells emit the hints + --nnodes N; cURL resolves the model name; the NEW badge shows on the new page and is gone from same-vendor siblings; the homepage card points to the new model.

Phase 4 — Interactive testing

The user deploys each cell, runs the benches, and pastes results; you fill the data:

  • mark each tested cells[] entry verified: true (absent = yellow/unverified badge);
  • fill the <model>-benchmarks.jsx entries (one per cell match) with measured speed/accuracy + the sglang_version the user reports (don't invent one — the template's 0.0.0 is a deliberate TODO); set model-level defaultAccuracy per variant. Leave a cell's entry as a bare match stub if it has no numbers yet (the card shows "pending").

Phase 5 — Prose & config tips

Read references/mintlify-authoring.md first (it carries the parser-output-shape / thinking-mode / Output-Example / no-hardcoded-sampling rules + the Mintlify forbidden-syntax list). Then rewrite the MDX prose from the HF card + user notes: §1 Model Introduction (description, links, params, license, variants table), §2 Configuration Tips (hw-specific tuning, caveats), §3 Advanced Usage (Reasoning / Tool-Calling / HiCache — keep only what applies; match the reasoning example to the parser's output shape; each runnable block gets an **Output Example:**).

For diffusion pages, follow the category-specific Quick start and capability contract in references/diffusion-authoring.md. Run node docs/scripts/check_cookbook_configs.mjs to verify the tag widget and introduction structure before rendering the page.

Phase 6 — Review

/cookbook-review-pr <PR number>

Git workflow

Always branch — never commit to main directly.

git checkout -b add-<model>-cookbook
git add docs/src/snippets/configs/<hf-org>/<slug>.jsx \
        docs/src/snippets/configs/<hf-org>/<slug>-benchmarks.jsx \
        docs/cookbook/<category>/<Vendor>/<Model>.mdx \
        docs/docs.json docs/cookbook/<category>/intro.mdx
git commit -m "Add <Display-Name> cookbook"
git push -u origin add-<model>-cookbook
gh pr create --title "Add <Display-Name> cookbook" --body "..."

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Step-by-step tutorial for adding a new lightweight JIT CUDA kernel to sglang.kernels JIT infrastructure and public operator groups

日本語の概要は準備中です。原文の説明を表示しています。

sgl-project/sglang3.7万2026年10月13日 更新

Step-by-step tutorial for adding a heavyweight AOT CUDA/C++ kernel to sgl-kernel (including tests & benchmarks)

日本語の概要は準備中です。原文の説明を表示しています。

sgl-project/sglang3.7万2026年10月13日 更新

Start and persistently pursue a goal to babysit an SGLang pull request until selected GitHub Actions workflows pass on the latest PR head. Use when asked to monitor, babysit, retry, or fix PR CI for lint.yml, pr-test.yml, pr-test-extra.yml, AMD, or other named workflows; classify failures as PR-related versus flaky or infrastructural, auto-fix and push only small clean fixes, rerun failed jobs only up to 10 times, and ignore unselected workflows.

日本語の概要は準備中です。原文の説明を表示しています。

sgl-project/sglang3.7万2026年10月13日 更新

Audit the existing test tree and CI configuration for improvements, using a catalog of patterns previously applied in this repo. Use when asked to audit tests or CI, shrink CI time or cost, find redundant or misplaced tests, clean up a test group, or review whether a CI change follows established practice.

日本語の概要は準備中です。原文の説明を表示しています。

sgl-project/sglang3.7万2026年10月13日 更新

Guide to SGLang CI workflow orchestration — stage ordering, fail-fast, gating, partitioning, execution modes, and debugging CI failures. Use when modifying CI workflows, adding stages, debugging CI pipeline issues, or understanding how tests are dispatched and gated across stages.

日本語の概要は準備中です。原文の説明を表示しています。

sgl-project/sglang3.7万2026年10月13日 更新

Audit SGLang startup logs, save evidence, and propose cleanup for user review. With no arguments, run Qwen3-8B at TP1 and TP2 plus gpt-oss-20b at TP1.

日本語の概要は準備中です。原文の説明を表示しています。

sgl-project/sglang3.7万2026年10月13日 更新

sgl-project のスキルをすべて見る

このスキルの問題を報告する