@tomaskral/skillmanager
v1.1.0
Published
A CLI tool for installing and updating [Claude Code](https://docs.anthropic.com/en/docs/claude-code) skills from local paths or GitHub URLs.
Downloads
395
Readme
skillmanager
A CLI tool for installing and updating Claude Code skills from local paths or GitHub URLs.
Why
The ~/.claude/skills/ directory is becoming a standard path for AI coding assistants to discover reusable skills. Claude Code uses it natively, and other tools like Cursor are adopting the same convention. However, there is no built-in way to install skills into this directory from external sources, and more importantly, no way to keep them up to date as upstream skill repositories evolve.
skillmanager fills that gap. It handles installation from local paths or GitHub URLs, tracks provenance via metadata, and provides an update mechanism that detects upstream changes by comparing git commit SHAs.
How it works
Skills are installed into ~/.claude/skills/ where Claude Code can discover and use them.
Prerequisites
- Node.js >= 18
Quick start (no install needed)
Run directly with npx:
npx @tomaskral/skillmanager@latest install https://github.com/owner/repo/tree/main/path/to/skillInstallation
If you prefer a persistent install:
npm install -g @tomaskral/skillmanagerAfter a global install, use skillmanager directly instead of npx @tomaskral/skillmanager@latest.
Usage
The examples below use npx for convenience. If you installed globally, replace npx @tomaskral/skillmanager@latest with skillmanager.
Install a skill
From a local path:
npx @tomaskral/skillmanager@latest install ~/Code/my-plugins/skills/my-skill
npx @tomaskral/skillmanager@latest install ./plugins/jira-utils/skills/use-jira-cliFrom a GitHub URL (use the tree URL for the skill directory):
npx @tomaskral/skillmanager@latest install https://github.com/owner/repo/tree/main/path/to/skillIf the skill already exists, use --force to overwrite:
npx @tomaskral/skillmanager@latest install ./path/to/skill --forcePreview what would happen without making changes:
npx @tomaskral/skillmanager@latest install ./path/to/skill --dry-runUninstall a skill
npx @tomaskral/skillmanager@latest uninstall my-skillPreview what would be removed without making changes:
npx @tomaskral/skillmanager@latest uninstall my-skill --dry-runUpdate installed skills
Update a single skill:
npx @tomaskral/skillmanager@latest update my-skillUpdate all installed skills:
npx @tomaskral/skillmanager@latest update --allForce re-install even if already up to date:
npx @tomaskral/skillmanager@latest update my-skill --forceDetails
Install copies a skill directory into
~/.claude/skills/<skill-name>/. The source directory must contain aSKILL.mdfile. A.metadata.jsonfile is written alongside the skill to track where it came from and what commit it was installed from.Update reads
.metadata.jsonfrom installed skills and compares the stored git commit against the current commit at the source (local git HEAD or GitHub API). If a newer commit is found, the skill is re-copied.
GitHub installs
GitHub sources are specified as https://github.com/owner/repo/tree/branch/path/to/skill. The tool downloads the branch tarball and extracts only the target subdirectory.
Set the GITHUB_TOKEN environment variable to authenticate API requests and avoid rate limits:
export GITHUB_TOKEN=ghp_...Metadata tracking
Each installed skill gets a .metadata.json file containing:
- Source type —
githuborlocal - Source location — URL or filesystem path
- Git commit SHA — used for change detection during updates
- Timestamps —
installed_atandupdated_at
Options reference
| Flag | Description |
|------|-------------|
| --force | Overwrite an existing skill or force re-install even if up to date |
| --dry-run | Show what would happen without making changes |
| --all | Update all installed skills (update command only) |
| --help | Show help message |
