Back to Coding

Five Theories of Agent Skills

Skills, skills, skills… and they all mean something different. How does one keep up?

Two days ago TanStack shipped AI Code Mode. A month ago they launched Intent. Both use the word “Skills.” They do not mean the same thing. They also do not mean what Anthropic means with Claude Skills, or what I meant in my February “Skills vs. Agents” post.

Same word, four useful definitions:

Claude Skills (a persona you load into your session and talk with). Anthropic uses a simple format: SKILL.md files that define how a specialist approaches work. Claude loads that into your active session when relevant, and you collaborate in the same context window. The key shift is this: teach the model by handing it a document that defines a persona, rather than by fine-tuning or writing a giant prompt. It is less about static accuracy and more about shaping the assistant’s working style in the moment.

TanStack Intent (skills that ship with the library). Similar format, different home. Instead of you curating a local skill folder, the library author ships the guidance inside the package. Install the lib and you get version-matched agent instructions for free. That closes one of the biggest reliability gaps in AI coding right now: stale conventions and outdated API assumptions. It also lets maintainers encode project-specific best practices right next to the code they evolve.

TanStack AI Code Mode (saved runnable solutions). Here the skill is not a document. The agent writes code in a sandbox, you keep what works, and it can reuse that implementation later. Think reusable scripts, not reusable prose. This moves memory from “what it was told” to “what actually executed and passed.” In other words, behavior is grounded in prior successful execution, not just instruction text.

Claude “agents” (workers you launch in isolation). Not exactly skills, but close cousins: scoped tools, instructions, and focused know-how. Key difference is runtime. Skills stay in your context. Agents run separately and return output. In practice, this is a separation of collaboration mode versus execution mode. That separation is useful when you want bounded work, clear handoffs, and less conversational overhead.

Hope this helps.