Skip to content
ivralo
Sections

Docs / Skills

Installing skills

Skills install from GitHub onto the local shelf. This page covers installing, updating, removing and assigning them, and the file that records who owns what.

Install from GitHub

ivralo skills install anthropics/skills/document-skills/xlsx --agent analyst

The source names a repository on GitHub, and a folder in it when the repository holds more than one skill:

FormExample
owner/repoacme/ops-skills
owner/repo/sub/pathacme/ops-skills/skills/deploy-checks
any of the above with @refacme/ops-skills/skills/deploy-checks@v2
a pasted repository URLhttps://github.com/acme/ops-skills
a deep linkhttps://github.com/acme/ops-skills/tree/main/skills/deploy-checks

Only GitHub is supported, and git must be on the PATH. The installer makes a shallow clone into a temporary folder, finds the one SKILL.md, validates it and lints it. Then it shows what would land: the name, the description, the file list, the lint findings, and a warning when the skill ships scripts. Then it asks.

Read the scripts before you say yes. Agents run them inside the Python worker through run_skill_script and nowhere else, but they are still code from someone else.

A few things are refused before anything is written:

  • a skill whose name is a shipped skill's;
  • a repository with several skills and no folder named;
  • an --agent that is not a preset's key.

Who gets it

With --agent, the skill is assigned to that preset, and you can repeat the option. Without it, the skill joins the team as a specialist of its own, named after the skill. ivralo skills assign folds it into a preset later. Either way every specialist can load it; ownership decides where work is routed. How skills work explains both.

The team picks the skill up on its next build: a new session or a restart. Inside a session, /skill install <source> does the install and rebuilds the team for you.

Without a terminal

--yes stands in for the question on a fresh install. Without a terminal and without --yes, nothing is installed.

ivralo skills install acme/ops-skills/skills/deploy-checks --yes

Update

ivralo skills update deploy-checks

re-fetches the skill from the source recorded when it was installed, kept in its own frontmatter under metadata.ivralo. If nothing changed it says "Already up to date" and stops. Otherwise it shows a diff and asks.

The swap itself is made with a backup, so a move that fails restores the old copy.

Remove

ivralo skills remove deploy-checks

deletes a local skill and its assignment together. It asks first; --yes skips the question, and without a terminal --yes is required. Shipped skills cannot be removed.

Assign and unassign

ivralo skills assign deploy-checks --agent coder --agent investigator
ivralo skills unassign deploy-checks

assign gives a skill to one or more presets, on top of any owner it already has. unassign drops its entry; a local skill with no other owner goes back to riding a specialist of its own. Each owner is checked against the presets before anything is written; ivralo agents lists the keys.

assignments.json

Assignments are kept in skills.local/assignments.json, beside the local skills:

{
  "version": 1,
  "skills": {
    "deploy-checks": { "agents": ["coder", "investigator"] }
  }
}

The commands above write it for you, atomically. If you edit it by hand:

  • a file with a different version is refused, loudly;
  • an owner that is not a preset's key is skipped when the team is built, and ivralo doctor reports it;
  • a skill name that no longer exists fails the team build and names the skill, so a specialist is never built with fewer skills than you think it has.

Commands

CommandWhat it does
ivralo skillslists both shelves and whether each skill validates
ivralo skills install <source>installs from GitHub; --agent, --yes
ivralo skills update <name>re-fetches from the recorded source; always asks
ivralo skills remove <name>deletes a local skill and its assignment; --yes
ivralo skills assign <name> --agent <key>gives a skill to a preset
ivralo skills unassign <name>drops the assignment
ivralo skills create <name>scaffolds a new skill, see Writing a skill
ivralo skills lintchecks skills for known mistakes

ivralo skills exits 1 when neither shelf exists, and points at ivralo init --home.