bd formula list|show|convert — manage formulas, the declarative source of a repeatable workflow: “a TOML/JSON file defining a DAG of steps”, with variable definitions (defaults and validation), needs dependencies between steps, composition rules for bonding formulas together, inheritance via extends, and optional [steps.gate] blocks that park a step on an async condition (beads-gate).
A formula can declare a phase — vapor recommends ephemeral instantiation as a wisp, and pouring a vapor formula persistently warns.
This is the front of beads’ three-phase pipeline (formula → proto → molecule, see beads-cook and beads-mol), and the reason it belongs to a store rather than a framework is where the line falls: a formula declares the shape of work and nothing about who does it. No agent, no model, no retry policy, no scheduling — those are the “workflow semantics” and “orchestration policy” beads’ charter explicitly assigns to the layer above. A formula is a reusable graph template; an orchestrator decides how to run it.
Its pattern-knowledge-compounding edge is the durable-artifact kind rather than the lesson kind: a release checklist or review pipeline that worked is captured once as a file on a search path and stamped out identically thereafter, and bd mol distill (beads-mol) extracts a formula from an epic that already happened — turning a completed body of work into a template for the next one. That is the same move as gstack-skillify and sp-writing-skills, one layer down: what compounds is a work graph rather than a skill.
Maps to no canonical SDLC stage — authoring a template performs no lifecycle step. The instantiation does; see beads-mol.
See Also
- beads-cook — compiles a formula into a proto.
- beads-mol — instantiates the proto as real work;
distillgoes the other way. - beads-gate — the async waits a formula step can declare.
- artifact-plan-record — seeds’ single validated plan; a formula is the reusable-template generalization.