Skills
Find, install, and update agent skills from skills.sh and any git repository with hi skill, pinned to a commit with their audits shown, and write the hi skill that teaches agents to use hi safely.
Skills teach coding agents how to do something:
work with PDFs, query data with DuckDB, drive a browser, or use hi.
hi skill finds them on skills.sh, installs them from
their git repositories at a recorded commit, and keeps them up to date. It
also writes the hi skill, which comes with hi.
Search and pick
hi skills
In a terminal, hi skills (or hi skill) opens one screen to search,
browse, and pick:
Skills for ~/projects/pricing g: everywhere
Search skills.sh › pdf▏
Installed
✓ hi built in up to date
Results for "pdf"
› ◼ pdf anthropics/skills ✓ 207k safe safe medium
◻ docx anthropics/skills ✓ 197k safe critical low
◻ pdf openai/skills ✓ 13k safe safe medium
── pdf · anthropics/skills ──────────────────────────────────────────────────
Use this skill whenever the user wants to do anything with PDF files…
License: Proprietary. LICENSE.txt has complete terms
Audits: Agent Trust Hub safe · Socket safe · Snyk medium (2026-09-15)
type: search · ↓↑: move · space: pick · enter: install · 1 picked
u: update · x: remove · g: here/everywhere · esc: quit
- Type to search skills.sh; results are sorted by installs, and ✓ marks the maker of the tool the skill is about (Anthropic, Vercel, DuckDB, Hugging Face, and a few more). Many skills on skills.sh are copies of others with large install counts, so look at the source.
- ↓ moves from the search into the list. There, space picks a skill, enter installs what you picked (or the highlighted one), u updates and x removes an installed skill, and g switches between this project and every project. Any other letter goes back to the search.
- Before you type, the list shows suggestions: the
hiskill when it’s missing, and well-made skills from the tools’ makers. - Installing leaves the full screen, shows each skill with its license, files, and audits, and asks once.
Every action is also a command, for scripts and agents.
Commands
hi skill find pdf # search skills.sh
hi skill add anthropics/skills --skill pdf # install from a repository
hi skill add anthropics/skills/pdf # the same, as skills.sh shows it
hi skill ls # what's installed, from where, at which commit
hi skill show pdf # description, license, files, audits
hi skill update # move skills to their source's newest commit
hi skill update --check # only list what would change; exit 1 if anything would
hi skill rm pdf
hi skill add hi # the hi skill
| Option | Meaning |
|---|---|
--global |
In your home folder, for every project |
--skill a,b |
add: which skills, from a source with several |
--yes |
Don’t ask; add takes every skill a source has |
--accept-risk |
Add or update a skill that an audit rates high or critical |
--ref <ref> |
add: a branch or tag instead of the default branch |
--force |
Replace a skill hi didn’t install, or changes made to one here |
--json |
find and ls: JSON on stdout |
--bundles |
update: move the skills in bundles/<name>.json instead |
Without a terminal, add, update, and rm need --yes, and a source
with several skills needs --skill or --yes.
Sources
| Source | Example |
|---|---|
GitHub, owner/repo |
anthropics/skills |
One skill, owner/repo/skill |
duckdb/duckdb-skills/query |
| A folder in a GitHub repository | https://github.com/owner/repo/tree/main/skills/web |
| Any git repository | https://gitlab.com/org/skills, git@host:org/skills.git |
| A folder on this machine | ./team-skills |
The hi skill |
hi |
hi fetches the source with git, using your own git credentials, so
private repositories work as they do for git clone. It finds skills as
npx skills does: a SKILL.md at the top, under skills/, or in an
agent’s skills folder. Nothing from the source runs while it’s fetched or
installed.
Where the files go
| Path | What | Read by |
|---|---|---|
.agents/skills/<name>/ |
The skill | Codex and other Agent Skills readers |
.claude/skills/<name> |
A link to ../../.agents/skills/<name> |
Claude Code |
skills-lock.json |
Each skill’s source, commit, and file hash | hi skill and npx skills |
These are the folders and the lock file npx skills uses, so your team can
use either tool. hi adds each skill’s commit to skills-lock.json, which
npx skills doesn’t record. Commit all three; Git stores the links as
links. With --global, the skills go under your home folder, and hi
keeps its list in ~/.config/hi/skills.json.
Updating and trust
A skill is instructions an agent follows without asking, often with
scripts it runs, so hi never changes one by itself:
- Pinned. Each skill stays at its recorded commit until
hi skill update, which shows what changed (dshows the diff) and the latest audits, and asks. - Audits. skills.sh has each skill checked by partners (Agent Trust
Hub, Socket, Snyk, and others).
hishows their verdicts, and asks before adding or updating a skill any of them rateshighorcritical; without a terminal it needs--accept-risk. Even well-known skills sometimes get such a rating, so read the audit rather than refuse by habit. - Licenses.
hishows each skill’s license. Anthropic’sdocx,xlsx,pptx, andpdfskills, for example, are proprietary and licensed for use with Anthropic’s services.hidoesn’t ship any of these skills; it fetches them from their repository when you ask. - Changes made here are kept:
updateskips a skill whose files you changed, unless you add--force. - No tracking.
hisends skills.sh your searches and asks it for audits of public repositories, but no install events.DO_NOT_TRACK=1turns off searches and audits too; installing and updating still work, through git.
Bundles
A bundle is a named set of skills for one kind of work, with the packages
each skill needs. hi agent --bundle web,office puts the skills in the
box’s home folder and runs the box on an image with those packages; see
Bundles.
hi has three, in bundles/:
| Bundle | Skills |
|---|---|
web |
agent-browser from vercel-labs/agent-browser |
office |
docx, xlsx, pptx, pdf from anthropics/skills (proprietary) |
data |
query, read-file, convert-file from duckdb/duckdb-skills; data-visualization from anthropics/knowledge-work-plugins |
A bundle file lists each skill’s source, its commit, and what it needs:
{
"name": "web",
"description": "Browse and automate websites with agent-browser.",
"skills": [
{
"source": "vercel-labs/agent-browser",
"skill": "agent-browser",
"commit": "0207911f1bd4d0393eddaa90f2e50f96e0fb8974",
"needs": {
"layer": "heavy",
"npm": ["agent-browser@0.38.2"],
"browsers": ["chrome"],
"network": {"mode": "open", "reason": "visits whatever sites the task needs"}
}
}
]
}
needs can have layer (base, heavy, or light: the order the
packages go in), apt, pip (name==version), npm (name@version),
browsers (chromium from Playwright, chrome from
agent-browser install), env, network (mode, hosts, reason), and
gpu. Each is one fixed install step, so a bundle can’t run commands of
its own; an unknown key or an unpinned package refuses the bundle. The
hi skill goes in every bundle.
Your team keeps its own bundles in bundles/ of a template source on its
hi server, next to skills/; there, a skill
whose source is "." is the source’s own skills/<name>. Your own go in
~/.local/share/hi/bundles/bundles/ (or HI_BUNDLES_DIR), with the same
layout. A project that always needs a bundle names it in its
devcontainer.json, under customizations.hi.bundles; see
Run code in a box.
Whoever looks after the bundles moves the commits in the folder that has
bundles/:
hi skill update --bundles --check # what would change; exit 1 if anything would
hi skill update --bundles # show each change and its audits, ask, rewrite the files
hi skill update --bundles office # one bundle, or one skill
When a newer commit mentions a tool the old one didn’t, hi says so,
since the bundle’s packages may need to change too.
The hi skill
hi skill add hi writes the skill that teaches agents to use hi. It comes
with hi, so it always matches the version you have:
hi skill add hi # into the current folder
hi skill add hi --global # into your home folder, for every project
hi skill --print # show it without writing anything
Without a terminal, plain hi skill writes it too, as it always has. Using
Codex or another agent on a new machine? Run hi skill add hi --global
once, and every session there can load the skill. An agent that doesn’t
have hi yet can start from hi5.sh/llms.txt, which tells it
to install hi and follow this skill.
What agents learn:
- Rules: ask before starting paid hardware and show a
--dry-runfirst; only then pass--yes; always set--max; stop what they start and checkhi compute ls; pass credentials with--secret, never--env; ask beforehi install,hi adduser,hi net, or adding skills. - How to: choose providers and hardware, run jobs, use instances and tunnels, serve models, read logs, and fix common errors.
- Managed compute: on a machine that has joined a
hi server, send requests with
--reasonand--no-wait, wait withhi compute requests <id> --wait, report a denial instead of working around it, and never approve anything. - Sharing a local service: ask before
hi net expose, keep its password, use--publiconly with the user’s yes, keep--maxshort, and stop it when done. - Your team’s data: get your team’s datasets and models with
hi data, never with a Hugging Face token of their own; check sizes first; usehi data runfor code that reads them, and--dataon cloud runs.
Each file starts with a marker such as
<!-- Written by hi v0.7.1; rerun hi skill to update. -->. hi skill update
rewrites it after you update hi, and hi skill ls says when it’s from an
older hi. A hi skill that someone wrote by hand is kept unless you add
--force.