Skills Are Runtime, Not Code

January 29, 2026

A MacBook on a table next to a green potted plant

I had a small moment today that changed how I explain why skill-based development feels so fast.

I asked an AI to turn a Playground video-analysis workflow into a Skill. It wrote the Skill, but then it did something extra: it added a video compression script on its own, because Gemini caps video input at around 20 minutes. I did not ask for that. The Skill inferred the constraint, saw the risk, and added a fix.

That is when it clicked.

The speed is not only about automation. It is about runtime resilience. Skills are fast because they assume the world is messy and still converge.

The thesis

Skill-based development is faster because it shifts effort from perfect specification to guided recovery. The agent does not need a flawless workflow; it needs guardrails, a few scripts, and a way to reason through failures.

In other words: skills are runtime, not code. They are an operational contract about how to get to a result even when things go wrong.

That feels obvious once you see it, but it is the opposite of how we have built most workflows. Traditional code treats failure as an exception. Skills treat failure as a normal step in the path.

The moment it clicked

The Playground video workflow was simple in concept: ingest a video, analyze it, extract key insights, and summarize the story. The missing part was the constraint. Gemini only accepts a limited video length. If the input is too large, the whole run fails.

A traditional workflow would handle this in one of two ways:

  • do nothing and let the job fail, or
  • add a rigid preprocessing step that always compresses every video

The Skill did something else. It inserted a conditional step: check the length, compress only if needed, and document the script in the Skill instructions. That extra script was not “more code.” It was a guardrail that let the agent finish the job.

This is not just a nice touch. It is the difference between a workflow that fails on the first real edge case and a workflow that adapts.

Why traditional workflows feel brittle

When I build workflows in code, I tend to overfit to the happy path. The workflow might be clean and fast, but it has a hidden requirement: it only works when the world stays the same.

The failure mode is always the same:

  • a file type is slightly different
  • a model API changes a limit
  • a data source is missing
  • a dependency times out

You can guard against these, but then you fall into the trap of building a fortress. Every guardrail is hard-coded. Every edge case adds another branch. Testing becomes mandatory and exhaustive because you have no tolerance for surprises.

That is the real cost of code-based workflows: they are brittle by default. They demand certainty before you run them.

Skills are guardrails, not rails

A Skill is a different shape. It is not a deterministic pipeline. It is a set of instructions, scripts, and heuristics that an agent can follow.

The Skill doesn’t say, “Always compress the video.” It says, “If the input exceeds the limit, compress it with this script.” The agent makes the call. The Skill carries the policy. The scripts provide the leverage.

This is why Skill-based development feels so much faster:

  • you encode intent, not every step
  • you add small scripts for the deterministic parts
  • you let the agent handle the messy glue

The agent is not perfect. But the system is forgiving. It has room to try again, adjust, and reach the outcome.

I have started writing Skills the way I would onboard a teammate: “Here is the goal, here are the constraints, here are a few known failure modes, and here is the script you can run when that happens.” That framing matters. It moves the work from exact orchestration to effective guidance.

The hidden accelerant: error budgets

What makes Skills fast is not the model’s speed. It is the error budget you implicitly allow.

When you write code, you spend most of your time preventing failure. When you write a Skill, you spend your time describing how to recover from it. That subtle shift matters.

Here is the difference in practice:

  • Code workflow: if step 3 fails, the whole run stops. You debug, patch, retest.
  • Skill workflow: if step 3 fails, the agent inspects the failure, chooses a fallback, and continues.

That does not mean you abandon rigor. It means you choose where to be rigorous. Deterministic parts become scripts. Ambiguous parts become instructions.

I also ask the agent to narrate its decisions. “Why did you compress? What target size did you choose? What fallback did you try?” That short self-report becomes lightweight observability. It is not a full tracing system, but it is enough to debug without rebuilding the entire pipeline.

The compression script was the perfect example. It was a small, specific fix that made the rest of the workflow flexible. One guardrail unlocked an entire class of inputs.

Speed is a byproduct of compounding

The real speed boost shows up over time.

Each Skill you write becomes a reusable unit of judgment. When the input changes, you adjust the instructions, not the whole pipeline. When a model improves, your Skill gets better without rewiring everything.

It also changes collaboration. A Skill is readable. You can hand it to someone else and they can run it without memorizing your internal architecture. The knowledge is in the artifact, not in a private brain or in a brittle code path.

This is the compounding effect:

  • Skills capture how you think, not just what you do.
  • They are portable across tools, models, and contexts.
  • They improve automatically as agents improve.

Traditional workflows do not compound. They degrade. Every new change adds complexity. Every new requirement stretches the pipeline until it collapses under its own branches.

Skills, by contrast, thrive on change. They are designed to absorb variability, not eliminate it.

What I still keep strict

This does not mean “anything goes.” There are places where I still want hard guarantees.

I keep three things strict:

  • Inputs and outputs. The Skill should clearly define what goes in and what comes out.
  • Deterministic transforms. If a step can be scripted reliably, script it.
  • Safety boundaries. Anything with cost, compliance, or irreversible actions needs explicit guardrails.

The rest is flexible.

This is the best of both worlds. I get the reliability of code for the parts that demand it, and the adaptability of an agent for the parts that do not.

A simple checklist for writing Skills

When I build a Skill now, I use a short checklist:

  • Start with the goal, not the steps.
  • Write down known constraints (limits, formats, costs).
  • Add small scripts for deterministic tasks.
  • Include fallback paths (“If X fails, try Y”).
  • Keep the instructions readable enough that a human can follow them.

The goal is not to automate everything. The goal is to create a path to success even when things are messy.

Closing thought

Skills feel fast because they are forgiving. I do not need perfect workflows anymore—just clear intent, a few scripts, and room for the agent to figure it out.