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:
| Form | Example |
|---|---|
owner/repo | acme/ops-skills |
owner/repo/sub/path | acme/ops-skills/skills/deploy-checks |
any of the above with @ref | acme/ops-skills/skills/deploy-checks@v2 |
| a pasted repository URL | https://github.com/acme/ops-skills |
| a deep link | https://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
--agentthat 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
versionis refused, loudly; - an owner that is not a preset's key is skipped when the team is built, and
ivralo doctorreports 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
| Command | What it does |
|---|---|
ivralo skills | lists 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 lint | checks skills for known mistakes |
ivralo skills exits 1 when neither shelf exists, and points at ivralo init --home.