Skills

Reusable plain-TypeScript capabilities the planner can invoke.

A skill is a Hermes-native unit of capability. Under the hood it is just a tool registration, but conceptually skills are the right altitude for thinking about reusable agent behaviors.

Anatomy

import { defineSkill } from "@/lib/hermes/skills";
import { z } from "zod";

export const summarizeTokenSkill = defineSkill({
  name: "summarize_token",
  description: "Summarize a crypto asset given its symbol or address.",
  args: z.object({
    symbol: z.string(),
  }),
  async run({ symbol }, ctx) {
    const news = await ctx.tools.web_search({ q: `${symbol} news` });
    const price = await ctx.tools.price_of({ symbol });
    return {
      headline: `${symbol} at ${price.usd}`,
      news: news.slice(0, 3),
    };
  },
});

Difference from tools

Tools are atomic. Skills are composable, can call multiple tools, and can short-circuit early. The planner picks tools; skill authors pick when a skill is the right level of abstraction.

Distribution

Skills are plain TypeScript files. Drop them into plugins/ and they will be picked up on next boot. A future verified marketplace will package skills into installable bundles, but the file format never changes.