Skip to main content
A Substrate template is a workflow — boards with their groups, field_schema, and policies. It never includes tasks, comments, or any database state. Applying a template forks it into the consumer’s project: they own their copy from that moment on and can evolve it independently.

Publish a Template

1

Copy your board JSON out

Take .substrate/boards/*.json into a repo or folder. Board files are already pure substrate-as-code — there is nothing to strip before sharing them.
2

Add a manifest

Create a substrate-template.json file at the root of the template directory:
substrate-template.json
All four fields — name, description, version, and boards — are required. version is your own author metadata; Substrate never enforces it. Unknown keys are rejected.
Without a manifest, a folder still resolves by convention if its boards live under .substrate/boards/ or boards/. A manifest is recommended for anything you intend to share.
3

Share the repo URL

Consumers clone the repo and apply from the local directory. See examples/web-delivery for a complete working template — manifest plus board — that you can use as a reference.

Apply Someone Else’s Template

The CLI is network-free — it never fetches URLs. <path> is always a local directory. Clone the template repo first, then apply from the clone.
Into an existing .substrate/:
Into a fresh project:

How add Works

add is a dry run by default — it validates the template and prints what it would create, but writes nothing until you pass --yes. Board-id collisions are refused. If the incoming template has a single board whose id conflicts with an existing one, use --as <id> to rename it so it can sit alongside:
An apply that fails partway rolls back only the files it created. Pre-existing boards are never modified.

What Does Not Travel

Members (v0.7.0 gap)

A bundled template ships its default members, but a path template carries boards only — registry files are not part of the template format. A shared board whose team references members arrives with dangling references, each resolved as unresolved (a warning, not a failure). Consumers author their own .substrate/members/<id>.json to fill them in.
A first-party substrate template export command to scaffold the manifest automatically is planned. In v0.7.0 you hand-write it.

substrate add CLI reference

Full flag reference and examples for the substrate add command.