Two Authoring Surfaces
Both take effect immediately — substrate-as-code is read fresh on every load, so there is no deploy step.Edit the JSON directly
Write
.substrate/boards/<id>.json by hand. Best when authoring a whole board at once or adapting an existing template.Use the substrate-edit MCP tools
create_board, create_group, reorder_groups, create_policy, and the update_* / archive_* families. Each needs agent_name; updates need the current version. Best for incremental changes to a live board.The Four Moves
1
Stages become groups
Each workflow stage maps to one group, ordered by
position.2
Per-item metadata becomes field_schema.task
Every distinct thing a work item tracks becomes a field — including a boolean gate field for each exit criterion you intend to enforce.
3
Rules become policies
Hard gates are
transition_guard; conventions and reminders are agent_responsibility.4
Prove the rails fire
A gate that never engages is worse than no gate. Validate every guard before relying on it.
Start From the Worked Example
The bundledweb-delivery template is a complete, working substrate: a Spec → Plan → Build → Review → QA → Done board with real gates, plus a substrate-template.json manifest that makes it a shareable template.
boards/delivery.json alongside these pages is the fastest way in. Adapting it beats authoring from scratch.
Tips
Map a Process
Translate workflow stages and exit criteria into groups, fields, and gate fields.
Write Policies
The full policy DSL — transition guards and agent responsibilities.
Validate Gates
Prove your guards actually fire before you rely on them.
Publish a Template
Package your workflow for reuse and apply someone else’s.