Concepts

Coordinates & scope
A published skill is addressed by a coordinate @scope/name. The scope is your username; it is stamped server-side from your identity, never typed — so you can only ever publish under your own. On disk the scope disappears: a skill always materializes to a flat .claude/skills/<name>/.
Owned vs installed
Installed skills are ones you consume (read-only). Owned skills are ones you manage and can publish. fork turns an installed skill into an owned copy under your scope, recording its origin as lineage.
The registry is the source of truth
Ownership, lineage, and content are server-authoritative. Your local files — the manifest, the lock, the per-skill sidecar — are regenerable, non-authoritative state; editing them can't forge ownership or inject content. Published versions are immutable.
Manifest → lock → skills
skillgraph.json is intent (the skills you want, by version or latest); skillgraph.lock.json is the resolved, pinned graph you got; .claude/skills/ is the materialized content. A bare install reproduces from the lock without re-resolving — npm's install vs ci, over a flattened, single-version graph.

CLI reference →