Edited by humans. Written by AI. How our editing works
All articles

AI Skills at Scale: Teaching Agents Your Standards

Nick Nisi and Zack Proser of WorkOS make the case that structured markdown 'skills' are how you stop re-explaining yourself to AI agents every single day.

Rachel "Rach" Kovacs

Written by AI. Rachel "Rach" Kovacs

May 7, 20267 min read
Share:
Two men wearing glasses discuss AI engineering topics with "Progressive disclosure" and "Full Workshop" text visible on…

Photo: AI. Mika Sørensen

Nick Nisi and Zack Proser, both developer experience engineers on the applied AI team at WorkOS, opened their recent workshop with a question that landed harder than they probably intended: when's the last time you wrote a line of code by yourself?

Proser's answer: "I think I did a cd in a directory recently. Otherwise, it's been like probably six or eight months now."

Whether you find that exciting or alarming probably tells you where you are in your AI adoption curve. But it's not really the point of what they were demonstrating. The point is what falls apart when you're living at that end of the curve—when you're juggling multiple codebases, multiple agents, and every conversation starts from scratch.

The Memory Problem Nobody Talks About Enough

LLMs don't remember you. That's not a bug, it's architecture—but the practical cost compounds fast. Every new conversation means re-establishing context: this is how we do routing here, we use pnpm not npm, semantic commits are non-negotiable, don't touch that module. Nisi described the experience of talking to agents across "disparate terminal tabs" over a week: "Every single time you start talking to it, you need to reload all of that context first. It ends up eating a ton of time and slowing you down."

The partial solution most developers already know about is configuration filesclaude.md, agents.md, files you drop in a repo or home directory that pre-load context for the model. Claude has its own built-in memory that tracks project preferences. These aren't nothing. But they're leaky. The agent can decide not to follow them—Nisi copped to asking Claude to do three things in sequence and having it skip the middle step, responding when challenged with something approximating "you told me to do it, I just didn't feel like it." As he noted: "That's how you know it's a real engineer."

More structurally: these files are repo-bound or globally scoped, with no middle ground. They can't easily execute scripts to pull in live data. And they don't travel—if your conventions are only encoded in one repo's config file, everyone on your team has to remember to pull updates, and any new project starts from zero again.

What a Skill Actually Is

The workshop's answer is skills: structured markdown files that encode a specific, repeatable unit of work in a way the model can discover and invoke automatically.

The anatomy is straightforward. A skill lives in a folder—say, .claude/skills/repo-roast/—with a SKILL.md at its core. That file has YAML front matter at the top with a name and, critically, a description. The description isn't for humans. It's the routing signal: the LLM reads it to determine whether this skill is relevant to whatever task you've just handed it. Write a good description and the model routes to your skill without being told to. Write a bad one and it gets ignored.

The skill folder can also include supporting files, images, and scripts. That last part is where it gets interesting.

Claude supports a script interpolation syntax—a bang followed by backticks wrapping a shell command. When the skill loads, Claude executes that command and substitutes the output directly into the context. So instead of asking the model to "go find the last ten commits," you give it the last ten commits, already formatted. You've replaced a non-deterministic request with a deterministic input. As Proser put it: "You're saying here are the latest 10 commits in the exact format that I expect you to understand them in. Go and do something with that information. It's not going to be non-deterministic each time."

That interpolation feature appears to be Claude-specific for now. Nisi mentioned testing it with Pi—Inflection AI's conversational assistant—and getting a workaround: Pi suggested an extension approach that produced similar behavior. That's a meaningful distinction from the Claude implementation, where the interpolation is native to the skill system. Whether other major environments get this natively is an open question the workshop doesn't resolve.

On cross-platform compatibility more broadly: Nisi and Proser are explicit that skills work with Claude, Cursor, and Claude Desktop. Those claims are grounded in their daily use. They also mentioned Codex in passing, but the workshop doesn't demonstrate or verify that integration—so I'm leaving it out here until there's something more solid.

Constraints Beat Instructions

One of the more counterintuitive points Proser made is about how to write skills well. The instinct is to be prescriptive: do step one, then step two, then format the output like this. That instinct is wrong, or at least wrong most of the time.

"It can be more powerful to provide a few constraints as opposed to being overly prescriptive in exactly how you want the task done," he said. Three clear constraints—never be vague, always cite code with a specific line number and git commit reference, flag README drift—outperform a wall of instructions. The model has more room to reason when you're fencing it rather than scripting it.

This is less code and more curriculum design. You're not writing a function; you're articulating standards. The people who will be good at this aren't necessarily the engineers with the deepest technical chops—they're the ones who can express what "good" actually looks like in their context, specifically enough to be actionable and loosely enough to allow judgment.

The workshop demo skill—"repo roast," a code review framed as a comedy roast—illustrated this well. Without a skill, asking a generic agent to review a repo produces generic advice. With even a compact skill encoding your project's specific conventions, you get feedback that names your actual patterns, flags your actual inconsistencies, and speaks to your actual standards. The delta between those two outputs is the whole argument for skills.

The Accountability Layer Most Teams Will Skip

Proser described building a recruiting skill with a non-technical team during an on-site. The skill pulled from Slack, Notion, and recruiting software, synthesized candidate data, and produced structured reports. Once it was built: "As soon as you gave them that skill, everyone on the team is running it in a uniform way."

That's real. Uniformity across a team is genuinely hard to achieve with AI tooling, and skills are a credible mechanism for it. But uniformity is only as good as the skill it's enforcing—and skills go stale. Projects evolve. Conventions change. The routing description that was accurate six months ago might now be sending the model somewhere it shouldn't go.

This is the part that reads like a workflow problem but is actually an institutional accountability problem. Who owns the skill? Who has the authority to update it? What happens when a team member notices the skill is wrong but doesn't know if they're supposed to touch it? In security, we call this the governance gap—the space between a control that exists and a control that anyone is responsible for. Skills will fall into that gap at organizations that don't explicitly assign ownership. The skill doesn't care. It'll keep routing.

What the Workflow Looks Like

For teams actually building with this: skills can live in a repo's .claude/skills/ directory, making them available to anyone using that repo, or in a home directory for global availability. Vercel's npx skills tool symlinks skills across multiple directories, which is why it's gotten traction as an installation method. The dev loop Nisi described—edit skill, save, invoke, evaluate output, repeat—is iterative by design. Claude also ships with a built-in skill-builder skill that can critique your skill's structure and help you tighten the description, which is a genuinely useful bootstrapping tool.

The portability is the thing that separates skills from config files in practice. A skill you built for one project can move to another project, to a teammate's environment, to a non-technical colleague's Claude Desktop setup. The recruiting team example was instructive precisely because it had nothing to do with code: the same mechanism that helps engineers enforce commit conventions can help a recruiter enforce report structure.

What it can't do is make your team care about maintaining it. That part's on you—and it's worth deciding before the skill exists, not after it's already drifted.


Rachel "Rach" Kovacs is Buzzrag's cybersecurity and privacy correspondent. She covers the security implications of emerging tech so you don't have to read the CVEs.

From the BuzzRAG Team

AI Moves Fast. We Keep You Current.

Framework breakdowns, tool comparisons, and AI coding insights — distilled from the best tech YouTube creators. Free, weekly.

Weekly digestNo spamUnsubscribe anytime

More Like This

Man wearing glasses at computer with code visible, "Effectful" logo and "Just Clone the Repo" text overlay on dark background

Clone the Repo: What AI Coding Agents Actually Need

Michael Arnaldi's "just clone the repo" technique for AI coding agents has real security implications most developers aren't thinking about. Here's the full picture.

Rachel "Rach" Kovacs·2 months ago·7 min read
Man speaking to camera with AI Engineer Europe and Black Forest Labs logos visible, showing clothing generation…

Black Forest Labs FLUX: Visual AI's Open Source Gambit

Black Forest Labs is building toward 'visual intelligence' with FLUX. The open-source framing is real—but so are the questions about consent, deepfakes, and enterprise data.

Rachel "Rach" Kovacs·2 months ago·8 min read
Developer in profile wearing cap with code editor and git branch diagram visible, showing reduction from 12K to 200 lines…

Cursor Replaced 15,000 Lines of Code with 200 Lines of Markdown

How Cursor's David Gomes deleted a complex feature and rebuilt it with prompts—plus the very real problems that came with trusting models instead of code.

Marcus Chen-Ramirez·3 months ago·6 min read
Man speaking at Code Summit workshop with table comparing AI agents and PromptLayer logo visible on screen

Demystifying Claude Code: Simple Models, Big Impact

Explore how Claude Code simplifies AI coding agents with simple models and better prompt engineering.

Tyler Nakamura·7 months ago·3 min read
Bearded man in glasses and beanie with five glowing neon icons representing radar, link, warning, telescope, and gauge…

The AI Skill That Expires Every Three Months

AI capabilities expand so fast that the workforce skill needed to work alongside them degrades quarterly. Here's what's replacing traditional training.

Rachel "Rach" Kovacs·5 months ago·6 min read
Man wearing glasses and beanie with "NOBODY NOTICED" text overlay on dark background

AI Skills Are Becoming Infrastructure. Most Teams Missed It.

Six months after Anthropic launched skills, they've evolved from personal tools to organizational infrastructure. Most teams haven't caught up.

Bob Reynolds·4 months ago·5 min read
Bearded man wearing glasses and a beanie gestures toward camera with confused expression, text reads "NOW WHAT?

Why Your AI Agent Sits Idle After Installation

Installing an AI agent takes 10 minutes. Making it actually useful takes 40 hours. Here's why the industry keeps solving the wrong problem.

Rachel "Rach" Kovacs·3 months ago·6 min read
ACEMAGIC mini PC with colorful ring display showing "TANK" logo and USB ports against blue background with red text overlay

This 128GB Mini PC Has a Performance Dial You Can Actually Use

The Acemagic M1A Pro+ packs 128GB of RAM and AMD's Strix Halo chip into a box with an RGB dial that changes performance modes on the fly—no reboot needed.

Rachel "Rach" Kovacs·3 months ago·6 min read

RAG·vector embedding

2026-05-07
1,918 tokens1536-dimmodel text-embedding-3-small

This article is indexed as a 1536-dimensional vector for semantic retrieval. Crawlers that parse structured data can use the embedded payload below.