Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Curate other repos

A source can list other repos instead of, or as well as, shipping its own items. Melding it registers every listed repo, optionally installs from them, and mind curate keeps consumers in step when you change the list. Use it for a team’s standard set, a themed collection, or your own dotfiles-style setup.

# mind.toml
[source]
description = "Acme's agent toolkit"

[discover]
sources = [
  { source = "acme/agents" },                               # registered, nothing installed
  { source = "acme/skills", namespace = "acme", install = true },
  { source = "anthropics/skills", install-items = ["skill:pdf", "skill:docx"] },
  { source = "acme/big-library", profiles = ["basic"] },
]

mind dump writes this shape from an existing setup, so you can start from what you already have installed; see Back up and reproduce your setup.

Entry keys

keymeaning
sourceany repo meld accepts: owner/repo, a URL, a local path, or an item link
namespaceinstall that source’s items under a namespace, as meld --namespace does
installtrue offers all its items for install at meld (default false)
install-itemsoffer only these kind:name items (literal names, no globs)
profilesenable these install profiles of that source
default-profilefalse leaves that source’s default profile out
follow-branch, pin-tag, pin-refpin that source (at most one)
kindfor an item link to a .md file: agent, rule, or command

install = true cannot be combined with install-items or profiles. install-items with profiles installs the union. An install = true entry whose source declares a default profile installs that profile, as a plain meld would.

The same list can be written as tables:

[[discover.sources]]
source = "acme/skills"
namespace = "acme"
install = true

Ship your own items too

A bare [discover].sources does not turn off convention discovery, so the repo can ship its own skills/ and agents/ alongside the list. Only [[items]] or [discover] kind globs make the file authoritative; see The mind.toml file.

Configure a repo that has no mind.toml

An entry can supply settings for a listed repo that ships none of its own:

keymeaning
rootsscan these directories instead of the repo root
add-rootsscan these directories in addition
flat-skillsskills sit at the root with no skills/ directory
[[discover.sources.hooks]]hooks to run for that repo, same shape as [[hooks]]
[[discover.sources]]
source = "owner/unonboarded"
follow-branch = "main"
roots = ["packages/agents"]

[[discover.sources.hooks]]
run = "make build"
name = "build tooling"

These four apply only when the listed repo has no mind.toml at all. If it has one, even one that sets none of them, its own file wins and mind warns that yours were ignored. This keeps a curator from reaching past a repo’s own export control. The pin keys, namespace, install, install-items, and profiles always apply.

How changes reach consumers

When you push a change to the list, consumers run mind curate to apply it: new entries are registered and installed as declared, changed pins re-pin, curated sources upgrade, and dropped entries are reported (removed only with --prune). sync alone registers new entries but installs nothing from them. See Follow a curated collection.

A Claude marketplace is a curator too

A .claude-plugin/marketplace.json catalog is read the same way, and a repo can be both a marketplace and a mind curator. See Claude plugins and marketplaces.

Examples: super-source, marketplace-curator.