Skip to content

sopranoworks/skilldist

Repository files navigation

skilldist

A reusable, server-agnostic skill-distribution library for MCP servers (Shoka and future server). It syncs a skill set from a git source into a local cache (narrow fetch, no history), installs the whole set into an agent runtime's convention directory, detects drift, verifies ownership/integrity, and safely prunes skills deleted upstream.

It was extracted from Shoka's internal/skillcache + cmd/shoka-cli/skill.go so the machinery is shared rather than re-implemented per server. The product-specific values — source repo, cache app name, convention path, distributor signature — are injected via Config; the library bakes none of them.

Layout

Path Purpose
skilldist.go (package skilldist) the distribution library: Sync/SyncIfStale/Refresh, InstallSet/Install, Verify, Outdated/Upgrade/MakeCurrent, Prune
skillmeta/ the .skill-meta.yaml format (signature + source provenance + per-file sha256 map)
cmd/skill-meta/ the authoring CLI: stamp .skill-meta.yaml into a skill directory
docs/skill-meta-format.md the language-independent format spec
archlint/ the no-go-git invariant, enforced by test

Invariants

  • Lowest layer: imports only the Go standard library, a YAML/JSON codec, and shells out to the git binary. It NEVER imports go-git and NEVER a server/data package — skills are not data. It depends on no MCP server, so it creates no edge between the servers that depend on it.
  • Injected, not baked: see Config{Source, AppName, ConventionPath, Signature, SkillsSubdir, SkillMarker}.

Consumer sketch

cfg := skilldist.Config{
    Source:         "https://github.com/sopranoworks/shoka.git",
    AppName:        "shoka",
    ConventionPath: ".claude/skills",
    Signature:      "shoka",
}
_, _ = cfg.Sync("")
_, _ = cfg.InstallSet()

License

MIT — see LICENSE. Copyright (c) 2026 Sopranoworks, Osamu Takahashi.

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages