[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CFVTW32TE82Y5NA85H83CK":3,"skill-same:01M6CFVTW32TE82Y5NA85H83CK":428},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":5,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":60,"ownerHtmlUrl":61,"ownerBlogUrl":62,"ownerDescription":6,"updatedAt":63,"install":64,"resources":77},"01M6CFVTW32TE82Y5NA85H83CK","runpod",null,"Start here when the Runpod lane is unclear: picks the skill for a task (runpod-mcp and the journey playbooks it routes to, such as runpod-serverless-deploy, runpod-pod-deploy, runpod-pod-doctor and runpod-cost-audit; runpodctl, runpod-flash, runpod-companion-clis, runpod-usage, runpod-templates, runpod-build-template, runpod-migrate) and indexes two dozen end-to-end worked examples (golden paths). Use it before any multi-step or provisioning task, even when the lane is clear, to check for a matching golden path; for the Runpod MCP tools, runpod-mcp owns the answer contract, connection and tool rules.","runpod\u002Frunpod-plugins-official","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F95939477?v=4","01M6CFSV7PCCKKMKEV6AM8XC7H","Runpod","01M6CFSVC1QMHFR2P1HF14EZ08",49,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"flash","when","doctor","runpodctl","path","Tools","audit","journey","endpoint","golden","paths","companion","end","volume","start","network","template","migrate","MCP","2026-11-10 10:12:30",false,"---\nname: runpod\ndescription: >-\n  Start here when the Runpod lane is unclear: picks the skill for a task\n  (runpod-mcp and the journey playbooks it routes to, such as runpod-serverless-deploy,\n  runpod-pod-deploy, runpod-pod-doctor and runpod-cost-audit; runpodctl, runpod-flash, runpod-companion-clis,\n  runpod-usage, runpod-templates, runpod-build-template, runpod-migrate) and\n  indexes two dozen end-to-end worked examples (golden paths). Use it before any\n  multi-step or provisioning task, even when the lane is clear, to check for a\n  matching golden path; for the Runpod MCP tools, runpod-mcp owns\n  the answer contract, connection and tool rules.\nmetadata:\n  author: runpod\n  version: \"2.1.0\" # x-release-please-version\n  concepts: [runpod-platform, pod, serverless-endpoint, template, network-volume, hub-repo]\nlicense: Apache-2.0\n---\n\n# Runpod (router)\n\nThe entrypoint for the Runpod skills. This skill does no work itself: it picks the lane\nand points at the [golden path](#worked-examples-golden-paths) or journey skill that\ncarries the procedure. For a multi-step or provisioning task, check the worked examples\nfirst and let the matching one pick the lane; otherwise read the matching skill's\n`SKILL.md` next.\n\n**Who owns what** (one home per rule; the others link to it):\n\n| Topic | Owner |\n| --- | --- |\n| Lane choice, MCP-vs-runpodctl matrix, golden-path index | this skill |\n| MCP answer contract, MCP connection and auth, MCP tool-use rules, journey routing | [runpod-mcp](..\u002Frunpod-mcp\u002FSKILL.md) (load it before the first Runpod MCP tool call) |\n| Credentials for every lane, tool updates, control-plane check | [`getting-started.md`](..\u002Frunpod-usage\u002Freference\u002Fgetting-started.md) |\n| Deployment loop (prefer prebuilt, plan, verify, teardown) | [`development-loop.md`](..\u002Frunpod-usage\u002Freference\u002Fdevelopment-loop.md) |\n| CUDA floor, Secure vs Community Cloud | [`gpu-selection.md`](..\u002Frunpod-usage\u002Freference\u002Fgpu-selection.md) (steps 3 and 5) |\n\n## The lanes\n\n| Lane | Use it for |\n| --- | --- |\n| **runpod-mcp** | Manage infra (pods, endpoints, jobs, templates, volumes, registries, catalog, billing) via **structured tool calls** — when the Runpod MCP tools are connected in this session. It routes on to the journey skill for the task. |\n| **runpodctl** | Manage the same infra from a **terminal\u002FCI\u002Fscript**, including Hub browse\u002Fdeploy, file transfer (`send`\u002F`receive`, `network-volume upload`\u002F`download`), SSH keys, `doctor` setup, and model cache. |\n| **runpod-flash** | **Write Python** that runs on Runpod serverless with the Runpod SDK — `runpod.App` with `@app.queue`\u002F`@app.api`\u002F`@app.task`, `rp flash dev`, `rp flash deploy`; also maintains or migrates legacy `runpod-flash` projects. Code-first, not infra management. |\n| **runpod-companion-clis** | **Prerequisite artifacts**: download a model (`hf`), build\u002Fpush an image (`docker`), repos\u002Freleases (`gh`), other S3 tools against a network volume (`aws`; runpodctl v3.1.0+ `network-volume upload`\u002F`download` is the default for moving files). |\n| **runpod-usage** | **Understand** how Runpod works before acting — pods vs serverless, building a container, storage, GPU selection, gotchas. Knowledge only. |\n| **runpod-templates** | **Official prebuilt pod templates** (ComfyUI, PyTorch, …): is there one for this workload, and what does its image ship — ports, paths, autostart, readiness, what's missing on first boot. Reference + routing hub; deploy via runpod-mcp\u002Frunpodctl. |\n| **runpod-build-template** | **Create or improve a template project** from a request, local code, or GitHub: documented Dockerfile, app-specific files, and Pod\u002Fqueue\u002Fload-balanced deployment handoff. |\n| **runpod-migrate** | **Move existing code** off the GraphQL API or REST v1 onto REST v2 — inventory which parts use which version, rewrite call sites, flag breaking changes. Edits the user's code; does not manage infra. |\n\n## These skills are a snapshot; the tools are the source of truth\n\nEvery lane wraps something that ships on its own release train and moves faster than this\nrepo. So route with these skills, but **take capability and syntax from the tool in front\nof you**:\n\n| Lane | Ask it directly |\n| --- | --- |\n| runpodctl | `runpodctl --help`, `runpodctl \u003Cresource> \u003Caction> --help`, `runpodctl version`. For failure shapes, run a command wrong on purpose and read the JSON |\n| runpod-mcp | your client's tool list (`\u002Fmcp` in Claude Code); rules in [runpod-mcp](..\u002Frunpod-mcp\u002FSKILL.md#the-server-is-the-source-of-truth) |\n| runpod-flash | `rp --help`, `rp flash \u003Ccommand> --help`, `pip show runpod`, and the dev\u002Fdeploy output |\n| runpod-companion-clis | that CLI's own `--help` (`hf`, `gh`, `docker`, `aws`) |\n| runpod-templates | `runpodctl template list --type official`, `template get \u003Cid>` (its readme is authoritative) |\n| REST v2 | the live spec at `https:\u002F\u002Fapi.runpod.io\u002Fv2\u002Fopenapi.json` |\n\n**Never tell a user a tool cannot do something without checking first.** A missing capability\nis the claim most likely to be out of date here, and it is the one a reader has no reason to\nreverify — it has already gone stale twice (runpodctl v2.9.0 added `serverless health`, v2.10.0\nadded `pod logs`\u002F`serverless logs`). If a limit still holds, name the version it holds for\nrather than saying \"cannot\".\n\n## Before the first command\n\n- **Update the CLI you are about to use** (`runpodctl update`, `rp update`; the MCP needs\n  no step). runpodctl before v2.12.0 accepts `--stop-after`\u002F`--terminate-after`, which the\n  backend never enforced, so pods kept billing past the deadline.\n- **Check the control plane before infra work**: `runpodctl user` succeeds, or `\u002Fmcp` shows\n  `runpod` **Connected**. If neither works, help the user set up rather than limping on.\n- **MCP OAuth first, a key only when a task needs one**: get `RUNPOD_API_KEY` (`rp login`\n  with a human at an interactive terminal, else `export`) at the first CLI-only step; with no user in\n  the loop, use the key from the start. Companion CLIs use their **own** credentials, never\n  `RUNPOD_API_KEY`.\n\nDetails, install commands and the per-lane key table:\n[`getting-started.md`](..\u002Frunpod-usage\u002Freference\u002Fgetting-started.md).\n\n## How to route\n\n**0. Does a worked example already cover this?** For anything beyond a single call,\ncheck [the golden-paths index](#worked-examples-golden-paths) *before* picking a lane —\na matching path already names the lane(s), the flags, the ordering, and the traps, so\nrouting becomes reading rather than re-deriving. Check it when **any** of these is true:\n\n- the task needs **more than one resource** (image + template + endpoint, pod + volume,\n  multi-region, …) or **more than one lane**\n- it **provisions something billable**, or the user's ask is shaped like *\"get X running \u002F\n  deployed \u002F working\"*\n- it involves **storage, networking, autoscaling, streaming, or debugging a live resource** —\n  the areas where the non-obvious ordering is the whole difficulty\n- you are about to write a **multi-step plan** for it\n\nSkip step 0 for a single read or a single CRUD call (\"list my pods\", \"stop pod X\",\n\"what GPUs are available\") — go straight to the lane. **A matching golden path outranks\nthis router's lane table for workflow selection**. Its commands do not establish that a\ncapability is CLI-only: choose the execution lane from the live tool surface and the\ncapability matrix below, while preserving the path's ordering and verification steps.\n\nFor an explicit request to create or optimize a Dockerfile\u002Ftemplate project, match\n[path 26](.\u002Fgolden-paths\u002F26-template-project\u002FREADME.md) before generic deployment examples;\nGP26 is an authoring specification with local checks, not a live-verified deployment.\nAn existing prebuilt does not replace the requested deliverable.\n\n1. **Conceptual question, or an unmade design choice** (serverless vs pod? which\n   GPU? bake the model or mount a volume?) → read **runpod-usage** first, then\n   continue with the answer.\n2. **Author or improve a template project \u002F Dockerfile**, including converting local\n   code or a GitHub repository, or prepare its Hub listing files → **runpod-build-template**.\n   It delegates build\u002Fpush mechanics and infrastructure work to their existing lanes.\n   Registering an already-built image as a reusable template (\"make a template from\n   my image\") and browsing\u002Fdeploying an existing Hub listing use the infrastructure\n   lanes below; registration needs no new Dockerfile.\n3. **Run a common workload on a pod, or fix a template pod** (\"run ComfyUI \u002F\n   PyTorch dev box\", won't boot, missing models) → **runpod-templates** — check for\n   an official prebuilt before planning any install, and let it route repairs.\n4. **Write\u002Fiterate\u002Fship your own code on Runpod GPUs using its code-first workflow** → **runpod-flash**.\n5. **Produce an artifact** (download a model, build+push an image, create a repo\n   release, sync data to a volume) → **runpod-companion-clis**.\n6. **Migrate existing code between Runpod API versions** — \"move us to REST v2\",\n   \"which Runpod API is this repo on?\", \"what breaks if we upgrade?\" →\n   **runpod-migrate**. (Calling the API to *do* something is a different job; that\n   is the infra lanes below.)\n7. **Manage infrastructure** (create\u002Flist\u002Fupdate\u002Fdelete pods, endpoints,\n   templates, volumes; list GPUs\u002Fdata centers; run a serverless job; billing):\n   - A capability only the CLI has (the runpodctl rows of the matrix below) → **runpodctl**.\n   - Otherwise, if the Runpod **MCP tools are connected** in this session\n     (`create-pod`, `list-endpoints`, … are available) → **runpod-mcp**.\n   - Otherwise (shell-only agent, no MCP) → **runpodctl**.\n\n### runpod-mcp vs runpodctl (the overlap)\n\nBoth drive the same Runpod API, so they overlap on infra CRUD. Choose by\n**capability first, environment second**:\n\n- **MCP wins on convenience** for simple, structured operations — reads and basic\n  CRUD — when its tools are connected (typed params, no shell quoting).\n- **runpodctl takes over when an operation needs a capability MCP lacks** — even\n  if MCP is connected — and is the only option for a shell-only agent or when the\n  user wants a reproducible command.\n\nCapability matrix (pick the preferred lane per operation):\n\n| Operation | Preferred lane | Why |\n| --- | --- | --- |\n| List\u002Fget anything; start\u002Fstop\u002Frestart\u002Fdelete a pod; simple CRUD on endpoints, templates, volumes, registries; catalog; billing | **runpod-mcp** if connected, else runpodctl | Simple structured ops — MCP is typed and convenient |\n| Create a **simple** pod (one image + one GPU) | **runpod-mcp** if connected, else runpodctl | Both handle it |\n| Create a pod **from a template**, a **CPU** pod, or both together | **runpod-mcp** if connected, else runpodctl | MCP's create-pod takes `templateId` and, for CPU, a `cpu` object in place of `gpu`; template + CPU in one create live-verified 2026-10-29. runpodctl v3 sends the same v2 create, so it is no fallback. Field semantics: [runpod-mcp pod creates](..\u002Frunpod-mcp\u002FSKILL.md#use-mcp-vs-runpodctl) |\n| Create a pod with a **multi-GPU priority list** | **neither**: one GPU type per create | v2 `create-pod` takes one `gpu.id`, and runpodctl rejects a comma list in `--gpu-id` (`only one gpu id is supported`; checked through v3.0.1). Pick one type from the stock read; on a capacity error, retry with the next |\n| Browse or deploy an existing **Hub** listing | **runpod-mcp** if connected and it exposes the requested operation, else runpodctl | Check the live tool surface; Hub is not a reason by itself to switch to the CLI |\n| **File transfer** (`send`\u002F`receive`, `network-volume upload`\u002F`download`), **SSH** keys\u002Finfo, **`doctor`** setup, **model** cache | **runpodctl** | MCP has no tool for these |\n| Invoke a serverless job (`run`\u002F`runsync`\u002Fstatus\u002Fstream) | **runpod-mcp** if connected, else runpodctl | Both lanes have first-class job commands now (runpodctl `serverless run`\u002F`status`\u002F`health`, v2.9.0+); MCP is typed, and only MCP streams a job's incremental output (`stream-job`) |\n| Read **pod or worker logs** | **either** — runpod-mcp if connected, else runpodctl | Both lanes read them: MCP `stream-pod-logs`\u002F`stream-worker-logs` return parsed frames; runpodctl `pod logs`\u002F`serverless logs` emit json lines and `--follow` (v2.10.0+) |\n\nRule of thumb: **default to MCP for the easy stuff, hand off to runpodctl the\nmoment an op needs a flag\u002Ffeature MCP doesn't expose.**\n\n## Deploying a workload (the golden loop)\n\nFor any \"get \u003CX> running on Runpod\" task, follow\n[`development-loop.md`](..\u002Frunpod-usage\u002Freference\u002Fdevelopment-loop.md): decide pod vs\nserverless → provision → set up (only if from-scratch) → verify → deliver → cost-guard +\nteardown. Its binding rules, in one line each: **prefer a prebuilt\ntemplate \u002F Hub worker** unless the user asked for a custom template project; **pin the CUDA\nfloor** on every GPU create (`--min-cuda-version 12.8` \u002F `gpu.minCudaVersion: \"12.8\"`, `13.0` only for a CUDA-13 image; without it an\nimage can land on a host too old for it and die at startup or silently run on CPU;\n[why](..\u002Frunpod-usage\u002Freference\u002Fgpu-selection.md#step-3-pin-the-cuda-floor)); **default to\nSecure Cloud**; **cache vs network volume is a latency call** (download time is not billed, but a cache miss\nholds the worker start, so the job queues and the endpoint looks idle); **stock picks the data\ncenter, the network volume follows** (read per-data-center GPU stock, create the volume once\nwhere the GPU is, and on a stock refusal keep it: retry once there or let the user choose;\n[why](..\u002Frunpod-usage\u002Freference\u002Fstorage.md#default-prefer-a-network-volume)); and **verify with a real\nrequest from outside before delivering** — \"Running\"\u002F\"ready\" does not mean serving.\n\nIt branches to two sub-loops:\n\n- **Service you open at a URL** (Ollama, ComfyUI, dev box) →\n  [`runpod-usage\u002Freference\u002Fpod-workflows.md`](..\u002Frunpod-usage\u002Freference\u002Fpod-workflows.md)\n  (ports + env + volume at creation, SSH-exec install, bind `0.0.0.0`, poll the\n  proxy URL). Execute in the runpodctl lane.\n- **Request\u002Fresponse API that scales to zero** (Whisper, inference) →\n  [`runpod-usage\u002Freference\u002Fendpoint-workflows.md`](..\u002Frunpod-usage\u002Freference\u002Fendpoint-workflows.md)\n  (Hub worker vs flash vs custom image; invoke `\u002Frun`\u002F`\u002Frunsync`; poll job status).\n\n## Worked examples (golden paths)\n\nThis is **step 0 of routing**, not an appendix. Two dozen end-to-end scenarios live in\n[`.\u002Fgolden-paths\u002FREADME.md`](.\u002Fgolden-paths\u002FREADME.md), each with a status header\n(live-verified with a date, spec-checked, or legacy; check it before trusting a path), the\nreal commands and observed output, plus a Gotchas and a Cost & cleanup section, which is\nthe part that is expensive to rediscover.\n\n**Match the task to a row below and open that path before you plan or call anything.**\nA partial match is still worth opening: the closest path's ordering and gotchas usually\ntransfer even when the model, GPU, or region does not. Only fall through to the lane\ntables above when nothing here is close.\n\n| Want to… | Golden path |\n| --- | --- |\n| Run a server (Ollama\u002FComfyUI) on a pod at a URL | [01](.\u002Fgolden-paths\u002F01-ollama-pod\u002FREADME.md), [02](.\u002Fgolden-paths\u002F02-comfyui-pod\u002FREADME.md) |\n| Deploy a serverless model endpoint (Hub \u002F flash \u002F custom image) | [03](.\u002Fgolden-paths\u002F03-whisper-endpoint\u002FREADME.md), [05](.\u002Fgolden-paths\u002F05-model-to-endpoint-pipeline.md) |\n| Serve an LLM with vLLM (Pod, load-balancing or Hub queue endpoint) | [27 — vLLM Pod → endpoint](.\u002Fgolden-paths\u002F27-vllm-pod-to-endpoint.md); procedure in [runpod-vllm](..\u002Frunpod-vllm\u002FSKILL.md) |\n| Install vLLM or ComfyUI privately on a Pod you already run (pinned, loopback, API-driven) | vLLM: [runpod-vllm existing-pod](..\u002Frunpod-vllm\u002Freference\u002Fexisting-pod.md); ComfyUI: [02 Variant C](.\u002Fgolden-paths\u002F02-comfyui-pod\u002Fvariant-c-pinned-api.md) |\n| Serve a HuggingFace model without baking it in or a volume (host-cached) | [20 — model caching (`--model-reference`)](.\u002Fgolden-paths\u002F20-model-caching-endpoint.md) |\n| Call a ready hosted model (no deploy) | [11 — Public Endpoints](.\u002Fgolden-paths\u002F11-public-endpoints.md) |\n| Fine-tune, then serve the result | [04](.\u002Fgolden-paths\u002F04-finetune-pod.md), [08](.\u002Fgolden-paths\u002F08-finetune-to-serverless.md) |\n| Interactive dev box (SSH \u002F VS Code) | [06](.\u002Fgolden-paths\u002F06-dev-pod.md) |\n| Move data pod → volume → serverless | [07](.\u002Fgolden-paths\u002F07-network-volume-handoff.md) |\n| **Custom serverless when flash isn't enough** (dual-mode image dev loop) | [09](.\u002Fgolden-paths\u002F09-custom-serverless-dev-loop\u002FREADME.md) |\n| Create or improve a complete template project from code, a repo or an app request | [26 — project authoring](.\u002Fgolden-paths\u002F26-template-project\u002FREADME.md) |\n| Build a minimal image for a target (pod vs serverless queue) | [22 (pod)](.\u002Fgolden-paths\u002F22-minimal-pod-image\u002FREADME.md), [23 (queue)](.\u002Fgolden-paths\u002F23-minimal-queue-image\u002FREADME.md); concepts in [building-images](..\u002Frunpod-usage\u002Freference\u002Fbuilding-images.md) |\n| Decide what to bake into the image vs mount on a network volume | [25 — bake vs mount](.\u002Fgolden-paths\u002F25-bake-vs-mount\u002FREADME.md) |\n| Pick a network-volume **storage tier** (standard vs high-performance) | [21 — storage tiers](.\u002Fgolden-paths\u002F21-storage-tiers.md) |\n| **High availability \u002F multi-region** serverless (multi-volume + data sync) | [10](.\u002Fgolden-paths\u002F10-multi-region-ha-serverless.md), [19 (3-region)](.\u002Fgolden-paths\u002F19-three-region-same-file.md) |\n| Stream output incrementally (`\u002Fstream`) | [12](.\u002Fgolden-paths\u002F12-serverless-streaming.md) |\n| Tune autoscaling \u002F raise per-worker throughput | [13 (autoscaling)](.\u002Fgolden-paths\u002F13-autoscaling-tuning.md), [18 (concurrency)](.\u002Fgolden-paths\u002F18-concurrent-handler.md) |\n| Load-balancing \u002F HTTP-server or WebSocket worker | [14 (LB)](.\u002Fgolden-paths\u002F14-load-balancing-endpoint.md), [17 (WebSocket)](.\u002Fgolden-paths\u002F17-serverless-websocket.md) |\n| Get notified on job completion (push, not poll) | [16 — webhooks](.\u002Fgolden-paths\u002F16-serverless-webhooks.md) |\n| Check health \u002F debug a failing endpoint | [15 — monitor & debug](.\u002Fgolden-paths\u002F15-monitor-and-debug.md) |\n\n## Multi-lane tasks\n\nSequence is always **understand → produce artifacts → manage infra → verify**,\nbecause infra can only reference artifacts that already exist. Keep each step in\none lane, and switch lanes at credential boundaries.\n\nExample — \"deploy `openai\u002Fgpt-oss-20b` to a serverless endpoint\":\n1. **runpod-usage** — serverless vs pod, GPU tier for 20B, bake vs mount vs cache.\n2. **runpod-companion-clis** — `hf download …`, `docker build --platform=linux\u002Famd64 …`, `docker push`.\n3. **runpod-mcp** or **runpodctl** — create the endpoint referencing the image + GPU pool.\n4. Same infra lane — invoke the endpoint \u002F check status to verify.\n","# Runpod (router)\n\nThe entrypoint for the Runpod skills. This skill does no work itself: it picks the lane\nand points at the [golden path](#worked-examples-golden-paths) or journey skill that\ncarries the procedure. For a multi-step or provisioning task, check the worked examples\nfirst and let the matching one pick the lane; otherwise read the matching skill's\n`SKILL.md` next.\n\n**Who owns what** (one home per rule; the others link to it):\n\n| Topic | Owner |\n| --- | --- |\n| Lane choice, MCP-vs-runpodctl matrix, golden-path index | this skill |\n| MCP answer contract, MCP connection and auth, MCP tool-use rules, journey routing | [runpod-mcp](..\u002Frunpod-mcp\u002FSKILL.md) (load it before the first Runpod MCP tool call) |\n| Credentials for every lane, tool updates, control-plane check | [`getting-started.md`](..\u002Frunpod-usage\u002Freference\u002Fgetting-started.md) |\n| Deployment loop (prefer prebuilt, plan, verify, teardown) | [`development-loop.md`](..\u002Frunpod-usage\u002Freference\u002Fdevelopment-loop.md) |\n| CUDA floor, Secure vs Community Cloud | [`gpu-selection.md`](..\u002Frunpod-usage\u002Freference\u002Fgpu-selection.md) (steps 3 and 5) |\n\n## The lanes\n\n| Lane | Use it for |\n| --- | --- |\n| **runpod-mcp** | Manage infra (pods, endpoints, jobs, templates, volumes, registries, catalog, billing) via **structured tool calls** — when the Runpod MCP tools are connected in this session. It routes on to the journey skill for the task. |\n| **runpodctl** | Manage the same infra from a **terminal\u002FCI\u002Fscript**, including Hub browse\u002Fdeploy, file transfer (`send`\u002F`receive`, `network-volume upload`\u002F`download`), SSH keys, `doctor` setup, and model cache. |\n| **runpod-flash** | **Write Python** that runs on Runpod serverless with the Runpod SDK — `runpod.App` with `@app.queue`\u002F`@app.api`\u002F`@app.task`, `rp flash dev`, `rp flash deploy`; also maintains or migrates legacy `runpod-flash` projects. Code-first, not infra management. |\n| **runpod-companion-clis** | **Prerequisite artifacts**: download a model (`hf`), build\u002Fpush an image (`docker`), repos\u002Freleases (`gh`), other S3 tools against a network volume (`aws`; runpodctl v3.1.0+ `network-volume upload`\u002F`download` is the default for moving files). |\n| **runpod-usage** | **Understand** how Runpod works before acting — pods vs serverless, building a container, storage, GPU selection, gotchas. Knowledge only. |\n| **runpod-templates** | **Official prebuilt pod templates** (ComfyUI, PyTorch, …): is there one for this workload, and what does its image ship — ports, paths, autostart, readiness, what's missing on first boot. Reference + routing hub; deploy via runpod-mcp\u002Frunpodctl. |\n| **runpod-build-template** | **Create or improve a template project** from a request, local code, or GitHub: documented Dockerfile, app-specific files, and Pod\u002Fqueue\u002Fload-balanced deployment handoff. |\n| **runpod-migrate** | **Move existing code** off the GraphQL API or REST v1 onto REST v2 — inventory which parts use which version, rewrite call sites, flag breaking changes. Edits the user's code; does not manage infra. |\n\n## These skills are a snapshot; the tools are the source of truth\n\nEvery lane wraps something that ships on its own release train and moves faster than this\nrepo. So route with these skills, but **take capability and syntax from the tool in front\nof you**:\n\n| Lane | Ask it directly |\n| --- | --- |\n| runpodctl | `runpodctl --help`, `runpodctl \u003Cresource> \u003Caction> --help`, `runpodctl version`. For failure shapes, run a command wrong on purpose and read the JSON |\n| runpod-mcp | your client's tool list (`\u002Fmcp` in Claude Code); rules in [runpod-mcp](..\u002Frunpod-mcp\u002FSKILL.md#the-server-is-the-source-of-truth) |\n| runpod-flash | `rp --help`, `rp flash \u003Ccommand> --help`, `pip show runpod`, and the dev\u002Fdeploy output |\n| runpod-companion-clis | that CLI's own `--help` (`hf`, `gh`, `docker`, `aws`) |\n| runpod-templates | `runpodctl template list --type official`, `template get \u003Cid>` (its readme is authoritative) |\n| REST v2 | the live spec at `https:\u002F\u002Fapi.runpod.io\u002Fv2\u002Fopenapi.json` |\n\n**Never tell a user a tool cannot do something without checking first.** A missing capability\nis the claim most likely to be out of date here, and it is the one a reader has no reason to\nreverify — it has already gone stale twice (runpodctl v2.9.0 added `serverless health`, v2.10.0\nadded `pod logs`\u002F`serverless logs`). If a limit still holds, name the version it holds for\nrather than saying \"cannot\".\n\n## Before the first command\n\n- **Update the CLI you are about to use** (`runpodctl update`, `rp update`; the MCP needs\n  no step). runpodctl before v2.12.0 accepts `--stop-after`\u002F`--terminate-after`, which the\n  backend never enforced, so pods kept billing past the deadline.\n- **Check the control plane before infra work**: `runpodctl user` succeeds, or `\u002Fmcp` shows\n  `runpod` **Connected**. If neither works, help the user set up rather than limping on.\n- **MCP OAuth first, a key only when a task needs one**: get `RUNPOD_API_KEY` (`rp login`\n  with a human at an interactive terminal, else `export`) at the first CLI-only step; with no user in\n  the loop, use the key from the start. Companion CLIs use their **own** credentials, never\n  `RUNPOD_API_KEY`.\n\nDetails, install commands and the per-lane key table:\n[`getting-started.md`](..\u002Frunpod-usage\u002Freference\u002Fgetting-started.md).\n\n## How to route\n\n**0. Does a worked example already cover this?** For anything beyond a single call,\ncheck [the golden-paths index](#worked-examples-golden-paths) *before* picking a lane —\na matching path already names the lane(s), the flags, the ordering, and the traps, so\nrouting becomes reading rather than re-deriving. Check it when **any** of these is true:\n\n- the task needs **more than one resource** (image + template + endpoint, pod + volume,\n  multi-region, …) or **more than one lane**\n- it **provisions something billable**, or the user's ask is shaped like *\"get X running \u002F\n  deployed \u002F working\"*\n- it involves **storage, networking, autoscaling, streaming, or debugging a live resource** —\n  the areas where the non-obvious ordering is the whole difficulty\n- you are about to write a **multi-step plan** for it\n\nSkip step 0 for a single read or a single CRUD call (\"list my pods\", \"stop pod X\",\n\"what GPUs are available\") — go straight to the lane. **A matching golden path outranks\nthis router's lane table for workflow selection**. Its commands do not establish that a\ncapability is CLI-only: choose the execution lane from the live tool surface and the\ncapability matrix below, while preserving the path's ordering and verification steps.\n\nFor an explicit request to create or optimize a Dockerfile\u002Ftemplate project, match\n[path 26](.\u002Fgolden-paths\u002F26-template-project\u002FREADME.md) before generic deployment examples;\nGP26 is an authoring specification with local checks, not a live-verified deployment.\nAn existing prebuilt does not replace the requested deliverable.\n\n1. **Conceptual question, or an unmade design choice** (serverless vs pod? which\n   GPU? bake the model or mount a volume?) → read **runpod-usage** first, then\n   continue with the answer.\n2. **Author or improve a template project \u002F Dockerfile**, including converting local\n   code or a GitHub repository, or prepare its Hub listing files → **runpod-build-template**.\n   It delegates build\u002Fpush mechanics and infrastructure work to their existing lanes.\n   Registering an already-built image as a reusable template (\"make a template from\n   my image\") and browsing\u002Fdeploying an existing Hub listing use the infrastructure\n   lanes below; registration needs no new Dockerfile.\n3. **Run a common workload on a pod, or fix a template pod** (\"run ComfyUI \u002F\n   PyTorch dev box\", won't boot, missing models) → **runpod-templates** — check for\n   an official prebuilt before planning any install, and let it route repairs.\n4. **Write\u002Fiterate\u002Fship your own code on Runpod GPUs using its code-first workflow** → **runpod-flash**.\n5. **Produce an artifact** (download a model, build+push an image, create a repo\n   release, sync data to a volume) → **runpod-companion-clis**.\n6. **Migrate existing code between Runpod API versions** — \"move us to REST v2\",\n   \"which Runpod API is this repo on?\", \"what breaks if we upgrade?\" →\n   **runpod-migrate**. (Calling the API to *do* something is a different job; that\n   is the infra lanes below.)\n7. **Manage infrastructure** (create\u002Flist\u002Fupdate\u002Fdelete pods, endpoints,\n   templates, volumes; list GPUs\u002Fdata centers; run a serverless job; billing):\n   - A capability only the CLI has (the runpodctl rows of the matrix below) → **runpodctl**.\n   - Otherwise, if the Runpod **MCP tools are connected** in this session\n     (`create-pod`, `list-endpoints`, … are available) → **runpod-mcp**.\n   - Otherwise (shell-only agent, no MCP) → **runpodctl**.\n\n### runpod-mcp vs runpodctl (the overlap)\n\nBoth drive the same Runpod API, so they overlap on infra CRUD. Choose by\n**capability first, environment second**:\n\n- **MCP wins on convenience** for simple, structured operations — reads and basic\n  CRUD — when its tools are connected (typed params, no shell quoting).\n- **runpodctl takes over when an operation needs a capability MCP lacks** — even\n  if MCP is connected — and is the only option for a shell-only agent or when the\n  user wants a reproducible command.\n\nCapability matrix (pick the preferred lane per operation):\n\n| Operation | Preferred lane | Why |\n| --- | --- | --- |\n| List\u002Fget anything; start\u002Fstop\u002Frestart\u002Fdelete a pod; simple CRUD on endpoints, templates, volumes, registries; catalog; billing | **runpod-mcp** if connected, else runpodctl | Simple structured ops — MCP is typed and convenient |\n| Create a **simple** pod (one image + one GPU) | **runpod-mcp** if connected, else runpodctl | Both handle it |\n| Create a pod **from a template**, a **CPU** pod, or both together | **runpod-mcp** if connected, else runpodctl | MCP's create-pod takes `templateId` and, for CPU, a `cpu` object in place of `gpu`; template + CPU in one create live-verified 2026-10-29. runpodctl v3 sends the same v2 create, so it is no fallback. Field semantics: [runpod-mcp pod creates](..\u002Frunpod-mcp\u002FSKILL.md#use-mcp-vs-runpodctl) |\n| Create a pod with a **multi-GPU priority list** | **neither**: one GPU type per create | v2 `create-pod` takes one `gpu.id`, and runpodctl rejects a comma list in `--gpu-id` (`only one gpu id is supported`; checked through v3.0.1). Pick one type from the stock read; on a capacity error, retry with the next |\n| Browse or deploy an existing **Hub** listing | **runpod-mcp** if connected and it exposes the requested operation, else runpodctl | Check the live tool surface; Hub is not a reason by itself to switch to the CLI |\n| **File transfer** (`send`\u002F`receive`, `network-volume upload`\u002F`download`), **SSH** keys\u002Finfo, **`doctor`** setup, **model** cache | **runpodctl** | MCP has no tool for these |\n| Invoke a serverless job (`run`\u002F`runsync`\u002Fstatus\u002Fstream) | **runpod-mcp** if connected, else runpodctl | Both lanes have first-class job commands now (runpodctl `serverless run`\u002F`status`\u002F`health`, v2.9.0+); MCP is typed, and only MCP streams a job's incremental output (`stream-job`) |\n| Read **pod or worker logs** | **either** — runpod-mcp if connected, else runpodctl | Both lanes read them: MCP `stream-pod-logs`\u002F`stream-worker-logs` return parsed frames; runpodctl `pod logs`\u002F`serverless logs` emit json lines and `--follow` (v2.10.0+) |\n\nRule of thumb: **default to MCP for the easy stuff, hand off to runpodctl the\nmoment an op needs a flag\u002Ffeature MCP doesn't expose.**\n\n## Deploying a workload (the golden loop)\n\nFor any \"get \u003CX> running on Runpod\" task, follow\n[`development-loop.md`](..\u002Frunpod-usage\u002Freference\u002Fdevelopment-loop.md): decide pod vs\nserverless → provision → set up (only if from-scratch) → verify → deliver → cost-guard +\nteardown. Its binding rules, in one line each: **prefer a prebuilt\ntemplate \u002F Hub worker** unless the user asked for a custom template project; **pin the CUDA\nfloor** on every GPU create (`--min-cuda-version 12.8` \u002F `gpu.minCudaVersion: \"12.8\"`, `13.0` only for a CUDA-13 image; without it an\nimage can land on a host too old for it and die at startup or silently run on CPU;\n[why](..\u002Frunpod-usage\u002Freference\u002Fgpu-selection.md#step-3-pin-the-cuda-floor)); **default to\nSecure Cloud**; **cache vs network volume is a latency call** (download time is not billed, but a cache miss\nholds the worker start, so the job queues and the endpoint looks idle); **stock picks the data\ncenter, the network volume follows** (read per-data-center GPU stock, create the volume once\nwhere the GPU is, and on a stock refusal keep it: retry once there or let the user choose;\n[why](..\u002Frunpod-usage\u002Freference\u002Fstorage.md#default-prefer-a-network-volume)); and **verify with a real\nrequest from outside before delivering** — \"Running\"\u002F\"ready\" does not mean serving.\n\nIt branches to two sub-loops:\n\n- **Service you open at a URL** (Ollama, ComfyUI, dev box) →\n  [`runpod-usage\u002Freference\u002Fpod-workflows.md`](..\u002Frunpod-usage\u002Freference\u002Fpod-workflows.md)\n  (ports + env + volume at creation, SSH-exec install, bind `0.0.0.0`, poll the\n  proxy URL). Execute in the runpodctl lane.\n- **Request\u002Fresponse API that scales to zero** (Whisper, inference) →\n  [`runpod-usage\u002Freference\u002Fendpoint-workflows.md`](..\u002Frunpod-usage\u002Freference\u002Fendpoint-workflows.md)\n  (Hub worker vs flash vs custom image; invoke `\u002Frun`\u002F`\u002Frunsync`; poll job status).\n\n## Worked examples (golden paths)\n\nThis is **step 0 of routing**, not an appendix. Two dozen end-to-end scenarios live in\n[`.\u002Fgolden-paths\u002FREADME.md`](.\u002Fgolden-paths\u002FREADME.md), each with a status header\n(live-verified with a date, spec-checked, or legacy; check it before trusting a path), the\nreal commands and observed output, plus a Gotchas and a Cost & cleanup section, which is\nthe part that is expensive to rediscover.\n\n**Match the task to a row below and open that path before you plan or call anything.**\nA partial match is still worth opening: the closest path's ordering and gotchas usually\ntransfer even when the model, GPU, or region does not. Only fall through to the lane\ntables above when nothing here is close.\n\n| Want to… | Golden path |\n| --- | --- |\n| Run a server (Ollama\u002FComfyUI) on a pod at a URL | [01](.\u002Fgolden-paths\u002F01-ollama-pod\u002FREADME.md), [02](.\u002Fgolden-paths\u002F02-comfyui-pod\u002FREADME.md) |\n| Deploy a serverless model endpoint (Hub \u002F flash \u002F custom image) | [03](.\u002Fgolden-paths\u002F03-whisper-endpoint\u002FREADME.md), [05](.\u002Fgolden-paths\u002F05-model-to-endpoint-pipeline.md) |\n| Serve an LLM with vLLM (Pod, load-balancing or Hub queue endpoint) | [27 — vLLM Pod → endpoint](.\u002Fgolden-paths\u002F27-vllm-pod-to-endpoint.md); procedure in [runpod-vllm](..\u002Frunpod-vllm\u002FSKILL.md) |\n| Install vLLM or ComfyUI privately on a Pod you already run (pinned, loopback, API-driven) | vLLM: [runpod-vllm existing-pod](..\u002Frunpod-vllm\u002Freference\u002Fexisting-pod.md); ComfyUI: [02 Variant C](.\u002Fgolden-paths\u002F02-comfyui-pod\u002Fvariant-c-pinned-api.md) |\n| Serve a HuggingFace model without baking it in or a volume (host-cached) | [20 — model caching (`--model-reference`)](.\u002Fgolden-paths\u002F20-model-caching-endpoint.md) |\n| Call a ready hosted model (no deploy) | [11 — Public Endpoints](.\u002Fgolden-paths\u002F11-public-endpoints.md) |\n| Fine-tune, then serve the result | [04](.\u002Fgolden-paths\u002F04-finetune-pod.md), [08](.\u002Fgolden-paths\u002F08-finetune-to-serverless.md) |\n| Interactive dev box (SSH \u002F VS Code) | [06](.\u002Fgolden-paths\u002F06-dev-pod.md) |\n| Move data pod → volume → serverless | [07](.\u002Fgolden-paths\u002F07-network-volume-handoff.md) |\n| **Custom serverless when flash isn't enough** (dual-mode image dev loop) | [09](.\u002Fgolden-paths\u002F09-custom-serverless-dev-loop\u002FREADME.md) |\n| Create or improve a complete template project from code, a repo or an app request | [26 — project authoring](.\u002Fgolden-paths\u002F26-template-project\u002FREADME.md) |\n| Build a minimal image for a target (pod vs serverless queue) | [22 (pod)](.\u002Fgolden-paths\u002F22-minimal-pod-image\u002FREADME.md), [23 (queue)](.\u002Fgolden-paths\u002F23-minimal-queue-image\u002FREADME.md); concepts in [building-images](..\u002Frunpod-usage\u002Freference\u002Fbuilding-images.md) |\n| Decide what to bake into the image vs mount on a network volume | [25 — bake vs mount](.\u002Fgolden-paths\u002F25-bake-vs-mount\u002FREADME.md) |\n| Pick a network-volume **storage tier** (standard vs high-performance) | [21 — storage tiers](.\u002Fgolden-paths\u002F21-storage-tiers.md) |\n| **High availability \u002F multi-region** serverless (multi-volume + data sync) | [10](.\u002Fgolden-paths\u002F10-multi-region-ha-serverless.md), [19 (3-region)](.\u002Fgolden-paths\u002F19-three-region-same-file.md) |\n| Stream output incrementally (`\u002Fstream`) | [12](.\u002Fgolden-paths\u002F12-serverless-streaming.md) |\n| Tune autoscaling \u002F raise per-worker throughput | [13 (autoscaling)](.\u002Fgolden-paths\u002F13-autoscaling-tuning.md), [18 (concurrency)](.\u002Fgolden-paths\u002F18-concurrent-handler.md) |\n| Load-balancing \u002F HTTP-server or WebSocket worker | [14 (LB)](.\u002Fgolden-paths\u002F14-load-balancing-endpoint.md), [17 (WebSocket)](.\u002Fgolden-paths\u002F17-serverless-websocket.md) |\n| Get notified on job completion (push, not poll) | [16 — webhooks](.\u002Fgolden-paths\u002F16-serverless-webhooks.md) |\n| Check health \u002F debug a failing endpoint | [15 — monitor & debug](.\u002Fgolden-paths\u002F15-monitor-and-debug.md) |\n\n## Multi-lane tasks\n\nSequence is always **understand → produce artifacts → manage infra → verify**,\nbecause infra can only reference artifacts that already exist. Keep each step in\none lane, and switch lanes at credential boundaries.\n\nExample — \"deploy `openai\u002Fgpt-oss-20b` to a serverless endpoint\":\n1. **runpod-usage** — serverless vs pod, GPU tier for 20B, bake vs mount vs cache.\n2. **runpod-companion-clis** — `hf download …`, `docker build --platform=linux\u002Famd64 …`, `docker push`.\n3. **runpod-mcp** or **runpodctl** — create the endpoint referencing the image + GPU pool.\n4. Same infra lane — invoke the endpoint \u002F check status to verify.\n",{"name":5,"license":14,"metadata":47,"description":7},{"author":5,"version":48,"concepts":49},"2.1.0",[50,51,52,39,53,54],"runpod-platform","pod","serverless-endpoint","network-volume","hub-repo","main","78415a3cd1084678bba59a6e3b045f56f2e114c0","plugins\u002Frunpod\u002Fskills\u002Frunpod",10,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official","https:\u002F\u002Fdocs.runpod.io\u002Fagent-setup.md","https:\u002F\u002Fgithub.com\u002Frunpod","https:\u002F\u002Fwww.runpod.io","2026-11-12 09:58:55",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add runpod\u002Frunpod-plugins-official --skill runpod",{"tool":70,"command":71},"bunx","bunx skills add runpod\u002Frunpod-plugins-official --skill runpod",{"tool":73,"command":74},"pnpm","pnpm dlx skills add runpod\u002Frunpod-plugins-official --skill runpod","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002FSKILL.md",true,[78,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,230,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,312,316,320,324,328,332,336,340,344,348,352,356,360,364,368,372,376,380,384,388,392,396,400,404,408,412,416,420,424],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"evals\u002Fcomfyui-pinned-api.eval.md","REFERENCE","参考文档",1921,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fcomfyui-pinned-api.eval.md",{"path":85,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":86,"sourceHtmlUrl":87},"evals\u002Fconcurrent-handler.eval.md",933,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fconcurrent-handler.eval.md",{"path":89,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":90,"sourceHtmlUrl":91},"evals\u002Fconsult-golden-path-first.eval.md",4895,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fconsult-golden-path-first.eval.md",{"path":93,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":94,"sourceHtmlUrl":95},"evals\u002Fhub-authoring-route.eval.md",895,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fhub-authoring-route.eval.md",{"path":97,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":98,"sourceHtmlUrl":99},"evals\u002Fload-balancer-endpoint.eval.md",1413,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fload-balancer-endpoint.eval.md",{"path":101,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":102,"sourceHtmlUrl":103},"evals\u002Fmcp-vs-runpodctl-tiebreak.eval.md",1549,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fmcp-vs-runpodctl-tiebreak.eval.md",{"path":105,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":106,"sourceHtmlUrl":107},"evals\u002Fmulti-region-volume-sync.eval.md",1162,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fmulti-region-volume-sync.eval.md",{"path":109,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":110,"sourceHtmlUrl":111},"evals\u002Fno-unchecked-absence-claims.eval.md",1886,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fno-unchecked-absence-claims.eval.md",{"path":113,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":114,"sourceHtmlUrl":115},"evals\u002Fprefer-prebuilt.eval.md",1144,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fprefer-prebuilt.eval.md",{"path":117,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":118,"sourceHtmlUrl":119},"evals\u002Fpublic-endpoint-call.eval.md",1080,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fpublic-endpoint-call.eval.md",{"path":121,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":122,"sourceHtmlUrl":123},"evals\u002Froute-hub-capabilities.eval.md",2255,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Froute-hub-capabilities.eval.md",{"path":125,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":126,"sourceHtmlUrl":127},"evals\u002Froute-serverless-observability.eval.md",2856,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Froute-serverless-observability.eval.md",{"path":129,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":130,"sourceHtmlUrl":131},"evals\u002Froute-service-vs-endpoint.eval.md",1154,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Froute-service-vs-endpoint.eval.md",{"path":133,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":134,"sourceHtmlUrl":135},"evals\u002Froute-template-repair.eval.md",1576,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Froute-template-repair.eval.md",{"path":137,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":138,"sourceHtmlUrl":139},"evals\u002Froute-templates.eval.md",1265,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Froute-templates.eval.md",{"path":141,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":142,"sourceHtmlUrl":143},"evals\u002Fserverless-streaming.eval.md",1054,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fserverless-streaming.eval.md",{"path":145,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":146,"sourceHtmlUrl":147},"evals\u002Fserverless-webhook.eval.md",972,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fserverless-webhook.eval.md",{"path":149,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":150,"sourceHtmlUrl":151},"evals\u002Fstorage-tier-choice.eval.md",1108,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Fstorage-tier-choice.eval.md",{"path":153,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":154,"sourceHtmlUrl":155},"evals\u002Ftemplate-authoring-route.eval.md",1025,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fevals\u002Ftemplate-authoring-route.eval.md",{"path":157,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":158,"sourceHtmlUrl":159},"golden-paths\u002F01-ollama-pod\u002FREADME.md",13387,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F01-ollama-pod\u002FREADME.md",{"path":161,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":162,"sourceHtmlUrl":163},"golden-paths\u002F01-ollama-pod\u002Fskill.json",1448,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F01-ollama-pod\u002Fskill.json",{"path":165,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":166,"sourceHtmlUrl":167},"golden-paths\u002F02-comfyui-pod\u002FREADME.md",7026,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F02-comfyui-pod\u002FREADME.md",{"path":169,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":170,"sourceHtmlUrl":171},"golden-paths\u002F02-comfyui-pod\u002Fskill.json",2474,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F02-comfyui-pod\u002Fskill.json",{"path":173,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":174,"sourceHtmlUrl":175},"golden-paths\u002F02-comfyui-pod\u002Fvariant-a-from-scratch.md",6151,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F02-comfyui-pod\u002Fvariant-a-from-scratch.md",{"path":177,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":178,"sourceHtmlUrl":179},"golden-paths\u002F02-comfyui-pod\u002Fvariant-b-prebuilt.md",6942,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F02-comfyui-pod\u002Fvariant-b-prebuilt.md",{"path":181,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":182,"sourceHtmlUrl":183},"golden-paths\u002F02-comfyui-pod\u002Fvariant-c-pinned-api.md",9807,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F02-comfyui-pod\u002Fvariant-c-pinned-api.md",{"path":185,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":186,"sourceHtmlUrl":187},"golden-paths\u002F03-whisper-endpoint\u002FREADME.md",6560,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F03-whisper-endpoint\u002FREADME.md",{"path":189,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":190,"sourceHtmlUrl":191},"golden-paths\u002F03-whisper-endpoint\u002Fskill.json",2063,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F03-whisper-endpoint\u002Fskill.json",{"path":193,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":194,"sourceHtmlUrl":195},"golden-paths\u002F03-whisper-endpoint\u002Fvariant-a-hub.md",6661,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F03-whisper-endpoint\u002Fvariant-a-hub.md",{"path":197,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":198,"sourceHtmlUrl":199},"golden-paths\u002F03-whisper-endpoint\u002Fvariant-b-flash.md",6663,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F03-whisper-endpoint\u002Fvariant-b-flash.md",{"path":201,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":202,"sourceHtmlUrl":203},"golden-paths\u002F04-finetune-pod.md",14366,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F04-finetune-pod.md",{"path":205,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":206,"sourceHtmlUrl":207},"golden-paths\u002F05-model-to-endpoint-pipeline.md",11783,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F05-model-to-endpoint-pipeline.md",{"path":209,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":210,"sourceHtmlUrl":211},"golden-paths\u002F06-dev-pod.md",12907,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F06-dev-pod.md",{"path":213,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":214,"sourceHtmlUrl":215},"golden-paths\u002F07-network-volume-handoff.md",11394,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F07-network-volume-handoff.md",{"path":217,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":218,"sourceHtmlUrl":219},"golden-paths\u002F08-finetune-to-serverless.md",16260,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F08-finetune-to-serverless.md",{"path":221,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":222,"sourceHtmlUrl":223},"golden-paths\u002F09-custom-serverless-dev-loop\u002FREADME.md",19590,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F09-custom-serverless-dev-loop\u002FREADME.md",{"path":225,"resourceType":226,"resourceTypeDesc":227,"sizeBytes":228,"sourceHtmlUrl":229},"golden-paths\u002F09-custom-serverless-dev-loop\u002Ftemplate\u002FDockerfile","OTHER","其他",1711,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F09-custom-serverless-dev-loop\u002Ftemplate\u002FDockerfile",{"path":231,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":234,"sourceHtmlUrl":235},"golden-paths\u002F09-custom-serverless-dev-loop\u002Ftemplate\u002Fhandler.py","SCRIPT","脚本",3628,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F09-custom-serverless-dev-loop\u002Ftemplate\u002Fhandler.py",{"path":237,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":238,"sourceHtmlUrl":239},"golden-paths\u002F09-custom-serverless-dev-loop\u002Ftemplate\u002Frequirements.txt",500,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F09-custom-serverless-dev-loop\u002Ftemplate\u002Frequirements.txt",{"path":241,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":242,"sourceHtmlUrl":243},"golden-paths\u002F09-custom-serverless-dev-loop\u002Ftemplate\u002Fstart.sh",1564,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F09-custom-serverless-dev-loop\u002Ftemplate\u002Fstart.sh",{"path":245,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":246,"sourceHtmlUrl":247},"golden-paths\u002F10-multi-region-ha-serverless.md",24288,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F10-multi-region-ha-serverless.md",{"path":249,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":250,"sourceHtmlUrl":251},"golden-paths\u002F11-public-endpoints.md",11328,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F11-public-endpoints.md",{"path":253,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":254,"sourceHtmlUrl":255},"golden-paths\u002F12-serverless-streaming.md",9326,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F12-serverless-streaming.md",{"path":257,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":258,"sourceHtmlUrl":259},"golden-paths\u002F13-autoscaling-tuning.md",16545,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F13-autoscaling-tuning.md",{"path":261,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":262,"sourceHtmlUrl":263},"golden-paths\u002F14-load-balancing-endpoint.md",17745,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F14-load-balancing-endpoint.md",{"path":265,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":266,"sourceHtmlUrl":267},"golden-paths\u002F15-monitor-and-debug.md",28029,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F15-monitor-and-debug.md",{"path":269,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":270,"sourceHtmlUrl":271},"golden-paths\u002F16-serverless-webhooks.md",10380,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F16-serverless-webhooks.md",{"path":273,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":274,"sourceHtmlUrl":275},"golden-paths\u002F17-serverless-websocket.md",20964,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F17-serverless-websocket.md",{"path":277,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":278,"sourceHtmlUrl":279},"golden-paths\u002F18-concurrent-handler.md",12169,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F18-concurrent-handler.md",{"path":281,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":282,"sourceHtmlUrl":283},"golden-paths\u002F19-three-region-same-file.md",18572,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F19-three-region-same-file.md",{"path":285,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":286,"sourceHtmlUrl":287},"golden-paths\u002F20-model-caching-endpoint.md",11769,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F20-model-caching-endpoint.md",{"path":289,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":290,"sourceHtmlUrl":291},"golden-paths\u002F21-storage-tiers.md",5897,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F21-storage-tiers.md",{"path":293,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":294,"sourceHtmlUrl":295},"golden-paths\u002F22-minimal-pod-image\u002FREADME.md",5501,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F22-minimal-pod-image\u002FREADME.md",{"path":297,"resourceType":226,"resourceTypeDesc":227,"sizeBytes":298,"sourceHtmlUrl":299},"golden-paths\u002F22-minimal-pod-image\u002Ftemplate\u002FDockerfile",803,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F22-minimal-pod-image\u002Ftemplate\u002FDockerfile",{"path":301,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":302,"sourceHtmlUrl":303},"golden-paths\u002F22-minimal-pod-image\u002Ftemplate\u002Fstart.sh",805,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F22-minimal-pod-image\u002Ftemplate\u002Fstart.sh",{"path":305,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":306,"sourceHtmlUrl":307},"golden-paths\u002F23-minimal-queue-image\u002FREADME.md",5492,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F23-minimal-queue-image\u002FREADME.md",{"path":309,"resourceType":226,"resourceTypeDesc":227,"sizeBytes":310,"sourceHtmlUrl":311},"golden-paths\u002F23-minimal-queue-image\u002Ftemplate\u002FDockerfile",436,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F23-minimal-queue-image\u002Ftemplate\u002FDockerfile",{"path":313,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":314,"sourceHtmlUrl":315},"golden-paths\u002F23-minimal-queue-image\u002Ftemplate\u002Fhandler.py",321,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F23-minimal-queue-image\u002Ftemplate\u002Fhandler.py",{"path":317,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":318,"sourceHtmlUrl":319},"golden-paths\u002F23-minimal-queue-image\u002Ftemplate\u002Frequirements.txt",7,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F23-minimal-queue-image\u002Ftemplate\u002Frequirements.txt",{"path":321,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":322,"sourceHtmlUrl":323},"golden-paths\u002F25-bake-vs-mount\u002FREADME.md",6831,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F25-bake-vs-mount\u002FREADME.md",{"path":325,"resourceType":226,"resourceTypeDesc":227,"sizeBytes":326,"sourceHtmlUrl":327},"golden-paths\u002F25-bake-vs-mount\u002Ftemplate\u002FDockerfile",796,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F25-bake-vs-mount\u002Ftemplate\u002FDockerfile",{"path":329,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":330,"sourceHtmlUrl":331},"golden-paths\u002F25-bake-vs-mount\u002Ftemplate\u002Fstart.sh",426,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F25-bake-vs-mount\u002Ftemplate\u002Fstart.sh",{"path":333,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":334,"sourceHtmlUrl":335},"golden-paths\u002F26-template-project\u002FREADME.md",6819,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002FREADME.md",{"path":337,"resourceType":226,"resourceTypeDesc":227,"sizeBytes":338,"sourceHtmlUrl":339},"golden-paths\u002F26-template-project\u002Ftemplate\u002F.dockerignore",78,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002F.dockerignore",{"path":341,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":342,"sourceHtmlUrl":343},"golden-paths\u002F26-template-project\u002Ftemplate\u002Fapp.py",2141,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002Fapp.py",{"path":345,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":346,"sourceHtmlUrl":347},"golden-paths\u002F26-template-project\u002Ftemplate\u002Fcheck_http.py",956,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002Fcheck_http.py",{"path":349,"resourceType":226,"resourceTypeDesc":227,"sizeBytes":350,"sourceHtmlUrl":351},"golden-paths\u002F26-template-project\u002Ftemplate\u002FDockerfile.http",738,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002FDockerfile.http",{"path":353,"resourceType":226,"resourceTypeDesc":227,"sizeBytes":354,"sourceHtmlUrl":355},"golden-paths\u002F26-template-project\u002Ftemplate\u002FDockerfile.queue",649,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002FDockerfile.queue",{"path":357,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":358,"sourceHtmlUrl":359},"golden-paths\u002F26-template-project\u002Ftemplate\u002Fhandler.py",368,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002Fhandler.py",{"path":361,"resourceType":226,"resourceTypeDesc":227,"sizeBytes":362,"sourceHtmlUrl":363},"golden-paths\u002F26-template-project\u002Ftemplate\u002Fpytorch\u002F.dockerignore",50,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002Fpytorch\u002F.dockerignore",{"path":365,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":366,"sourceHtmlUrl":367},"golden-paths\u002F26-template-project\u002Ftemplate\u002Fpytorch\u002Fcheck_lifecycle.py",3988,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002Fpytorch\u002Fcheck_lifecycle.py",{"path":369,"resourceType":226,"resourceTypeDesc":227,"sizeBytes":370,"sourceHtmlUrl":371},"golden-paths\u002F26-template-project\u002Ftemplate\u002Fpytorch\u002FDockerfile",510,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002Fpytorch\u002FDockerfile",{"path":373,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":374,"sourceHtmlUrl":375},"golden-paths\u002F26-template-project\u002Ftemplate\u002Fpytorch\u002Ftest_verify.py",3712,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002Fpytorch\u002Ftest_verify.py",{"path":377,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":378,"sourceHtmlUrl":379},"golden-paths\u002F26-template-project\u002Ftemplate\u002Fpytorch\u002Fverify.py",1944,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002Fpytorch\u002Fverify.py",{"path":381,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":382,"sourceHtmlUrl":383},"golden-paths\u002F26-template-project\u002Ftemplate\u002FREADME.md",4816,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002FREADME.md",{"path":385,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":386,"sourceHtmlUrl":387},"golden-paths\u002F26-template-project\u002Ftemplate\u002Frequirements.txt",83,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002Frequirements.txt",{"path":389,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":390,"sourceHtmlUrl":391},"golden-paths\u002F26-template-project\u002Ftemplate\u002Ftest_app.py",3883,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002Ftest_app.py",{"path":393,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":394,"sourceHtmlUrl":395},"golden-paths\u002F26-template-project\u002Ftemplate\u002Ftest_input.json",27,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002Ftest_input.json",{"path":397,"resourceType":232,"resourceTypeDesc":233,"sizeBytes":398,"sourceHtmlUrl":399},"golden-paths\u002F26-template-project\u002Ftemplate\u002Fworkload.py",576,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Ftemplate\u002Fworkload.py",{"path":401,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":402,"sourceHtmlUrl":403},"golden-paths\u002F26-template-project\u002Fvariant-load-balanced.md",3939,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Fvariant-load-balanced.md",{"path":405,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":406,"sourceHtmlUrl":407},"golden-paths\u002F26-template-project\u002Fvariant-pod.md",3602,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Fvariant-pod.md",{"path":409,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":410,"sourceHtmlUrl":411},"golden-paths\u002F26-template-project\u002Fvariant-pytorch.md",6572,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Fvariant-pytorch.md",{"path":413,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":414,"sourceHtmlUrl":415},"golden-paths\u002F26-template-project\u002Fvariant-queue.md",3466,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F26-template-project\u002Fvariant-queue.md",{"path":417,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":418,"sourceHtmlUrl":419},"golden-paths\u002F27-vllm-pod-to-endpoint.md",7768,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002F27-vllm-pod-to-endpoint.md",{"path":421,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":422,"sourceHtmlUrl":423},"golden-paths\u002FREADME.md",14359,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002FREADME.md",{"path":425,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":426,"sourceHtmlUrl":427},"golden-paths\u002Fskill.schema.json",2988,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002Fgolden-paths\u002Fskill.schema.json",[429,458,474,495,514,536],{"skillNo":430,"name":431,"nameZh":6,"description":432,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":5,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":433,"categories":434,"keywords":441,"publishedAt":42},"01M717A4HFW93XQC7PTXV1QFFH","runpod-vllm","Serve a Hugging Face model with vLLM on Runpod (Hub worker-vllm queue endpoint, load-balancing endpoint on a vllm\u002Fvllm-openai image, or a Pod), sized, CUDA-pinned and verified with a real OpenAI client. Use for any \"deploy\u002Fserve\u002Ftest this LLM with vLLM\" request or a vLLM deployment that will not boot; defer to runpod-serverless-deploy for non-vLLM engines and runpod-endpoint-ops for an endpoint that already works.","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-vllm\u002FSKILL.md",[435,438],{"categoryNo":436,"categoryName":437,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":439,"categoryName":440,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",[442,5,443,36,444,445,446,447,448,449,450,38,451,452,453,454,31,455,456,457],"runpod vllm","vLLM","model","worker","image","log","port","request","release","verified","hugging face","openai","face","availability","load-balancing","for",{"skillNo":459,"name":26,"nameZh":6,"description":460,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":5,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":461,"categories":462,"keywords":464,"publishedAt":42},"01M6CFW2PPRQZ006AVQXGMWPH1","Runpod CLI for managing GPU\u002FCPU workloads from the terminal — pods, serverless endpoints, templates, network volumes, Hub deploys, models, SSH, and file transfer (send\u002Freceive, network-volume upload\u002Fdownload). Use for terminal\u002FCI\u002Fscripting, SSH setup, `doctor`, or when the Runpod MCP tools are not connected; prefer runpod-mcp for structured tool calls in an MCP-enabled session.","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpodctl\u002FSKILL.md",[463],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[26,25,444,465,41,466,467,39,36,468,469,38,5,470,28,471,31,472,473,24],"ci","Bash","cli","CPU","terminal","ssh setup","macos","send","windows",{"skillNo":475,"name":476,"nameZh":6,"description":477,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":5,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":478,"categories":479,"keywords":481,"publishedAt":42},"01M6CFVK41CSZ4HM1N7TKM3WWY","runpod-usage","Explain Runpod architecture and design choices: Pods versus Serverless, GPU\u002FVRAM, image construction, storage, networking, and workload development. For creating or improving a complete template project use runpod-build-template; execute infrastructure with runpodctl\u002Frunpod-mcp and code-first work with runpod-flash.","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-usage\u002FSKILL.md",[480],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[482,5,483,26,484,485,486,41,487,446,488,489,490,491,36,457,492,493,445,494],"runpod usage","usage","development","container","design","use","code","explain","architecture","disk","project","complete","vram",{"skillNo":496,"name":497,"nameZh":6,"description":498,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":5,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":499,"categories":500,"keywords":502,"publishedAt":42},"01M6CFVEPPADDF61NC3MC4KCE5","runpod-templates","Find, use, and troubleshoot official Runpod Pod templates, including ComfyUI workflow model metadata repair. For creating or optimizing Dockerfiles and application template projects use runpod-build-template; deploy through runpod-mcp or runpodctl.","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-templates\u002FSKILL.md",[501],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[503,504,5,26,505,506,507,444,508,41,509,446,466,39,448,510,511,512,513,457],"runpod templates","templates","projects","python3","official","inventory","workflow","scripts","troubleshoot","png","repair",{"skillNo":515,"name":516,"nameZh":6,"description":517,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":5,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":518,"categories":519,"keywords":523,"publishedAt":42},"01M6PP9W1XMN6PT4J4H0XEMTKW","runpod-serverless-deploy","Bring any source (a HuggingFace repo, a ComfyUI workflow, a Hub release, a custom container image, a GGUF repo, a Civitai asset, or a community template) to a proven Runpod Serverless endpoint: pick the engine for the modality and model format, size the GPU from the model's real metadata, provision, warm, prove it with one real job, and hand back the URL with what it bills. Deploys an existing source through the Runpod MCP tools; code-first Python deploys (the Flash dev loop) are out of scope. Use when the user wants a model or worker served on Runpod Serverless, whatever the modality: text generation, speech-to-text or text-to-speech, image or video generation, embeddings, document processing, or their own handler image. For an LLM served with vLLM (Hub worker-vllm, a vllm\u002Fvllm-openai image, or a vLLM Pod), defer to runpod-vllm.","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-serverless-deploy\u002FSKILL.md",[520,521,522],{"categoryNo":436,"categoryName":437,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":439,"categoryName":440,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[524,5,525,526,527,528,529,530,36,531,532,444,533,445,41,534,535,509,446,24],"runpod serverless deploy","serverless deploy","deploy","serverless","back","Video","community","processing","scope","pick","loop","URL",{"skillNo":537,"name":538,"nameZh":6,"description":539,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":5,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":540,"categories":541,"keywords":543,"publishedAt":42},"01M6PP9PRZJJHNF10N95P2C10J","runpod-pod-doctor","Diagnose a Runpod Pod that is unreachable, GPU-blind or stuck, and perform a recovery action only when the user authorizes one. Use when an existing Pod misbehaves, through the Runpod MCP tools: its proxy URL answers 502, CUDA is not available inside the container, a restarted Pod has no GPU, the user wants a Pod's logs read, an account-wide check for stuck Pods, or the stop-versus-terminate decision for a Pod they already have. Read-only until the user asks for an action.","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-pod-doctor\u002FSKILL.md",[542],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[544,5,25,545,36,546,547,41,548,535,491,549,447,448,550,551,28,552,455,24],"runpod pod doctor","pod doctor","decision","only","unreachable","logs","read","action","stop"]