{"id":48835244,"url":"https://github.com/andrader/jup","last_synced_at":"2026-04-24T05:00:48.526Z","repository":{"id":346170522,"uuid":"1188791019","full_name":"andrader/jup","owner":"andrader","description":"jup is a small command-line tool for installing and syncing agent skills across the local skill directories used by supported AI assistants.","archived":false,"fork":false,"pushed_at":"2026-04-22T03:23:26.000Z","size":1068,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-22T04:43:41.318Z","etag":null,"topics":["agent","agent-skills","agentic-ai","agents","ai","ai-agents","cli","installer","manager","skills"],"latest_commit_sha":null,"homepage":"https://andrader.github.io/jup/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrader.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-22T15:36:38.000Z","updated_at":"2026-04-22T03:23:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andrader/jup","commit_stats":null,"previous_names":["andrader/askm"],"tags_count":45,"template":false,"template_full_name":null,"purl":"pkg:github/andrader/jup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrader%2Fjup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrader%2Fjup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrader%2Fjup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrader%2Fjup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrader","download_url":"https://codeload.github.com/andrader/jup/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrader%2Fjup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32209895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T03:15:14.334Z","status":"ssl_error","status_checked_at":"2026-04-24T03:15:11.608Z","response_time":64,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","agent-skills","agentic-ai","agents","ai","ai-agents","cli","installer","manager","skills"],"created_at":"2026-04-14T23:08:06.566Z","updated_at":"2026-04-24T05:00:48.504Z","avatar_url":"https://github.com/andrader.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jup ✨\n\n`jup` is a small command-line tool for installing and syncing agent skills across the local skill directories used by supported AI assistants.\n\n### Why `jup`? 💊\nThe 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.\n\nIt helps you:\n\n- install skills from GitHub repositories that expose a top-level `skills/` folder (or `.claude/skills/` as a fallback)\n- keep installed skills organized in a lockfile so they can be synced again later\n- copy or link skills into the directories used by harnesses like Gemini, Copilot, and Claude\n\n## Features ✨\n\n- **Multi-Harness Support**: Sync skills for Gemini, Copilot, Claude, and Codex.\n- **Local-First**: Works with local skill directories and global configurations.\n- **Git Integration**: Install and update skills directly from GitHub.\n\n## Quick Start 🚀\n\n### 1. Install `jup` 📦\n\nThe preferred way to install `jup` is from PyPI with `uv`:\n\n```bash\nuv tool install jup\njup --help\n```\n\n![jup help](docs/images/help.svg)\n\nIf you do not want to install it, you can run it on demand:\n\n```bash\nuvx jup --help\n```\n\n`pip` also works if you prefer a traditional install:\n\n```bash\npip install jup\njup --help\n```\n\n### 2. Check the current configuration ⚙️\n\n```bash\njup config show\n```\n\n![jup config show](docs/images/config_show.svg)\n\n### 3. Choose which harness directories should receive synced skills 🤖\n\n```bash\njup config set harnesses gemini,copilot,claude\n```\n\nUse `none` to clear the list:\n\n```bash\njup config set harnesses none\n```\n\n### 4. Add skills ➕\n\n```bash\njup add owner/repo --category productivity\n```\n\n#### Search for skills 🔍\n\nSearch for skills in the `skills.sh` registry:\n\n```bash\njup find instagram\n```\n\nBy default, this lists matching skills. You can filter and limit the results:\n\n```bash\njup find instagram --limit 5 --min-installs 100\n```\n\nTo install a skill interactively from the search results, use the `--interactive` (or `-it`) flag:\n\n```bash\njup find instagram --interactive\n```\n\n#### Advanced GitHub Usage\n\nYou can use `--path` to specify a subdirectory (default: `skills/`), and `--skills` to select specific skill names (comma-separated) to add from the skills directory:\n\n```bash\njup add owner/repo --path custom/skills/dir --skills skill-a,skill-b --category productivity\n```\n\n- `--path` and `--skills` only work with GitHub sources (not local directories).\n- If `--skills` is omitted, all skills in the specified path are added.\n- If `--path` is omitted, the default is `skills/`.\n- If the specified skills directory does not exist, `jup` will also look for `.claude/skills/` as a fallback.\n\nYou can also add local skills using relative or absolute paths (these ignore `--path` and `--skills`):\n\n```bash\njup add ./local-skills --category productivity\njup add ../team-skills\njup add /absolute/path/to/local-skills\n```\n\n### 5. Review and update skills 📋\n\n```bash\njup list\n```\n\n![jup list](docs/images/list.svg)\n\n- Shows all installed skills, their source repo (with clickable links in supported terminals), install/update date, and which harness directories they are synced to.\n\n#### Check for updates and apply them\n\n```bash\njup sync --update\n```\n\n- Checks all installed GitHub skills for updates and applies them if available. Tracks the last update date for each source.\n- You can also use `jup sync --check` to only check for updates without applying them.\n- The update status and last checked date are shown in `jup list`.\n\n### 6. Push the managed skills into the configured harness directories 🔄\n\n```bash\njup sync\n```\n\n## Comparison with `npx skills` ⚖️\n\nWhile 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.\n\nFor a full breakdown of commands, pros, and cons, see the [jup vs. npx skills comparison](docs/jup-vs-npx-skills.md).\n\n## What It Does 🧭\n\n`jup` works with repositories that follow a simple structure:\n\n```text\nrepo/\n  skills/\n    skill-name/\n      SKILL.md\n```\n\nWhen 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.\n\nFor local sources, `jup add` supports either of these layouts:\n\n```text\nlocal-skills/\n  skill-a/\n    SKILL.md\n  skill-b/\n    SKILL.md\n```\n\nor a single skill directory:\n\n```text\nsingle-skill/\n  SKILL.md\n```\n\nAfter that, `jup sync` installs the managed skills into the configured target locations. By default, `jup` uses symlinks, but you can switch to copying with:\n\n```bash\njup config set sync-mode copy\n```\n\nSkills are placed directly into the harness's skill folder (e.g., `~/.gemini/skills/my-skill/`), ensuring they are correctly discovered by the harness.\n\n### Update and Check Features\n\n- `jup sync --update` checks for updates to all installed GitHub skills and updates them if new versions are available. The last update date is tracked per source.\n- `jup sync --check` checks for updates but does not apply them.\n- `jup list` shows the last update/check date and provides clickable links to the source repositories (in supported terminals).\n\nThe main configuration values are:\n\n- `scope`: `global` or `local`\n- `harnesses`: a comma-separated list of harness names\n- `sync-mode`: `link` or `copy`\n\n### 7. Manage custom harness providers 🤖\n\nYou can add your own harness providers if they use a standard `skills/` directory structure:\n\n```bash\n# List all providers\njup harness list\n\n# Add a new custom provider\njup harness add myharness --global-location ~/.myharness/skills --local-location ./.myharness/skills\n\n# Edit an existing custom provider\njup harness edit myharness --local-location ./new-path/skills\n\n# Remove a custom provider\njup harness remove myharness\n```\n\nOnce a custom harness is added, you can activate it in your configuration:\n\n```bash\njup config set harnesses gemini,myharness\n```\n\n## Supported Harnesses 🧩\n\n`jup` includes built-in locations for these harness names:\n\n- `gemini`\n- `copilot`\n- `claude`\n- `codex`\n- `.agents`\n\n## Contributing 🤝\n\nContributions are welcome. We use standard tools like `uv`, `ruff`, `ty`, `just`, and `pre-commit`. \n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for detailed development setup, workflow, and publishing details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrader%2Fjup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrader%2Fjup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrader%2Fjup/lists"}