Cookbook
Recipes for common workflows.
When you need this: You want copy-paste setups for common real workflows (teams, monorepos, multiple agents, pinned rollouts).
What you'll learn:
- Patterns that work well in practice
- How to pin and roll out changes safely
Reproducible Team Setup (Commit The Lock)
Treat kasetto.lock like Cargo.lock or package-lock.json: commit it next to kasetto.yaml so every teammate gets identical skill versions.
--locked (alias --frozen) errors if the config needs something the lock can't satisfy, so a stale lock fails the build instead of silently drifting. See CI & automation and How Sync Works → The Lockfile Contract.
Edit Your Config Without Leaving The Shell
kst add / kst remove rewrite kasetto.yaml (comments preserved), then sync — the cargo/uv way. Paste a tag-pinned URL with the @<ref> shorthand and you're done:
kst remove is the symmetric reverse — same kind-tagged flags, with * to drop a whole entry:
Both honor --locked/--frozen (the follow-up sync refuses to fetch), --json (structured output for scripts), and --no-sync (edit the YAML only). Deep blob/tree browse URLs work too — paste the URL you're already looking at and Kasetto decomposes it into source + ref/branch + sub-dir.
Verify The Lock In CI Without Installing
kst lock --check (aliases --locked/--frozen) re-resolves the config and compares against kasetto.lock — exits non-zero on drift, never writes. Cheaper than a full sync --locked when you only need to know "is the committed lock still accurate?":
When a single dependency needs to roll forward without re-resolving everything, target it with -P / --upgrade-package (mirrors sync --update <name>...):
Other sources keep their existing lock entries; only the source providing code-reviewer is re-resolved.
Team Bootstrap From A URL Config
Host a shared kasetto.yaml somewhere reachable over HTTPS (public or private), then have each developer run:
For private configs hosted on git providers, set the matching token env var (see Authentication).
Inheriting From A Team Or Org Base
Use extends to compose configs. A common pattern: an org-wide base, a team overlay, and a per-project file that narrows or pins specific entries.
Top-level scalars (scope, agent, destination) replace. skills and mcps merge by (source, ref-or-branch, sub-dir) identity. See Configuration → Extending Another Config for the full merge-rules table.
Monorepo: Project Scope Per Workspace
Keep one kasetto.yaml per workspace folder and make it project-scoped:
Then run sync from each workspace directory:
Each workspace gets its own ./kasetto.lock.
Multiple Agents From One Config
Install the same skills (and MCPs) into multiple agents:
MCP Packs: Pinning And Rollouts
Pin an MCP pack source to a git tag or commit SHA:
Roll forward by bumping ref, then use --dry-run to preview:
Explicit MCP Entries (mcps.mcps)
If a repository contains multiple MCP files or uses a non-standard layout, list entries explicitly.
Plain strings look up mcps/<name>.json; objects let you override the directory: