Intel GPU AI Skills
intel/gpu-ai-skills is 20 production-grade
Agent Skills that teach any skills-capable agent —
Claude Code, Copilot CLI, Cursor, Gemini CLI, opencode, Codex, Qwen Code, Kimi Code,
Hermes, OpenClaw — exactly how to run, size, benchmark, profile, and migrate models on
Intel Arc and Arc Pro. Apache-2.0. One install command.
git clone https://github.com/intel/gpu-ai-skills.git intel-gpu-ai-skills
cd intel-gpu-ai-skills && bash scripts/install.sh
Then stop thinking about it:
"Will Qwen2.5-32B in int4 fit on my Arc Pro B70 at 8K context, concurrency 4?"
- model-can-it-fit loaded automatically
- weights 16.8 GiB · KV 3.2 GiB · verdict: FITS
- headroom 11.2 GiB (35%) on a 32 GiB card
No skill name typed. No flag guessed. No GPU-hour burned finding out the hard way.
Try it in five minutes
You don't need a GPU for the first step, and you don't need a big one for the second. Start here before reading the catalog below.
Step 1 — no GPU required. The sizing math reads the model's config.json and works it
out arithmetically, so you can run this on a laptop before you touch any hardware:
"Will Qwen2.5-1.5B-Instruct fit on a 16 GB Intel GPU in bf16?"
No download, no container, no launch — and note that it flags the difference between nameplate VRAM and what the driver will actually hand you, which is where tight verdicts usually go wrong.
Step 2 — a small model on a modest card. On an Intel Arc Pro GPU card:
"Serve Qwen2.5-1.5B-Instruct on my Intel GPU and send it a test prompt."
vllm-xpu-run picks the image, sets the device flags, starts the OpenAI-compatible
endpoint — and then verifies a real completion came back before telling you it worked. A
server that boots is not the same as a server that answers.
Step 3 — scale up when you're ready.
"Launch GPT-OSS-20B on my Intel B70 GPU."
Same skill, bigger model. The agent moves to quantized weights and pairs them with the attention backend that combination actually requires — exactly the kind of detail that costs an afternoon when you're guessing at it.
All 20 skills, organized by what you're trying to do
Twenty skills sounds like a lot to learn. It isn't — you never invoke them by name. They're grouped below the way you'd actually hit them: get the box working, decide what fits, run it, measure it, then figure out why it's slow. The prompts in the right-hand column are there to be copied and tried.
Setup & Readiness — 4 skills
Get a bare host or container to a verified go/no-go state before any GPU work starts.
| Skill | What it does | Try asking |
|---|---|---|
xpu-system-setup |
First-time driver, PPA, Level Zero, groups, and Docker setup for a bare-metal Intel GPU host. | "Prepare this bare-metal Ubuntu box for Intel GPU work." |
xpu-discover |
Inventory Intel GPUs, check driver health, list processes holding the device — the Intel nvidia-smi. |
"Is my Intel GPU detected? Run a quick health check." |
xpu-runtime-preflight |
Read-only go/no-go check across drivers, permissions, Docker, shared memory, disk, and proxy. | "Run the preflight and tell me what blocks it." |
xpu-container-run |
Launch any Docker container with correct Intel GPU access — /dev/dri, render group, ZE_AFFINITY_MASK. |
"How do I launch a Docker container that can see my Intel GPU?" |
With a healthy host, the fun part starts.
Run Models — 5 skills
Get a Hugging Face model actually loaded and serving on the GPU, with the right framework for the job.
| Skill | What it does | Try asking |
|---|---|---|
xpu-model-type-detect |
Detect a model's real type before loading, so the agent picks the right AutoModel class the first time. |
"What kind of model is this, and how should I load it?" |
torch-xpu-run |
Run any HF safetensors model with upstream PyTorch's torch.xpu device. |
"Run gemma-3 in pure PyTorch on my Intel GPU." |
vllm-xpu-run |
Serve a model with vLLM-XPU's OpenAI-compatible API — image choice, flag rationales, quant + KV-dtype pairing. | "Start a vLLM server with Qwen2.5-7B on my Intel GPU." |
sglang-xpu-run |
Serve with SGLang's XPU backend for RadixAttention prefix caching and grammar-constrained output. | "Serve Qwen3 with sglang on my Battlemage GPU." |
llamacpp-xpu-run |
Run GGUF models via llama.cpp's SYCL backend — an OpenAI-compatible endpoint without Python/PyTorch. | "Serve this GGUF model locally on my Arc GPU with llama.cpp." |
Before you pull 60 GB of weights, though, there's a cheaper question worth asking.
Plan & Size — 3 skills
Answer "will it fit" and "what config" before spending a single GPU-hour on a launch attempt.
| Skill | What it does | Try asking |
|---|---|---|
model-can-it-fit |
Pre-launch VRAM calculator: weights, KV cache, activations, and framework overhead vs. your GPU's memory. | "Will Qwen2.5-32B in int4 fit on my Arc Pro B70 at 8K context, concurrency 4?" |
model-config-recommend |
Recommend a vLLM-XPU config — quant, KV dtype, DP/TP, concurrency — using roofline math against Arc B-series specs. | "What's the best config to serve Qwen2.5-7B on my B70 at 8K?" |
xpu-deploy-plan |
Chains preflight, fit, and config recommendation into one PLAN.md with launch command, smoke test, and rollback. |
"Give me a coordinated deployment plan for Llama-3-8B on this box." |
A server that starts isn't the same as a server that's fast. That's what these three are for.
Benchmark — 3 skills
Measure real TTFT, TPOT, inter-token latency, and throughput — not predictions.
| Skill | What it does | Try asking |
|---|---|---|
torch-xpu-bench |
Single-process benchmark via pure PyTorch — TTFT, decode rate, peak XPU memory, no server involved. | "Bench Qwen3-8B forward pass on Intel without any server." |
vllm-xpu-bench |
Benchmark a running vLLM-XPU server with vllm bench serve / throughput under real concurrency. |
"Benchmark TTFT and TPOT on my running vLLM-XPU server." |
sglang-xpu-bench |
Benchmark a running SGLang-XPU server with sglang.bench_serving, including prefix-cache hit rate. |
"Measure RadixAttention prefix-cache hit rate on my sglang server." |
And when the numbers disappoint, you need to know which op is eating the time — not a guess.
Profile & Debug — 3 skills
Go from "it's slow" to the exact op or SYCL kernel responsible.
| Skill | What it does | Try asking |
|---|---|---|
torch-xpu-profile |
Profile with torch.profiler + Kineto, export a Chrome trace, find the hottest ops and idle gaps. |
"Why is my Qwen2.5 generate() slow on Intel?" |
vllm-xpu-profile |
Profile a running vLLM-XPU server around a window of real requests via /start_profile / /stop_profile. |
"Capture a vLLM-XPU profile around a real-traffic window." |
xpu-profile-unitrace |
SYCL / Level Zero kernel-level profiling with unitrace — per-kernel timing, oneCCL events, HW counters. |
"Show me the actual SYCL kernel names taking the time." |
Most teams don't start from scratch, of course — they start from a CUDA repo.
Migrate from CUDA — 2 skills
Assess and execute a CUDA-to-XPU port with a repeatable, gated process.
| Skill | What it does | Try asking |
|---|---|---|
cuda-to-xpu-migration |
Produce a migration assessment for a CUDA repo — blockers, translation tiers, and which skill handles each part. | "Migrate this CUDA training repo to Intel XPU." |
xpu-port |
Execute the port: libcst-based scan, mechanical rewrite, and CPU FP64-vs-target-dtype correctness verification. | "Port my repo at ./my-model to XPU now." |
The split is the point: assessment never executes, execution never guesses.
cuda-to-xpu-migration runs a read-only scan and sorts findings into five tiers — portable
PyTorch/HF, container/runtime, serving launch scripts, Triton kernels, and hard CUDA-native
blockers (.cu/.cuh, CuPy, NCCL, TensorRT, flash-attn, bitsandbytes, cuBLAS/CUTLASS/
cuTENSOR/cuSPARSE/cuDNN) — then routes each to the skill that handles it. Its report always
opens with the literal verdict: Migration result: COMPLETE | PARTIAL | BLOCKED.
xpu-port then executes deterministically, with a hard gate in the middle:
python3 xpu_port_scan.py . > findings.json # tag: mechanical | semantic | escalate
python3 xpu_port_rewrite.py --transform <t> --path . # named, --check-previewable
python3 xpu_port_scan.py . > findings.after.json # mechanical bucket MUST be zero
python3 xpu_port_verify.py . # CPU FP64 vs target dtype
Example: porting a PDF-to-podcast solution end to end
That's the catalog. Here's what it looks like when the skills have to cooperate on something real.
As an example, let's take a popular PDF-to-podcast solution and examine how the skills can help an agent run it fully on a system with four Intel Arc Pro B70 GPUs.
The original solution uses external inference APIs and can also be deployed with local
GPUs. The goal here is to replace the external inference path with local inference on
Intel Arc Pro hardware while preserving the rest of the application flow. The example
is based on the pdf-to-podcast
repository.
How this was planned and deployed
The important part is the routing. The migration assessment classifies the original application as api-first: model inference is accessed through service endpoints rather than through a large local CUDA kernel surface. That means the agent can focus on replacing the inference endpoint, selecting an XPU-compatible serving stack, and validating the deployment on four Arc Pro B70 GPUs instead of attempting an unnecessary kernel rewrite.
What remains is a small code edit, swapping the original model client for a local OpenAI-compatible client, plus a configuration-level endpoint change from the external inference service to a local vLLM-XPU endpoint. The full chain, from assessment through deployment planning to validation, is the sequence shown in the panel above.
Verified end to end on real Arc Pro hardware, PDF in, playable MP3 out.
Verified like a security control, not a doc
All of which raises a fair question: why trust any of this?
A Skill isn't a document an agent reads for inspiration. It's an instruction set an agent executes with real permissions — launching containers, installing packages, binding host devices. Wrong skills don't give bad advice; they run bad commands.
So each of the 20 ships an executable YAML contract, checked against the agent's actual recorded output:
- Activation — prompts that must trigger it, and near-misses that must not.
- Requirements — the right tool, the right flag, and a real verification step before reporting success.
- Forbidden — destructive cleanup, EOL toolchains, or CUDA-only flags that silently no-op on Intel.
260 checks · 231 pass · 29 advisory warn · 0 fail. 100% of required (error-severity) checks passing, 9.4/10 average. One failing required check blocks merge in CI.
Highest-risk skills run on real Battlemage silicon, not mocks. xpu-system-setup on an
Arc Pro B70 / Ubuntu 24.04 stock kernel found all three broken prerequisite layers
(nomodeset in GRUB, missing xe alias, compute runtime too old), applied --fix, and
came back all-clear after reboot. sglang-xpu-run on a physical B580 surfaced a kernel/UMD
mismatch and a non-root render-group bug a mock trace would never have caught — both now
documented in the skill with the fix.
Currently verified against Claude Sonnet 4.6 via the
skillverifyharness. Broader model coverage is planned as the live-agent adapters mature.
Install it
git clone https://github.com/intel/gpu-ai-skills.git intel-gpu-ai-skills
cd intel-gpu-ai-skills && bash scripts/install.sh
Detects every agent on the machine and installs into all of them. --all creates dirs for
agents you haven't used, --agent <name> targets one, --uninstall reverses it.
For any other agent, clone this repo and copy the skill folders into the agent's skills directory:
| Agent | Skill Directory | Docs |
|---|---|---|
| Claude Code | ~/.claude/skills/ |
docs |
| opencode | ~/.config/opencode/skills/ |
docs |
| OpenAI Codex | ${CODEX_HOME:-~/.codex}/skills/ |
docs |
| GitHub Copilot CLI | ~/.copilot/skills/ |
docs |
| Cursor | ~/.cursor/skills/ |
docs |
| Qwen Code | ~/.qwen/skills/ |
docs |
| Kimi Code | ~/.kimi/skills/ |
docs |
| Hermes Agent | ~/.hermes/skills/ or hermes skills tap add intel/gpu-ai-skills |
docs |
| OpenClaw | ~/.openclaw/skills/, <workspace>/skills/, or skills.load.extraDirs |
docs |
Generic / AGENTS.md |
<repo>/.agents/skills/ or ~/.config/agents/skills/ |
uses agents/AGENTS.md |
On Ubuntu 24.04 + Arc Pro B60/B70? Run this first — it checks nomodeset in GRUB, the
OEM kernel 6.17 requirement, and compute runtime ≥26.18:
bash plugins/intel-gpu-ai-skills/skills/xpu-system-setup/scripts/check_battlemage_prerequisites.sh --fix
Then just describe what you want:
"Start a vLLM server with Qwen2.5-7B on my Intel GPU." "Why is my Qwen2.5 generate() slow on Intel?" "I have a CUDA repo — assess what it takes to port it to XPU."
Why it matters
Intel Arc Pro GPU are priced to compete on cost per token — but only if teams can
operate them without re-learning a toolchain. Every hour rediscovering that --gpus all is
a silent no-op, that fp8 KV needs a specific attention backend, or that SGLang fell back to
CPU and your benchmark is fiction, is an hour of hardware savings that never reaches the
bottom line.
Each of these 20 skills encodes one real, verified failure mode — so your team, and your agent, never pays for it twice.
⭐ github.com/intel/gpu-ai-skills · Apache-2.0
Found a wrong flag or a missing failure mode? Open an issue — that's exactly the knowledge this pack exists to capture.
