Never touch your repo
The core guarantee — gitignored-by-default writes, a managed gitignore block, a canonical store with symlink fan-out, and scoped invisibility.
The core principle of SkillHub is simple: everything written locally
is gitignored by default. Working inside a client-owned repository never adds
stageable files, so git status stays clean. You get your skills without
leaving a trace in someone else's codebase.
The guarantee: installing skills into a client-owned repo never touches that
repo. Every local write is gitignored by default, so git status stays
clean and nothing stageable appears.
Gitignored by default
When you bootstrap a project, skillhub init writes a managed .gitignore
block — a delimited section with marker comments — covering the project config
directory and every agent skills directory it links into. Because the block is
delimited, it's easy to keep updated and easy to remove.
You can opt out with --no-gitignore, but the default keeps the guarantee
intact:
skillhub init
skillhub init --no-gitignoreIt keeps up with new agents
A later fan-out can reach an agent directory that did not exist at bootstrap —
you installed a new coding agent, or a teammate's config named one. When that
happens, skillhub install, skillhub sync, skillhub update, and
skillhub remove extend the managed block to cover the new directory, so the
guarantee covers agents added at any point, not just the ones present when you
ran skillhub init.
The extension is strictly additive — nothing already inside the block is removed,
reordered, or reformatted, so a hand-added entry or a comment you wrote survives
it byte for byte. And it never creates a block: if there is no .gitignore, no
managed markers, or damaged ones, the file is left exactly as found. That is what
keeps an --no-gitignore decision honoured by every one of those commands.
(skillhub init itself is the exception, and deliberately so — writing the block
is what it's for, so re-running it without --no-gitignore writes one.) Each
command reports the outcome as gitignore in its --json payload.
One store, many agents
Skills install once into a canonical local store, then fan out by symlink into each detected agent's skills directory:
- project scope — the store lives in the project config directory,
.skillhub/at the repo root (itsskills/subfolder). - global scope — the store lives under your home directory (its
skills/subfolder).
A single install, symlinked into every agent, means every coding agent on the machine sees the same skill without duplicated copies.
Copying is the fallback, never the default. Pass --copy to force it, and
on platforms without symlink support the CLI auto-falls-back to copy with a
notice.
skillhub install @studio/design-systems/tokens-workflow
skillhub install @studio/design-systems/tokens-workflow --copyInvisibility
Access isn't just restricted — it's invisible. A limited outsider sees only the registries they've been granted. Other registries, org pages, and out-of-grant search results don't appear as "forbidden"; they simply aren't there. What you can't reach, you can't see.
Keeping the guarantee intact
skillhub doctor verifies the pieces that make this work: the integrity of the
managed gitignore block, the health of every symlink, and whether the lockfile
matches what's on disk:
skillhub doctor
skillhub doctor --globalIf anything drifts, doctor reports it with a suggested fix so the
never-touch-your-repo promise stays true.