jup is a small command-line tool for installing and syncing agent skills across the local skill directories used by supported AI assistants.
The name is short for "jump", a nod to the Jump Program from The Matrix. Just as the program was a foundational training ground for jumping between buildings (and realizing your potential), jup helps your agents "jump" between different environments and workflows with the right skills in hand.
It helps you:
- install skills from GitHub repositories that expose a top-level
skills/folder (or.claude/skills/as a fallback) - keep installed skills organized in a lockfile so they can be synced again later
- copy or link skills into the directories used by harnesses like Gemini, Copilot, and Claude
- Multi-Harness Support: Sync skills for Gemini, Copilot, Claude, and Codex.
- Local-First: Works with local skill directories and global configurations.
- Git Integration: Install and update skills directly from GitHub.
The preferred way to install jup is from PyPI with uv:
uv tool install jup
jup --helpIf you do not want to install it, you can run it on demand:
uvx jup --helppip also works if you prefer a traditional install:
pip install jup
jup --helpjup config showjup config set harnesses gemini,copilot,claudeUse none to clear the list:
jup config set harnesses nonejup add owner/repo --category productivitySearch for skills in the skills.sh registry:
jup find instagramBy default, this lists matching skills. You can filter and limit the results:
jup find instagram --limit 5 --min-installs 100To install a skill interactively from the search results, use the --interactive (or -it) flag:
jup find instagram --interactiveYou can use --path to specify a subdirectory (default: skills/), and --skills to select specific skill names (comma-separated) to add from the skills directory:
jup add owner/repo --path custom/skills/dir --skills skill-a,skill-b --category productivity--pathand--skillsonly work with GitHub sources (not local directories).- If
--skillsis omitted, all skills in the specified path are added. - If
--pathis omitted, the default isskills/. - If the specified skills directory does not exist,
jupwill also look for.claude/skills/as a fallback.
You can also add local skills using relative or absolute paths (these ignore --path and --skills):
jup add ./local-skills --category productivity
jup add ../team-skills
jup add /absolute/path/to/local-skillsjup list- Shows all installed skills, their source repo (with clickable links in supported terminals), install/update date, and which harness directories they are synced to.
jup sync --update- Checks all installed GitHub skills for updates and applies them if available. Tracks the last update date for each source.
- You can also use
jup sync --checkto only check for updates without applying them. - The update status and last checked date are shown in
jup list.
For a more visual management experience, you can use the interactive dashboard:
jup ui(Alias: jup tui)
The TUI provides a dual-pane interface with the following tabs:
- Installed: Browse managed and unmanaged skills with live status indicators and metadata.
- Discover: Search and preview skills from the
skills.shregistry. - Agents: View and manage your configured agent harnesses.
- Settings: Inspect your current
jupconfiguration.
Tab: Switch between tabs.Up/Down: Navigate the list on the left.Right: Focus the preview pane on the right for manual scrolling.Left: Return focus to the sidebar list.PageUp/PageDown: Scroll the preview pane directly.Space: Toggle skill selection for bulk actions.d: Remove selected skills (Installed tab).Enter: Install selected skills (Discover tab).q/Esc: Quit the dashboard.
jup syncWhile Vercel's npx skills is a fantastic package manager for AI skills with a built-in search registry, jup focuses heavily on centralized lockfile management and local symlink synchronization across multiple harnesses. jup is ideal if you want to maintain a single source of truth for your skills and automatically symlink them to Gemini, Claude, and Copilot simultaneously, especially when authoring skills locally.
For a full breakdown of commands, pros, and cons, see the jup vs. npx skills comparison.
jup works with repositories that follow a simple structure:
repo/
skills/
skill-name/
SKILL.md
When you run jup add owner/repo, it clones the repository, finds every nested skill directory under skills/ (or .claude/skills/ if present) that contains a SKILL.md file, stores those skills in ~/.jup, and records them in a lockfile.
For local sources, jup add supports either of these layouts:
local-skills/
skill-a/
SKILL.md
skill-b/
SKILL.md
or a single skill directory:
single-skill/
SKILL.md
After that, jup sync installs the managed skills into the configured target locations. By default, jup uses symlinks, but you can switch to copying with:
jup config set sync-mode copySkills are placed directly into the harness's skill folder (e.g., ~/.gemini/skills/my-skill/), ensuring they are correctly discovered by the harness.
jup sync --updatechecks for updates to all installed GitHub skills and updates them if new versions are available. The last update date is tracked per source.jup sync --checkchecks for updates but does not apply them.jup listshows the last update/check date and provides clickable links to the source repositories (in supported terminals).
The main configuration values are:
scope:globalorlocalharnesses: a comma-separated list of harness namessync-mode:linkorcopy
You can add your own harness providers if they use a standard skills/ directory structure:
# List all providers
jup harness list
# Add a new custom provider
jup harness add myharness --global-location ~/.myharness/skills --local-location ./.myharness/skills
# Edit an existing custom provider
jup harness edit myharness --local-location ./new-path/skills
# Remove a custom provider
jup harness remove myharnessOnce a custom harness is added, you can activate it in your configuration:
jup config set harnesses gemini,myharnessjup includes built-in locations for these harness names:
geminicopilotclaudecodex.agents
Contributions are welcome. We use standard tools like uv, ruff, ty, just, and pre-commit.
See CONTRIBUTING.md for detailed development setup, workflow, and publishing details.