How is this different from skills.sh?

jskills is a friendly Java port of the vercel-labs/skills CLI. It uses the same registry, installs the same skills, and produces the same lock files. The difference is it runs on Java 25+ (via JBang) or as a standalone native binary — no Node.js or npm required.

Are the skills compatible?

Yes, fully. Skills are agent-agnostic Markdown files hosted on GitHub. jskills reads and writes the same skills.lock format as the original CLI. You can switch between them freely — they're interchangeable.

Which agents are supported?

Claude Code, Codex, Gemini CLI, Copilot, Amp, and any agent that reads skill directories. Use skills add <source> --agent <name> to target a specific agent. Without --agent, skills are installed for the default agent detected in your project.

Do I need Java installed?

For the JBang install — yes, Java 25+. JBang can manage this for you automatically. For native binaries (Linux, macOS, Windows), no — they are self-contained executables with zero runtime dependencies.

Where are skills stored?

Project-scoped skills go in the agent's skill directory (e.g. .claude/skills/, .codex/skills/) in your project root. Global skills go in ~/.claude/skills/ (or equivalent). The lock file skills.lock tracks sources and versions.

Can I use both jskills and the original skills CLI?

Yes. They share the same lock file format and directory structure. You can install skills with one CLI and manage them with the other. The registry, sources, and skill format are identical.

How do I update skills?

Run skills update to update all installed skills, or skills update <name> for a specific one. Use skills update -g to update only global skills.

How fast is the native binary?

The native binary starts in ~10ms with no JVM warmup. It's a GraalVM native image — a single executable file around 58MB that includes everything needed to run.