DEV Community

Cover image for Skills Are the New Packages
Dhokai Raj
Dhokai Raj

Posted on

Skills Are the New Packages

Hermes Agent Challenge Submission: Write About Hermes Agent

This is a submission for the Hermes Agent Challenge: Write About Hermes Agent

Skills Are the New Packages

Every few years our industry quietly agrees on a new unit of sharing. Source files. Then libraries. Then packages, with npm and pip and cargo turning "code someone else wrote" into a one-line install. Then containers, which let us ship the whole environment.

I think we just got the next one, and most people are looking the other way because it arrived dressed as a markdown file.

The unit is the skill: a small, portable folder that teaches an agent how to do something. Hermes Agent is the most interesting place to watch this happen, not because it invented the format (it didn't), but because it's the first widely-used agent that doesn't just consume these packages. It writes them. By itself. While it works.

That combination — a portable, cross-vendor format for know-how, plus an agent that authors it autonomously — is a bigger deal than another "self-improving AI" headline makes it sound. Let me unpack why, including the part nobody selling you on skills wants to dwell on: installing one means running a stranger's instructions inside your agent.

What a skill actually is

Strip away the mystique and a skill is almost insultingly simple. It's a folder with one required file:

shopify-weekly-brief/
├── SKILL.md          # required: metadata + instructions
├── scripts/          # optional: code the skill can run
├── references/       # optional: docs, examples
└── assets/           # optional: templates
Enter fullscreen mode Exit fullscreen mode

SKILL.md is just YAML frontmatter followed by Markdown:

---
name: shopify-weekly-brief
description: ">"
  Assemble a Monday revenue brief from a Shopify store: top movers,
  low-stock SKUs, and notable reviews. Use when asked for a weekly
  store summary or sales recap.
version: 1.2.0
---

## Steps
1. Pull the last 7 days of orders and compare to the prior 7.
2. Flag any metric moving more than 15%.
3. List SKUs below the reorder threshold in `references/thresholds.md`.
4. Summarize in five bullets, lead with the biggest mover.
5. Deliver to the requested channel before 9am.
Enter fullscreen mode Exit fullscreen mode

That's the whole thing. No DSL, no SDK, no build step. The frontmatter carries metadata — at minimum a name and a description, optionally a version, platform restrictions, and declarations for any environment variables it needs. The body is plain instructions, written for a model to read. There are deliberately no format rules for the body. You write whatever helps the agent do the job.

If you've ever written a good README, you've already written most of a skill.

The quiet part: this format is everywhere

Here's the detail that turns a nice feature into an industry shift. The skill format isn't a Hermes invention or a Nous Research lock-in. It was originally developed by Anthropic, released as an open standard, and it has since been adopted by a genuinely surprising list of tools: Claude Code, Cursor, OpenAI's Codex, Gemini CLI, GitHub Copilot, Goose, OpenHands, Letta, and a few dozen more.

Read that list again with an engineer's eye. Those are competitors. They disagree about almost everything — models, pricing, editor vs. terminal, open vs. closed. And they agreed on a folder with a SKILL.md in it.

The consequence is the thing that matters: a skill you write for Hermes runs in Claude Code or Cursor or Codex without modification. Your agent's know-how is no longer trapped inside one vendor's product. It's a portable artifact, the same way a package.json-described library isn't tied to one editor.

We have spent two years worried about being locked into a model provider. While we were watching that door, the more durable form of lock-in — the accumulated knowledge of how your agent does your work — quietly got an escape hatch. Skills are that escape hatch.

Why "packages" is the right word, not a cute analogy

Once you see skills as packages, the whole ecosystem rhymes with one you already know.

Discovery and reuse. You don't reinvent date parsing; you npm install it. Skills are heading the same way. Hermes shares them through a Skills Hub, and because the format is an open standard, a skill from anywhere that speaks it is fair game. Build a good "summarize a PDF contract" skill once, use it across every agent you own.

Composition. Real power in package ecosystems comes from small things combining. Skills compose the same way: a "weekly brief" skill can lean on a "format-as-slack-message" skill, which leans on a "redact-PII" skill. Each does one job. Each is independently useful.

Lazy loading, built in. This is the part that's actually clever, and it's why an agent can carry hundreds of skills without drowning. Skills use progressive disclosure, in three stages:

  startup   →  agent reads only each skill's name + description   (cheap)
  match     →  task fits a description? load that full SKILL.md    (on demand)
  run       →  follow it; optionally execute bundled scripts/refs  (as needed)
Enter fullscreen mode Exit fullscreen mode

It's lazy import. The agent keeps a lightweight index of what it could do and only pays the context cost of the full instructions when a task actually calls for them. A thousand skills installed, a handful loaded. Your node_modules could never.

Versioning. The frontmatter has a version field for a reason. The same dependency-management questions are coming for skills, and the format left room for them.

The analogy holds because the underlying problem is identical: how do you package a capability so a machine can find it, load it, and run it, without the author and the user ever meeting?

What makes Hermes different: it writes its own packages

Here's where Hermes stops being "another tool that supports skills" and becomes the interesting case.

In almost every other tool on that compatibility list, a human writes the skill. You sit down, notice a repetitive task, and author a SKILL.md to capture it. The agent consumes what you produced.

Hermes flips the producer and consumer into the same entity. It creates skills from its own experience and refines them during use, through a skill_manage tool that can create a new one, patch a small fix, or edit a structural rewrite. The trigger is refreshingly concrete: after the agent finishes a non-trivial task — the docs put the bar at roughly five or more tool calls — it can crystallize the working approach into a new skill, so next time it loads a few steps of markdown instead of reasoning from scratch. Run it long enough and it has authored a small private library on disk (~/.hermes/skills/), in a format every other agent can read.

Sit with that for a second. We're used to agents that consume packages. This is an agent that publishes them. The npm analogy stops being about installing dependencies and starts being about an agent that writes its own libraries as a side effect of doing your work, and could in principle hand them to a completely different agent.

That's the genuinely new thing in this whole space, and it's almost buried under the "self-improving" marketing. The self-improvement isn't magic in the weights. It's an agent writing files, in a standard format, that make it faster next time. You can open those files. You can read them. You can put them in git. The "learning" is legible, and it's portable.

The catch: a skill is someone else's instructions running inside your agent

Now the part the ecosystem cheerleaders skip, and the reason I keep using the package analogy: package ecosystems taught us exactly how this goes wrong.

left-pad broke half the internet. Typosquatted packages have shipped credential stealers. Malicious postinstall scripts have mined crypto on build servers. Every one of those failure modes has a skill-shaped twin, and some are worse, because a skill isn't passive data. It's instructions a capable agent will act on, with whatever tools and credentials you've handed it.

Concretely, when you install a community skill, you're accepting:

  • Injected instructions. A skill's markdown body can quietly tell the agent to do more than the title promises. "Also send a copy of the summary to this address." Prompt injection, except it's pre-installed and it persists.
  • Bundled scripts. Skills can ship a scripts/ folder of executable code. That's a real attack surface, the same one postinstall is.
  • Scope abuse. The skill runs inside your agent, so it inherits your API keys, your file access, your messaging integrations. The blast radius is your setup, not the skill author's.
  • Silent updates. Pull a new version of a skill and you've pulled new instructions. Pin your versions, or "the brief skill" you trusted in March is something else by June.

There is, genuinely, some good news here, and it's a real advantage over the npm world. A skill is human-readable. You can't meaningfully audit a minified npm tarball before it runs. You absolutely can read a SKILL.md — it's a page of markdown. The vetting story for skills can be better than for code packages, precisely because the format refused to be clever.

Hermes leans on exactly this. Installing a skill (hermes skills install <identifier>) runs security checks on what you're pulling and makes you explicitly --force past flagged findings before it'll proceed. That's the right instinct. Treat it as a floor, not a substitute for reading the thing yourself.

A short checklist before you install a community skill:

  1. Read the whole SKILL.md. All of it. It's one page. If it's doing something the name didn't advertise, stop.
  2. Open scripts/. Treat bundled code exactly like a dependency you're about to run, because it is.
  3. Check what tools and scopes it assumes. A "format text" skill that wants network access is a smell.
  4. Pin the version. Know what you're updating to before you update.
  5. Prefer reviewed sources over a random gist, the same instinct you (hopefully) apply to packages.

None of this is exotic. It's the supply-chain hygiene we already (mostly) practice for code, applied to a new artifact that's currently enjoying the same naive-trust honeymoon npm had around 2015.

How to write a skill that's actually worth sharing

If you take the package framing seriously, writing a good skill means writing a good package. A few principles that hold up:

The description is the API. This is the one most people get wrong. The description field is what the agent reads during discovery to decide whether your skill is relevant. It isn't marketing copy. It's the matching key. Write it for the moment of selection.

# weak — the agent can't tell when to reach for this
description: A helpful skill for reports.

# strong — names the trigger and the job
description: >
  Generate a weekly revenue brief from Shopify order data.
  Use when the user asks for a sales recap, weekly numbers,
  or a Monday store summary.
Enter fullscreen mode Exit fullscreen mode

One skill, one job. A skill that does three things is hard to discover, hard to compose, and hard to trust. Split it. Small skills are the reusable ones.

No hardcoded secrets or absolute paths. Declare the environment variables you need in the frontmatter; don't bake /Users/me/... or an API key into the body. A skill that only runs on the author's laptop isn't a package, it's a diary entry.

State your assumptions. "Assumes the orders API returns total_price." That one line is the difference between a skill that fails loudly when the world changes and one that fails silently, which — if you read my friend's piece on the cost of self-improving agents — is the expensive kind.

Keep it composable. Do your one job and return cleanly. Don't try to own the whole workflow. The good ones are LEGO bricks, not playsets.

The bet

Frameworks are loud right now. Every week there's a new agent, a new harness, a new "OpenClaw killer." Most of them won't be here in two years. That's normal and fine.

But formats outlive the tools that popularize them. HTTP outlived the browsers. Markdown outlived the editors. JSON outlived whatever we were doing before JSON. The skill format has the two properties that let a format win: it's brutally simple, and competitors who agree on nothing else have already adopted it.

So here's the bet I'd make. The most valuable thing you build with Hermes might not be your Hermes setup at all. It might be a handful of sharp, well-described, single-purpose skills — portable artifacts that keep working when you've moved on to whatever agent comes next, because they were never really tied to this one.

Hermes is, today, the best demonstration of where this goes: an agent that learns by writing packages instead of adjusting weights, in a format the whole industry can read. Watch the skills, not the agent. The agent is this year. The skills are the part that lasts.


Curious what others are building: if you've written a skill you'd actually trust a stranger's agent to run, drop it in the comments. The "would you npm install this" bar is the right one.

Top comments (0)