OCI-native CLI and library for packaging, versioning, and distributing AI artifacts (skills, prompts, RAG configs) using standard OCI-compliant registries.
brew tap hbelmiro/striatum https://github.com/hbelmiro/striatum
brew install striatumDownload the latest binary from GitHub Releases.
go install github.com/hbelmiro/striatum/cmd/striatum@latestgo build ./cmd/striatumgo test -v ./...To run integration tests (requires Docker for the local registry):
go test -tags=integration ./...For validate, pack, and push, use -f / --manifest with a path to artifact.json or to the project directory that contains it (defaults to ./artifact.json in the current working directory). Paths in spec.files are always resolved relative to the directory that contains the manifest, not the shell’s current directory.
The flag treats a path as a manifest file only when its final component is named artifact.json (case-insensitive, e.g. Artifact.json on disk). Any other final component is treated as a project directory and artifact.json is appended—even if that name is missing—so typos get errors pointing at the expected manifest path.
striatum init— scaffold anartifact.json(requires--name,--kind,--entrypoint)striatum validate— validate local artifact and optionally check dependenciesstriatum pack— bundle artifact into a local OCI Image Layout at<project>/build/by default (the manifest’s project directory, not necessarily the shell’s cwd—see-f/--manifest); optional-o/--outputsets another layout directory (paths relative to the shell’s cwd, likepull --output)striatum push <reference>— push to an OCI registrystriatum pull <reference>— download artifact and dependencies to the output directory (default: current working directory; each artifact in<output>/<name>/) and, by default, into the Striatum cache (STRIATUM_HOMEor~/.striatum/cache) soskill listcan see them; use--no-cachefor output onlystriatum inspect <reference>— show remote artifact metadatastriatum skill install <reference>— install a skill into Cursor/Claude skills directoriesstriatum skill uninstall <name>— remove an installed skillstriatum skill list— list skills in local cache; use--installedto list installed skills (optional--target cursor|claude)
striatum init --name my-skill --kind Skill --entrypoint SKILL.md
striatum validate
striatum validate -f packages/my-skill
striatum validate --check-deps --registry localhost:5000/skills
striatum pack
striatum pack --manifest path/to/artifact.json
striatum pack -o ./dist
striatum push localhost:5000/skills/my-skill:1.0.0
striatum push -f ./my-skill localhost:5000/skills/my-skill:1.0.0
striatum pull localhost:5000/skills/my-skill:1.0.0
striatum skill install --target cursor localhost:5000/skills/my-skill:1.0.0
striatum skill uninstall --target cursor my-skill
striatum inspect localhost:5000/skills/my-skill:1.0.0
striatum skill list
striatum skill list --installed --target cursorSee docs/demo.md for a full-flow demo (pack, push, pull, install, uninstall).
Releases are automated with GoReleaser via GitHub Actions.
git tag v0.2.0
git push origin v0.2.0This triggers the release workflow, which:
- Runs tests
- Builds binaries for macOS and Linux (amd64 + arm64)
- Creates a GitHub Release with archives and checksums
- Commits an updated Homebrew formula to
HomebrewFormula/
Apache-2.0. See LICENSE.