Skill Updater
Scan installed Claude Code skills, identify their GitHub origins, and check for available updates using gh CLI.
How It Works
Skills can come from two places:
- GitHub repos — tracked in
skills-lock.jsonwithsource,sourceType, andcomputedHash - Local/custom — created by the user, no upstream source
This skill scans both project-level (<project>/.claude/skills/) and global (~/.claude/skills/) skill directories, cross-references with skills-lock.json, and uses gh CLI to check if upstream repos have newer versions.
Usage
Run the scanner script:
python3 <skill-dir>/scripts/scan_skills.py [options]
Options
| Flag | Description |
|---|---|
--project-dir PATH |
Project root (default: current working directory) |
--global-dir PATH |
Global skills dir (default: ~/.claude/skills) |
--lock-file PATH |
Path to skills-lock.json (default: <project-dir>/skills-lock.json) |
--check-updates |
Actually query GitHub for updates (slower, requires gh CLI) |
--json |
Output as JSON instead of table |
--outdated-only |
Only show skills that have updates available |
Examples
Quick overview — list all skills and their sources:
python3 scripts/scan_skills.py --project-dir /Users/crawford/workspace
Check for updates — compare local hashes against GitHub:
python3 scripts/scan_skills.py --project-dir /Users/crawford/workspace --check-updates
Show only outdated — filter to skills needing updates:
python3 scripts/scan_skills.py --project-dir /Users/crawford/workspace --check-updates --outdated-only
JSON output — for programmatic use:
python3 scripts/scan_skills.py --project-dir /Users/crawford/workspace --check-updates --json
Workflow
- Run the script to get a status overview
- Review which skills have updates available
- For skills you want to update, the script prints the
claude skill installcommand - For local skills, it checks if a matching GitHub repo exists (by searching skill name)
Interpreting Results
| Status | Meaning |
|---|---|
up-to-date |
Local hash matches upstream — no action needed |
update-available |
Upstream has changed since last install |
local |
Not from GitHub, user-created skill |
unknown |
In lock file but couldn't check upstream |
not-tracked |
On disk but not in skills-lock.json |
Requirements
ghCLI installed and authenticated (gh auth status)- Python 3.8+
skills-lock.jsonin the project root (created byclaude skill install)