Install
openclaw skills install custom-skills-updaterManage manually installed skills (non-ClawHub). Supports checking updates, updating, and listing custom skills from GitHub or local sources.
openclaw skills install custom-skills-updaterManages manually installed skills not installed from ClawHub.
Supported types: github-dir, github-file, github-readme, local
This skill checks and updates existing skills only. It does NOT create new skills.
All GitHub operations require an authenticated gh CLI session.
Before any GitHub request, run gh auth status.
If it fails, prompt: "Run gh auth login first." and stop.
Scan REGISTRY.yaml, detect remote versions, compare with stored versions, report:
skill-name ........ up-to-date
skill-name ........ update available
Target all outdated skills or a specific skill by name.
skill-creator, etc.)REGISTRY.yamlIf the user cannot respond immediately (e.g. scheduled/automated run, no active session), do not execute updates. Instead, write a summary of pending updates (skill name, change description, proposed action) and leave it for the user to review and approve later.
Read and list all entries in REGISTRY.yaml.
Location: REGISTRY.yaml in the same directory as this SKILL.md.
If it does not exist:
REGISTRY.example.yaml exists, copy it to REGISTRY.yamlskills: {}
Do not rename the skills root key.
Map structure keyed by skill name:
skills:
example-dir-skill:
type: github-dir
source: example-owner/example-repo@main:skills/example-dir-skill
version: abc123
updated: 2026-01-01
example-readme-skill:
type: github-readme
source: example-owner/example-project@main
version: def456
updated: 2026-01-02
| Field | Meaning |
|---|---|
| key | skill name |
| type | github-dir / github-file / github-readme / local |
| source | source location |
| version | commit SHA (github-dir) or SHA256 (file-based types) |
| updated | last update date |
Scan skills/*/SKILL.md. Only direct subdirectories of skills/, no recursion.
If a skill exists but is not in REGISTRY.yaml:
If unable to prompt, register as local and notify the user to configure later.
Compare remote version against version in REGISTRY.yaml.
gh api "repos/{owner}/{repo}/commits?path={path}&per_page=1" --jq '.[0].sha // empty'
gh api "repos/{owner}/{repo}/contents/{path}?ref={branch}" -H "Accept: application/vnd.github.raw+json" | shasum -a 256
Find README filename:
gh api "repos/{owner}/{repo}/contents/?ref={branch}" --jq '.[].name' | grep -i '^readme' | head -n 1
Take first match, download and hash:
gh api "repos/{owner}/{repo}/contents/{readme_filename}?ref={branch}" -H "Accept: application/vnd.github.raw+json" | shasum -a 256
Skip entirely.
Only update when remote version differs from stored version.
gh api "repos/{owner}/{repo}/tarball/{branch}" > archive.tar.gz
Verify the file is valid gzip before extracting. Copy target path to skills/{name}/.
gh api "repos/{owner}/{repo}/contents/{path}?ref={branch}" -H "Accept: application/vnd.github.raw+json" > skills/{name}/SKILL.md
skill-creator skill is installed. If yes, delegate the SKILL.md update to skill-creator with the new README as input. If skill-creator is not installed, fall through to step 4.SKILL.md, or introduce important new information that should be reflected in SKILL.mdHandle gh api failures by HTTP status:
| Status | Action |
|---|---|
| 401 | "Authentication expired. Run gh auth login." Stop all operations. |
| 403 | "Permission denied or rate limit for {skill-name}." Skip. |
| 404 | "Source not found for {skill-name}." Skip. |
| Other | "Check failed for {skill-name}." Skip. |
On any failure: do NOT overwrite local files, do NOT modify registry.
Registry updates: modify only the target entry, do not reorder or remove others, update version and updated only after success.
This skill manages manually installed skills only. ClawHub-installed skills are out of scope.