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.