Security / Installation

How to Install a SKILL.md Safely

A SKILL.md is a set of instructions your agent will follow, so installing one is a permission decision rather than a download. Read the whole package in a staging folder, install it into the one directory your host actually reads, then rehearse it on work you can throw away. The review takes about ten minutes, and it is the last point where a stranger's instructions are still under your control.

01

What does installing a SKILL.md actually change?

Three things change the moment a skill folder lands somewhere your host reads. The agent gains a short description that tells it when to reach for the skill, a body of instructions it can load mid task, and on some hosts a list of tools it may use without stopping to ask you.

That third one is the part people skip. The file is Markdown, but Markdown that tells your agent to run a bundled script, post to an endpoint, or delete a directory is still a request your agent will carry out under your credentials. Review the package the way you would review a pull request from a contractor you have never met, because that is exactly what it is.

02

Stage the package before the agent can see it

Stage and inventory a candidate skillbash
mkdir -p ~/skill-review && cd ~/skill-review
git clone --depth 1 https://example.com/some-skill.git candidate

# every file, not just the one the listing advertised
find candidate -type f | sort
du -sh candidate
head -40 candidate/SKILL.md

The inventory is the first real check, and it catches more bad packages than reading the prose does. A skill that advertises one Markdown file and ships a scripts directory, a compiled binary, or a single minified helper is not what the listing claimed. Count the files before you read them, and treat anything you cannot read as text as a reason to stop.

Then read for intent. You are not looking for clever code. You are looking for the handful of things that turn a helpful checklist into an outbound action: a host you do not recognize, a path to your environment file, or a line that tells the agent to proceed without confirming.

  • Network calls: curl, wget, fetch, and any hardcoded host or webhook
  • Credential reads: env files, keychains, token paths, cloud metadata addresses
  • Consequential verbs: send, publish, deploy, delete, purchase, spend
  • Language that tells the agent to skip confirmation or act without asking
  • Base64 blobs, minified scripts, and any file that is not readable text
One grep sweep over the whole packagebash
grep -rniE 'curl|wget|https?://' candidate/
grep -rniE 'API_KEY|SECRET|TOKEN|\.env|credential' candidate/
grep -rniE 'rm -rf|sudo|chmod|eval|base64 -d' candidate/
grep -rniE 'without asking|do not confirm|skip approval|auto-approve' candidate/
03

What in the frontmatter can bypass your approval?

Claude Code reads a small set of frontmatter fields, and two of them decide who is in control of the session. Read the frontmatter before you read anything else, because it is short and it sets the ceiling on everything below it.

FieldWhat it changesAsk before you accept it
allowed-toolsGrants the listed tools with no prompt, for the turn that invokes the skillWould you approve every one of these by hand?
disallowed-toolsRemoves tools from the pool while the skill is activeDoes the skill fence itself in, or leave everything open?
disable-model-invocationOnly you can trigger it; the model cannot start itShould anything with side effects fire on its own?
descriptionDecides when the model reaches for the skill unpromptedIs the trigger narrow, or will it fire on half your prompts?
Frontmatter fields and what each one changes, from the Claude Code skills documentation, September 2026.
04

Where does each host put the files?

Install location is not a filing detail. Put the folder in the wrong place and the skill is silently invisible, which reads as broken rather than misplaced. Put it in a shared location and it loads for every project on the machine, including client work it was never reviewed against.

HostWhere the reviewed folder goesRemoval
Claude CodeProject scope in the repo, or personal scope in your home directoryDelete the skill directory
HermesOne skills directory in your home folder, grouped by categoryRemove the folder, then start a new session
OpenClawWorkspace skills first, then project agent skills, then a global directoryUninstall, then confirm no copy remains higher in precedence
Skill locations and removal steps, taken from each host's own documentation and checked September 2026.
Review, then install, on each hostbash
# Claude Code: project scope travels with the repo and gets reviewed with it
cp -r candidate .claude/skills/some-skill
# personal scope loads in every project on this machine
cp -r candidate ~/.claude/skills/some-skill

# Hermes: install by identifier, or copy the folder you already read
hermes skills install official/research/arxiv
cp -r candidate ~/.hermes/skills/some-skill

# OpenClaw: workspace wins over the project agents directory
openclaw skills install ./candidate
ls <workspace>/skills .agents/skills

# confirm what the host now sees
hermes skills list
openclaw skills list

Flags move between releases, so the commands above are the bare forms. Check your host's current documentation before adding options, and list the directory afterward to confirm where the install landed. On Hermes a new skill takes effect in the next session, so one that appears to do nothing may simply not be loaded yet.

05

How do you rehearse a new skill without risking client work?

Rehearse in a folder you can delete. Copy in three fake records instead of a live export, point the agent at a test account, and give it a prompt that should trigger the skill. Then read what it did, not what it reported doing.

  • Run the trigger once and read the full tool log, not the closing summary
  • Confirm it stopped at every gate that would send, publish, deploy, or spend
  • Check that nothing left the machine: no surprise request, no upload, no draft
  • Delete the folder and confirm the skill drops out of the skill list
Is a SKILL.md safe because it is only Markdown?

No. Markdown is the delivery format, not the boundary. The file tells your agent what to do, and your agent already holds the tools that send email, write files, and call APIs. The risk sits in the permissions you granted the agent, so review every instruction with those permissions in front of you.

How do I know a skill has not changed since I reviewed it?

Pin the version. Record the commit or release you read, keep that reviewed copy in your own repository, and diff any update against it before you install the new one. Some registries publish scan and trust signals for a listing; treat those as one input to your review, never as clearance to skip it.

Should skills be installed per project or for the whole machine?

Per project by default. A project scoped skill is versioned with the repo, reviewed alongside it, and cannot follow you into unrelated client work by accident. Reserve machine-wide installs for skills you wrote or fully audited, and re-read that list every quarter to prune what you no longer use.

Put it to work

Get your business agent ready

Agent Ready is the free starting kit: the skill structure we use, the install review above as a checklist, and the approval gates we run on client work.

Agent Ready / Free beta
Continue the field manual

Related guides