auto-generated flowcharts for dense recipe YAML
Amplifier recipes are real multi-step agent workflows — but they ship as dense YAML. You cannot see the steps, approval gates, or branches without reading every line.
So how bad is it? Look at one recipe.
recipe-to-dot renders the validate-recipes recipe into a compact 62-line DOT flowchart — and it converts all 21 bundled recipes (19 examples + 2 core) to valid DOT deterministically, same input, same output.
Where did this capability come from?
Brian Krabach's recipe-to-dot documentation-generation system merged to microsoft/amplifier-bundle-recipes on 2026-03-31: one feature PR, +2840 / -1 lines across 48 files. It was co-authored with Amplifier itself.
At its core sits one small, trustworthy converter.
recipe_to_dot.py renders YAML to DOT with no model in the loop — its only imports are hashlib, re, pathlib, and yaml. That is why the flowcharts are trustworthy structure, not a model's guess.
And that structure is color-coded to read instantly.
Every node type gets a consistent shape and color, so you read a recipe's shape without reading its YAML.
Then an optional pass makes the labels human, too.
The enhance step turns terse labels into accessible plain language while preserving everything that defines the diagram — so it stays faithful to the recipe.
And because structure is preserved, the diagram can prove when it's stale.
source_hash attribute exactly as-isEach DOT embeds a SHA-256 source_hash of its structural body. validate-recipes Phase 7 compares the embedded hash against a fresh one and auto-regenerates any stale or missing DOT+PNG — with LLM-enhanced labels by default.
That is what turns a diagram into a living design tool.
A 2205-line recipe now reads as a ~60-line color-coded flowchart that lives beside the YAML and stays fresh automatically. The diagram becomes a design tool, not just documentation — and the dot-docs bundle already ships machine-generated recipe flow diagrams built this way.
Shipped, merged, and consumed downstream.
Data as of: HEAD b6ee26d (2026-05-20), microsoft/amplifier-bundle-recipes
Primary source: microsoft/amplifier-bundle-recipes (recipe-to-dot module, generate-recipe-docs recipe, recipe-to-dot skill, validate-recipes Phase 7). Independently re-derived from fresh clones at /tmp/recipes-clone and /tmp/dot-docs-clone.
Research performed:
gh pr view 56 --repo microsoft/amplifier-bundle-recipes --json number,title,mergedAt,author,additions,deletions (PR #56, commit bc8faaa, +2840/−1, 48 files, merged 2026-03-31)git log --diff-filter=A --format='%h %ad %an %s' -- modules/tool-recipes/amplifier_module_tool_recipes/recipe_to_dot.pywc -l recipe_to_dot.py recipes/validate-recipes.yaml recipes/validate-recipes.dot (700 / 2205 / 62)uv run --no-project --with pyyaml python3 -c '<load recipe_to_dot via importlib; loop 19 examples + 2 core; assert digraph & source_hash; compare two runs>' (21/21, deterministic: True)grep -nE '^import|^from' recipe_to_dot.py; grep -n 'source_hash' recipe_to_dot.py recipes/validate-recipes.yamlgrep _COLOR_ recipe_to_dot.pygit -C /tmp/dot-docs-clone show 4a16e2e --stat (8 files, DOT+PNG beside source YAML, 2026-04-01)Primary contributor: Brian Krabach (bkrabach) — author of PRs #56, #57, #58 and all core commits; follow-up AMPLIFIER_PYTHON fix by Salil Das (PR #60). Co-authored-by trailer: Amplifier.
Gaps: The full 33-test pytest suite could not be run locally (package __init__ imports amplifier_core, not vendored); determinism and valid-DOT output were verified by loading recipe_to_dot.py directly. Commit message phrasing "21 example + 2 core" is imprecise — ground-truth examples/*.yaml = 19, so the accurate decomposition is 19 examples + 2 core = 21 recipes. PNG byte sizes were read from git --stat, not re-rendered.