skills-install
Skill0 starsChanged 13 days agoMITView on GitHub
Install, update, relink, or vet third-party agent skills from the internet. Use when the user asks to install a skill, a skill is missing or stale, a harness cannot see a skill, or a new source needs recording.
- Reads credentials
1 other project uses a version of this.
Adopted by
Most recently taken up by
- cupen/skillstheir own version, first seen Sep 7, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- cupen/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository11 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agent-rulesSkill
- code-discoverySkill
- designSkill
- project-scaffoldSkill
- repo-alignSkill
- repo-auditSkill
- repo-initSkill
- standardSkill
- verify-changeSkill
- workflowSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 4 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 36
Never: treat "install this skill" as consent for a list the user has not seen.
- Distinctive: line 109
Done when: every harness you use has a link that resolves, and a fresh session lists the skill.
- Very specific: line 115
Add the source to skills.json: repo, author, license, skills[].
- Very specific: line 116
Add the same source to the SOURCES array in install-skills.sh.
- Very specific: line 118
Run python3 scripts/validate_skills.py and ./install-skills.sh --dry-run.
- Distinctive: line 131
Not every skill on the internet is safe to load — a skill is instructions the agent will follow.
- Distinctive: line 149
When a repo documents both, write down which one this machine uses, in that repo's AGENTS.md.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skills Install
Get a skill from the internet onto this machine, into every harness, and recorded so a fresh machine can reproduce it. Three steps that fail on their own if skipped.
The rule that governs all of it: install from upstream, never vendor. A copied skill goes stale, loses its licence, and steals attribution from its author.
Step 0 — Get consent before you fetch anything
A skill is not a file. It is instructions the agent will follow, written by someone the user has not met, loaded by every harness on the machine. Fetching one on the user's behalf without telling them is the mistake this step exists to prevent.
Three things go to the user before the install runs, as one message:
- What — repo, skill names, and how many.
- Who — the author and the licence.
license: nonemeans all rights reserved. - What it will do — hooks, config edits, or commands it runs on load.
Then ask. A yes is required, and it has to be about this install.
| You have | Do |
| Nothing yet | Run --dry-run, show the list, ask. |
| The user said yes in this conversation | Proceed; say which sources you are installing. |
| A non-interactive shell, no user present | Stop. Do not pass --yes to get past the prompt. |
Never treat "install this skill" as consent for a list the user has not seen. That instruction covers one skill; the installer may fetch fifteen sources.
Done when the user has seen the sources and said yes, or you have stopped.
Step 1 — Check before installing
A skill that already exists needs an update, not a second copy.
npx skills find "<query>" # search the registry
npx skills find "<query>" --owner <owner>Then check what is already on disk:
ls ~/.agents/skills | head -50
npx skills list -g 2>/dev/null || trueDone when you know whether the skill exists locally, exists upstream, or must be written. The three outcomes have different paths — see the table in step 2.
Step 2 — Install
| Situation | Command |
| First, always | ./install-skills.sh --dry-run — prints every source and command, touches nothing |
| New skill from a known repo | npx skills@latest add <owner>/<repo> -g -s <skill> -s <other> — no -y until the user has agreed |
| Already installed, upstream changed | npx skills@latest update -g — same rule |
| Nothing upstream fits | Write it — skill writing-for-agents, then target project-scaffold/targets/agent-only.md |
| Skill is a whole plugin/bundle | Follow that project's own installer, not npx skills add |
-y is not a shortcut, it is a decision. It answers "yes, install this" on the user's behalf.
Pass it only when they have already said yes to these exact sources in this conversation. Step 0
is not optional paperwork before it.
Pass every skill by name with repeated -s flags. Omitting -s installs the entire
repository — for a large repo that is dozens of unwanted skills, each one competing for the
agent's attention.
-g installs into ~/.agents/skills. Without it, the skill lands in the current project and
disappears from every other one.
The repo's install-skills.sh takes the same choice as a flag: --project for .agents/skills,
default global. A repo that pins its set commits skills-lock.json and ignores .agents/ — see
skill repo-init § SKILLS.md.
Done when the skill directory exists under ~/.agents/skills/<name>/ and contains SKILL.md.
Step 3 — Link into every harness
A skill on disk is invisible until linked. Each harness reads its own directory.
# preferred: relink everything at once (script lives in your skill store)
python3 <path-to-skill-store>/scripts/link_harnesses.py --apply
# or one at a time
ln -sfn ../../.agents/skills/<name> ~/.claude/skills/<name>
ln -sfn ../../.agents/skills/<name> ~/.codex/skills/<name>Then restart the harness — skills are discovered at session start.
Verify:
ls -l ~/.claude/skills/<name>
readlink -f ~/.claude/skills/<name> # must resolve into ~/.agents/skillsDone when every harness you use has a link that resolves, and a fresh session lists the skill.
Step 4 — Record the source
A skill installed by hand is a skill lost on the next machine. Record it:
- Add the source to
skills.json:repo,author,license,skills[]. - Add the same source to the
SOURCESarray ininstall-skills.sh. - Regenerate the credits:
python3 scripts/attribution.py. - Run
python3 scripts/validate_skills.pyand./install-skills.sh --dry-run.
Done when a fresh machine running ./install-skills.sh gets the same set, and
ATTRIBUTION.md names the author and licence it installed.
Attribution is not optional. An uncredited install takes someone's work and hands
it to an agent as if it were anonymous. author and license are required fields for
exactly this reason; license: none means all rights reserved, not "no answer needed".
ATTRIBUTION.md is generated from skills.json, and CI fails when the two disagree —
so a source cannot be added without a credit.
Vetting a source before you install
Not every skill on the internet is safe to load — a skill is instructions the agent will follow.
| Check | Fail signal |
| Does the repo have a licence? | No licence → all rights reserved; do not install into anything published |
Is SKILL.md readable and specific? | Vague description, no examples → it will not fire |
| Does it run commands on install? | A postinstall touching ~/.claude or ~/.ssh → stop |
| Does it ask for credentials or network writes? | A skill should not exfiltrate; read the scripts |
| Does it duplicate a skill you have? | Two skills on one trigger fight each other |
Report a fail as a one-line finding, in the reply, not buried in a file.
One route in, not two
Some skill sets ship both a plugin (self-updating, read-only) and a skills add copy (editable).
Pick one. Installing both loads every skill twice, and the agent sees two copies of the same
trigger.
When a repo documents both, write down which one this machine uses, in that repo's AGENTS.md.
Known failure modes
| Symptom | Cause | Fix |
| Skill installed but harness cannot see it | No symlink, or link points at a moved path | Relink, restart the harness |
| Two copies of the same trigger | Plugin + skills add both installed | Disable one, keep the editable copy |
update left a renamed skill behind | Non-interactive mode skips deletions | Delete the old directory by hand |
| Install pulled 40 skills | Missing -s flags | Remove the extras; reinstall with -s |
| Skill loads but does nothing useful | description has no trigger branch | Edit the copy if it is yours; report it if not |
Related
- The repo shape and allowlist →
../project-scaffold/targets/agent-only.md - Source manifest format →
SOURCES-FORMAT.md - Writing a skill of your own → skill
writing-for-agents(if installed)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

