Skip to content
Back to skills

Skill Installer

ASecurity

Install or update Codex skills into $CODEX_HOME/skills from a curated list or a GitHub repo path, then surface any per-skill install.md guidance. Use when a user asks to list installable skills, install a curated skill, update an installed skill, or install a skill from another repo (including private repos).

  • 3 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 12, 2026
researchgitapi

Works with

  • api

Security analysis

A100/100

Pro scans all 9 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add shenmuxing/EtaSkill --skill skill-installer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Skill Installer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Skill Installer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/shenmuxing-skill-installer/badge)](https://www.skillsdirectory.com/skills/shenmuxing-skill-installer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: skill-installer
description: Install or update Codex skills into $CODEX_HOME/skills from a curated list or a GitHub repo path, then surface any per-skill install.md guidance. Use when a user asks to list installable skills, install a curated skill, update an installed skill, or install a skill from another repo (including private repos).
metadata:
  short-description: Install curated skills from openai/skills or other repos
---

# Skill Installer

Helps install and update skills. By default these are from https://github.com/openai/skills/tree/main/skills/.curated, but users can also provide other locations. Experimental skills live in https://github.com/openai/skills/tree/main/skills/.experimental and can be installed the same way.

MetaSkill skills can include `install.md`. After copying or updating a skill,
check whether the installed directory contains that file and surface its
verification and dependency guidance to the user. The installer does not
silently install external tools, configure credentials, or verify authenticated
app connectors.

Use the helper scripts based on the task:
- List skills when the user asks what is available, or if the user uses this skill without specifying what to do. Default listing is `.curated`, but you can pass `--path skills/.experimental` when they ask about experimental skills.
- Install from the curated list when the user provides a skill name.
- Install from another repo when the user provides a GitHub repo/path (including private repos).
- Update an installed skill only when the user asks for an update or passes the
  update option.

Install skills with the helper scripts.

## Communication

When listing skills, output approximately as follows, depending on the context of the user's request. If they ask about experimental skills, list from `.experimental` instead of `.curated` and label the source accordingly:
"""
Skills from {repo}:
1. skill-1
2. skill-2 (already installed)
3. ...
Which ones would you like installed?
"""

After installing or updating a skill, tell the user: "Restart Codex to pick up
new skills." Also mention the installed `install.md` path when it exists.

## Scripts

All of these scripts use network, so when running in the sandbox, request escalation when running them.

- `scripts/list-skills.py` (prints skills list with installed annotations)
- `scripts/list-skills.py --format json`
- Example (experimental list): `scripts/list-skills.py --path skills/.experimental`
- `scripts/install-skill-from-github.py --repo <owner>/<repo> --path <path/to/skill> [<path/to/skill> ...]`
- `scripts/install-skill-from-github.py --update --repo <owner>/<repo> --path <path/to/skill>`
- `scripts/install-skill-from-github.py --url https://github.com/<owner>/<repo>/tree/<ref>/<path>`
- Example (experimental skill): `scripts/install-skill-from-github.py --repo openai/skills --path skills/.experimental/<skill-name>`

## Behavior and Options

- Defaults to direct download for public GitHub repos.
- If download fails with auth/permission errors, falls back to git sparse checkout.
- Aborts if the destination skill directory already exists unless `--update` is
  supplied.
- With `--update`, stages the new copy, moves the old installed directory to a
  timestamped backup, replaces it, and reports the backup path.
- Installs into `$CODEX_HOME/skills/<skill-name>` (defaults to `~/.codex/skills`).
- Multiple `--path` values install multiple skills in one run, each named from the path basename unless `--name` is supplied.
- Options: `--ref <ref>` (default `main`), `--dest <path>`, `--method auto|download|git`, `--update`, `--backup-root <path>`.
- Reports when an installed skill contains `install.md`; use that file for
  dependency, verification, update, and rollback steps.

## Notes

- Curated listing is fetched from `https://github.com/openai/skills/tree/main/skills/.curated` via the GitHub API. If it is unavailable, explain the error and exit.
- Private GitHub repos can be accessed via existing git credentials or optional `GITHUB_TOKEN`/`GH_TOKEN` for download.
- Git fallback tries HTTPS first, then SSH.
- The skills at https://github.com/openai/skills/tree/main/skills/.system are preinstalled, so no need to help users install those. If they ask, just explain this. If they insist, you can download and overwrite.
- Installed annotations come from `$CODEX_HOME/skills`.

Files in this skill

  • LICENSE.txt11.1 KB
  • SKILL.md4.3 KB
  • agents/openai.yaml221 B
  • assets/skill-installer-small.svg923 B
  • assets/skill-installer.png1.1 KB
  • install.md2.1 KB
  • scripts/github_utils.py659 B
  • scripts/install-skill-from-github.py12.2 KB
  • scripts/list-skills.py2.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.