Hugging Face demonstrates a tool called upskill to generate and evaluate agent skills using large models and deploy them on smaller open models. The process is benchmarked on the complex task of writing CUDA kernels for diffusers models. The approach aims to cut costs and improve performance on domain-specific problems by packaging expertise into modular skill files.
The best thing about agent skills is upskilling your agents on hard problems. There are two ways to look at that:
This blog post walks through the process of using a new tool, upskill , to generate and evaluate agent skills with large models and use them with smaller models. We will benchmark upskill on the task of writing CUDA kernels for diffusers models, but the process is generally useful for cutting costs, or using smaller models on hard and domain-specific problems.
In case you missed it, agent skills are taking the coding agent game by storm. In fact, they’re a straightforward concept to define model context as files, like instructions as markdown and code as scripts. The file format makes them easy to generate, share, and review. In short, they’re a practical medium to share capabilities across models and tools, and they're most useful in specific domains or hard problems. Not stuff the model can do well anyway.
We didn’t just want to write kernel code, but understand the full kernel-builder workflow: project structure, build.toml configuration, architecture-specific optimizations, and PyTorch bindings. This tutorial shows how upskill creates validated skills that actually work.
The kernel-builder-cuda-kernels skill teaches Claude everything it needs to know about CUDA development: which GPU architecture to target, how to structure a kernel-builder project, when to use shared memory versus registers, and how to write PyTorch bindings.
Finally, we need to transfer our newly created skill to the tool or model we intend to use. Most tools like codex , cursor , and opencode have settled on a consistent format for skills, which is a directory at {agent}/skills/{skill_name}/SKILL.md , so we just need to copy the skill directory to this location.
The approach works for any specialized task where you'd otherwise write detailed prompts repeatedly. Skills are portable across Claude Code , Codex , Cursor , and other tools that support the Agent Skills specification .
This post showcases this process by using Claude to generate a Skill file that can be used by open source models for a complex and specialized task: write CUDA kernels. We first tried a simple skill based on existing documentation, and we found that it improved performance for some others, but not all. In fact, it could even degrade performance or increase token usage for some models. Check out the plot below to see the performance of the model with and without the basic skill.
Now, let's walk through how you can use upskill to upskill your agents on hard problems, and measure performance.
First, we use Claude Code to build a kernel interactively and export the trace. We worked through the process by instructing, validating, and adding documentation links. This somewhat naive process is important to reveal the models' initial challenges. In fact, you can iterate on this multiple times, by trying to solve the task with draft versions of the skill, and experimenting with smaller models. Each time, you can instruct the agent to improve the skill and test it on the smaller model.
This teacher-student skill transfer method enables the AI industry to leverage expensive, high-quality models to build reusable domain expertise that cheaper local models can deploy, reducing API costs and token usage.