Skills

A skill is a folder an agent loads when the job calls for it: SKILL.md with the instructions, when to use them and how, plus any scripts and files. It is the open format Claude and the open-source skill directories use, and on AIOUM it is a marketplace of its own: 1,505 open-source skills indexed from public directories, free, each with its repo, commit and licence, beside skills anyone lists on a node, per use or one-time. An agent reads a skill's instructions when it needs them, runs its scripts on your node, and can discover skills on its own during a run and keep the ones that worked.

The free index

npm run skills:index in offchain/ reads real public directories with the GitHub API: the known collections (anthropics/skills and the awesome-claude-skills and awesome-agent-skills lists), the agent-skills and claude-skills topics, code search for filename:SKILL.md above a star threshold, and a crypto slice of its own. It fetches each SKILL.md, parses its frontmatter, and writes offchain/skills/index.json: one entry per skill with its id, name, description, tags, category skill:<tag>, source {repo, path, commit, url}, licence and files. The files are cached under offchain/skills/<id>/ only when the licence allows redistribution (MIT, Apache-2.0, BSD, CC-BY, CC0, MPL); every other skill is indexed with a link and fetched from its repo when an agent loads it. GITHUB_TOKEN (or GH_TOKEN, or gh auth token) lifts the rate limit; without one, 60 calls an hour and no code search.

mcpmarket.com's skills directory is a second source: the generator reads its robots.txt and honours it (a one-second crawl delay), then its sitemaps and the newest pages, each giving a skill's name, description, author, category and the GitHub folder it links; those entries are link-only, via: mcpmarket, and their SKILL.md comes from the linked folder when an agent loads it.

FlagDefaultWhat it does
--out./skillswhere the index and the cache go
--min-stars, --max-skills, --max-per-repo25, 1500, 40the star threshold, the size of the index, the most from one repo
--code-search-pages10pages of GitHub code search for SKILL.md
--crypto-slice, --crypto-min-stars, --crypto-max-repos150, 5, 300the crypto slice, indexed on its own terms
--repos a/b,c/donly these repos
--no-lists, --no-topics, --no-code-searchskip a source
--mcpmarket-max, --no-mcpmarket, --mcpmarket-only200the directory pages to read; skip it; refresh only it, merged into the index on disk
--dry, --refresh, --finalizelist without writing; ignore the HTTP cache; finish a run from its work directory

The runner reads the index from offchain/skills/ (AIOUM_SKILLS_DIR), re-checked every 30 seconds, and serves it: GET /skills?q=&tag=&category=&limit=&offset= searches the index and the skill:* listings on the marketplace together, GET /skills/:id returns one with its SKILL.md, GET /skills/:id/files every file of an index skill. Categories are crypto, media, writing, research, code, data, social, ai, ops and other, each a set of tags.

The project's own skills ship with the runner. offchain/skills/own.json names their folders with tags, a category and a licence; the runner merges each into the served index ahead of the generator's entries, via: "own", with the name, description and licence its SKILL.md states and every file of its folder, always Files ready, and npm run skills:index never touches them. GET /skills, load_skill, the builder and a pipeline's skill need see them like any index entry; a search describes one as "Ships with AIOUM", and the card shows aioum as its source. Twelve ship, all MIT: aioum-beat-engine, aioum-cartoon-scene, aioum-voice-clone and aioum-motion-compiler (The Beat Engine and cartoon scenes), aioum-localize-service and aioum-distill-model (Localize a service, distill a model), aioum-workflow-optimizer, aioum-warm-gpu, aioum-line-cache, aioum-parallel-writer, aioum-kit-on-demand and aioum-resume-from-failure (Speed up a project). Each is also a marketplace listing (the skill-aioum-* templates: skill.get on the node that ships them, one-time, at the smallest price a listing can carry), so an agent on another node hires it like any listed skill.

In an agent

The builder's Its skills step (and --skills a,b on aioum agent create, skills in an aioum_agent_create spec) adds skills by id: an index id such as anthropics-skills-skills-pdf, or svc:<serviceId> for one listed on a node. How it reaches them is the same three-way choice as services and data: Only the skills I pick, My picks first, then anything it discovers, or Fully loose (--skills-access only|prefer|open, default prefer). Press never on a skill and it is ruled out.

At run start each chosen skill's name and description go into the planner's brief, with a rule: before relying on one, call load_skill with its id to read the full SKILL.md. Its files are put in the workspace on your node under skills/<id>/ (the node's skills.install), so its scripts run there with ws.run. With picks-first or fully loose, the planner also has search_skills (free, eight matches at a time) and keep_skill: a skill it found and used in a run that ends well is remembered as Picked up on its own and offered first next time; the builder lists these with Keep and Removed.

The run log shows every load as Skill · name: "trying name" for a free one, "name · $0.50 · one-time, yours now" on a purchase, "name · bought earlier, no charge" after, "name · $0.05" for a per-use load.

Selling a skill

Anyone can list a skill on a node. The listing type is skill: the node serves skill.get {id}, returning the SKILL.md and the files, and the terms are in pricing:

  • Per use (mode: "per-use"): every load is a paid call at the price. Nothing is kept between runs.
  • One-time (mode: "one-time"): an agent pays once and keeps the files, in the runner's skill cache for that agent; later loads make no call and cost nothing. The purchase is on the agent as Bought outright, with the date and the service, and goes when the agent is deleted.

The licence line is the seller's: whatever SKILL.md states as its licence is what the listing shows, and the marketplace card and the builder show it beside the price and the terms. An open-source skill from the index shows its repo's licence, or "no license stated".

On the Earn page, Sell a skill takes the folder as a zip or a folder already on your node (Put it on the node: the node's POST /admin/skills answers with the SKILL.md's name, description and licence), then a name, a category tag, the one line agents read, the Terms (Per use or One-time), a price once per agent or per load, the usual test call and go-live. /earn?sell=skill opens on it. From the command line and from Claude:

npx aioum sell skill ./my-skill --mode one-time --price 0.5 --category writing
npx aioum sell skill --node-dir /path/on/the/node --mode per-use --price 0.05

aioum_sell_skill takes dir, files or nodeDir, with mode, price, name, description, category, key and stake. The listing's category is skill:<tag>; aioum skills and aioum_skills show every skill with its terms.

The marketplace's Skills section

Free and paid side by side: each card with its source (the repo with its stars, or "Listed on the marketplace" with the operator), its licence or Live state, One-time or Per use with the price, Files ready or Fetched on use, its tags, and Add to an agent, which opens the builder with the skill added.

Next: Pipelines: agent networks in one click — whole networks of agents with a project for the job, built from what is live.