Skills › BMAD Method › bmad-architecture › customize.toml
customize.toml
99 lines · skills/bmad-architecture/customize.toml at bd70c64
1# DO NOT EDIT -- overwritten on every update.
2#
3# Workflow customization surface for bmad-architecture.
4#
5# Override files (not edited here):
6# {project-root}/_bmad/custom/bmad-architecture.toml (team)
7# {project-root}/_bmad/custom/bmad-architecture.user.toml (personal)
9[workflow]
11# --- Configurable below. Overrides merge per BMad structural rules: ---
12# scalars: override wins • arrays: append
14# Steps to run before the standard activation (config load, greet).
15# Use for pre-flight loads, approved-stack policy checks, etc.
16activation_steps_prepend = []
18# Steps to run after greet but before the workflow begins.
19# Use for context-heavy setup that should happen once the user has been acknowledged.
20activation_steps_append = []
22# Persistent facts the workflow keeps in mind for the whole run
23# (approved stacks, banned dependencies, platform constraints, compliance guardrails).
24# Each entry is either a literal sentence, a skill prefixed with `skill:`, or a `file:`-prefixed
25# path/glob whose contents are loaded as facts.
26#
27# Empty by default. Repo-wide context belongs in AGENTS.md (see bmad-project-context), which every
28# skill already sees; use this for context only this skill needs, loaded on demand rather than
29# carried as constant memory. Common opt-ins (set in team/user override TOML):
30# "Our org is AWS-only -- do not propose GCP or Azure."
31# "file:{project-root}/docs/engineering-standards.md"
32# "file:{project-root}/**/project-context.md" # if you keep a project-context.md
33persistent_facts = []
35# Executed when the workflow completes (after the spine is final and the user has been told).
36# String scalar (single instruction) or array of instructions executed in order. Empty for none.
37on_complete = ""
39# The architecture spine template. Treated as expert prior knowledge, not a checklist — the LLM
40# adapts it to the project, altitude, and domain, and drops sections a project genuinely doesn't
41# need. Override the path in team/user TOML to enforce a different spine shape.
42spine_template = "assets/spine-template.md"
44# Run folder location. The spine (`{run_folder_pattern}.md`), its .memlog.md, and any fuller rendering the run
45# produces all land inside `{spine_output_path}/{run_folder_pattern}/`. Resume-check scans
46# `{spine_output_path}` for prior unfinished runs.
47#
48# When the ticket is an epic, the epic's folder takes the place of spine_output_path and {slug} is
49# the epic's slug without `epic-`. Headless callers may instead pass an
50# explicit doc_workspace and bypass the pattern entirely.
51spine_output_path = "{output_folder}/{active_initiative}"
52run_folder_pattern = "architecture-{slug}"
54# Prose-editorial standards applied at finalize ONLY to a fuller prose document the run produces
55# (a discussion report, full architecture doc, or design addendum) — never to the spine or other
56# short, structured outputs, which are terse and carry decisions in AD-n blocks and diagrams by
57# design. Each entry is a `skill:`, `file:`, or plain-text directive applied before the user sees
58# the polished draft. Suggested order: structural passes first, prose mechanics last. Append-only.
59# The default entry runs bmad-review's two editorial lenses in order:
60# structure, then prose on top of the structure findings. The `lenses=` suffix
61# names them; drop it to let bmad-review pick what fits the content.
62doc_standards = [
63 "skill:bmad-review lenses=structure,prose",
64]
66# External-source registry. Natural-language directives describing knowledge bases, MCP tools, or
67# internal systems the LLM may consult ON DEMAND during the run (not preemptively) — approved-stack
68# catalogs, internal platform docs, version registries. Each entry names the tool, the trigger
69# condition, and any fields it needs. If a named tool is unavailable at runtime, the LLM falls back
70# to standard behavior (e.g. web research) and notes the gap. Empty by default.
71#
72# Examples (set in team/user override TOML):
73# "When choosing a datastore, consult corp:platform_catalog before recommending one."
74# "For current library versions, query corp:artifact_registry before web search."
75external_sources = []
77# External-handoff routing applied at Finalize to push outputs beyond local files (Confluence,
78# Notion, ticket systems). Each entry names the MCP tool, the destination, and required fields.
79# Runs after polish; returned URLs/IDs are surfaced. Unavailable tools are skipped and flagged;
80# local files always exist. Empty by default.
81external_handoffs = []
83# --- Finalize reviewers ---
84# Extra review lenses spawned as parallel subagents at the validation gate (Finalize and the
85# Validate intent), on top of the skill's built-in good-spine checklist and the lint_spine.py
86# mechanical floor. The GATE is stakes-gated — a throwaway spine may run it quietly or skip it —
87# but whenever the gate runs, every entry here runs with it (the configured floor, never cherry-
88# picked); only ad-hoc lenses are optional, and headless never skips the gate.
89#
90# Entries follow the standard prefix convention:
91# "skill:NAME" invoke the named review skill as a subagent against the spine
92# "file:PATH" load the file as a review prompt; spawn an adversarial subagent applying it
93# plain text use the text directly as the subagent's review prompt
94#
95# Resolved on-demand (not at activation). Override TOML may append.
96finalize_reviewers = [
97 "Verify every committed decision was web-researched or reality-checked rather than asserted from training data: current library/framework versions, that each named technology still exists and fits, and — greenfield — the live defaults of any starter it leans on. Flag anything that could be out of date and wasn't confirmed against the web, the existing project, or the current starter.",
98 "Attack the spine as an adversary: construct two units one level down that each obey every AD to the letter yet still build incompatibly — clashing shared-data shapes, two owners of one entity, conflicting state-mutation paths. Every pair you find is a hole to close with a new or tightened AD.",
99]