SkillHub

Import skills from GitHub

Bring existing SKILL.md skills from a public GitHub repo into a SkillHub registry you own, with verifiable provenance.

Plenty of good skills already live in public GitHub repos. Importing brings one into a registry you own — so it gets scanned, versioned, and installed like any first-party skill — while keeping a verifiable link back to where it came from: the repository, ref, subpath, and the exact upstream content hash at the moment you copied it.

Importing is deliberately different from a direct external install. A direct install (skillhub install gh:owner/repo#skill) tracks the upstream source in your lockfile and keeps its upstream identity. An import copies the skill into your registry as a fresh published version and records its provenance, so the copy is yours to govern but always traceable back upstream. This guide walks the import flow both ways — first in the dashboard, then from skillhub — and shows where the recorded provenance lands.

Whichever path you take, the copy goes through the same publish pipeline — validate, then a blocking security scan — before anything lands. A blocking finding stops the import and nothing is written to the registry. Importing untrusted code is never a way around the scan gate.

What you need first

A registry you can publish to (you're an owner or maintainer). Importing creates a new published version, so it needs publish rights on the target. See registries if you don't have one yet.

The source ref for what you want to import. For a GitHub repo that's gh:owner/repo, optionally narrowed to a branch, tag, or commit with @ref and to a single skill with #skill-name — the full grammar is in refs & scopes.

To be signed in. In the dashboard that's your session; from the CLI, run skillhub login first so the import can authenticate against the target registry.

Import a skill

The dashboard importer previews a repo's skills before you commit to anything, so you can see exactly what will be copied.

Open the Import from GitHub dialog. From a registry you own, start an import and paste the repository. The importer resolves the repo and lists every SKILL.md it finds, with each skill's name and subpath — a preview, not a copy, so it's safe to look before you leap.

The Import from GitHub dialog previewing a public repository: the resolved repo with each discovered skill listed by name and subpath, ready to select which ones to import.

Pick which skills to import and choose the target registry. A repo that exposes one skill is unambiguous; a monorepo with several lets you select the ones you want. Confirm the registry the copies should land in.

The Import from GitHub dialog with a discovered skill selected and a target registry chosen, ready to run the import.

Run the import. Each selected skill is validated and scanned, then published into your registry as a new version with its provenance recorded. If the scan blocks a skill, that skill is not imported and the registry is left untouched.

See the recorded provenance

Once a skill is imported, its origin travels with it everywhere the skill appears. On the skill's page a source pill marks it as imported from GitHub, right next to the name:

A skill's overview page showing a GitHub source pill next to the skill name, marking it as imported from a GitHub repository.

The full record lives on the Provenance tab: the source repository, the ref it was taken from, the subpath within the repo, and the upstream content hash captured at import time.

The Provenance tab of an imported skill: the source repository, ref, subpath, and upstream commit hash recorded at import time.

Provenance is recorded server-side by the import itself — it isn't a label you type, so it can't drift from reality. The upstream hash is what makes the link verifiable: it pins the copy to the exact upstream content it was made from, which is also what lets a later drift check tell whether the source has moved on since.

Check whether upstream has changed

Because the import pins an upstream hash, you can later ask whether the source has changed since you copied it. Add --check-drift and the CLI re-resolves the source right after importing and compares the hash it reports now against the one just recorded:

skillhub import gh:owner/repo#changelog --to @studio/general --check-drift

If the hashes differ, you get an upstream changed warning naming both hashes. Drift is a signal, never a hard failure — the copy already in your registry is still valid and installable; you decide whether to re-import to pull the newer upstream content in as a fresh version.

What lands in your registry

An imported skill is a normal published version. It carries the recorded provenance, but otherwise you version it, tag it, install it, and (on a review-required registry) gate it exactly like a skill you authored. The one thing that stays with it is the traceable link upstream — which is the whole point of importing rather than copy-pasting a SKILL.md by hand.

On this page