101 lines
6.0 KiB
TOML
101 lines
6.0 KiB
TOML
# DO NOT EDIT -- overwritten on every update.
|
|
#
|
|
# Workflow customization surface for bmad-architecture.
|
|
#
|
|
# Override files (not edited here):
|
|
# {project-root}/_bmad/custom/bmad-architecture.toml (team)
|
|
# {project-root}/_bmad/custom/bmad-architecture.user.toml (personal)
|
|
|
|
[workflow]
|
|
|
|
# --- Configurable below. Overrides merge per BMad structural rules: ---
|
|
# scalars: override wins • arrays: append
|
|
|
|
# Steps to run before the standard activation (config load, greet).
|
|
# Use for pre-flight loads, approved-stack policy checks, etc.
|
|
activation_steps_prepend = []
|
|
|
|
# Steps to run after greet but before the workflow begins.
|
|
# Use for context-heavy setup that should happen once the user has been acknowledged.
|
|
activation_steps_append = []
|
|
|
|
# Persistent facts the workflow keeps in mind for the whole run
|
|
# (approved stacks, banned dependencies, platform constraints, compliance guardrails).
|
|
# Each entry is either a literal sentence, a skill prefixed with `skill:`, or a `file:`-prefixed
|
|
# path/glob whose contents are loaded as facts.
|
|
#
|
|
# Default loads project-context.md if bmad-generate-project-context produced one — giving the
|
|
# architect persistent awareness of the project's tech, domain, and conventions (load-bearing
|
|
# for brownfield). Common opt-ins (set in team/user override TOML):
|
|
# "Our org is AWS-only -- do not propose GCP or Azure."
|
|
# "file:{project-root}/docs/engineering-standards.md"
|
|
persistent_facts = [
|
|
"file:{project-root}/**/project-context.md",
|
|
]
|
|
|
|
# Executed when the workflow completes (after the spine is final and the user has been told).
|
|
# String scalar (single instruction) or array of instructions executed in order. Empty for none.
|
|
on_complete = ""
|
|
|
|
# The architecture spine template. Treated as expert prior knowledge, not a checklist — the LLM
|
|
# adapts it to the project, altitude, and domain, and drops sections a project genuinely doesn't
|
|
# need. Override the path in team/user TOML to enforce a different spine shape.
|
|
spine_template = "assets/spine-template.md"
|
|
|
|
# Run folder location. ARCHITECTURE-SPINE.md, its .memlog.md, and any fuller rendering the run
|
|
# produces all land inside `{spine_output_path}/{run_folder_pattern}/`. Resume-check scans
|
|
# `{spine_output_path}` for prior unfinished runs.
|
|
#
|
|
# The default pattern fits the common case (one spine per project, at the altitude above epics).
|
|
# At EPIC altitude, override run_folder_pattern to carry the epic identity so per-epic runs don't
|
|
# collide on the same day — e.g. set it (team/user TOML) to "architecture-epic-{epic_id}", binding
|
|
# {epic_id} from the driving spec / the activating payload. Headless callers may instead pass an
|
|
# explicit doc_workspace and bypass the pattern entirely.
|
|
spine_output_path = "{planning_artifacts}/architecture"
|
|
run_folder_pattern = "architecture-{project_name}-{date}"
|
|
|
|
# Prose-editorial standards applied at finalize ONLY to a fuller prose document the run produces
|
|
# (a discussion report, full architecture doc, or design addendum) — never to the spine or other
|
|
# short, structured outputs, which are terse and carry decisions in AD-n blocks and diagrams by
|
|
# design. Each entry is a `skill:`, `file:`, or plain-text directive applied before the user sees
|
|
# the polished draft. Suggested order: structural passes first, prose mechanics last. Append-only.
|
|
doc_standards = [
|
|
"skill:bmad-editorial-review-structure",
|
|
"skill:bmad-editorial-review-prose",
|
|
]
|
|
|
|
# External-source registry. Natural-language directives describing knowledge bases, MCP tools, or
|
|
# internal systems the LLM may consult ON DEMAND during the run (not preemptively) — approved-stack
|
|
# catalogs, internal platform docs, version registries. Each entry names the tool, the trigger
|
|
# condition, and any fields it needs. If a named tool is unavailable at runtime, the LLM falls back
|
|
# to standard behavior (e.g. web research) and notes the gap. Empty by default.
|
|
#
|
|
# Examples (set in team/user override TOML):
|
|
# "When choosing a datastore, consult corp:platform_catalog before recommending one."
|
|
# "For current library versions, query corp:artifact_registry before web search."
|
|
external_sources = []
|
|
|
|
# External-handoff routing applied at Finalize to push outputs beyond local files (Confluence,
|
|
# Notion, ticket systems). Each entry names the MCP tool, the destination, and required fields.
|
|
# Runs after polish; returned URLs/IDs are surfaced. Unavailable tools are skipped and flagged;
|
|
# local files always exist. Empty by default.
|
|
external_handoffs = []
|
|
|
|
# --- Finalize reviewers ---
|
|
# Extra review lenses spawned as parallel subagents at the validation gate (Finalize and the
|
|
# Validate intent), on top of the skill's built-in good-spine checklist and the lint_spine.py
|
|
# mechanical floor. The GATE is stakes-gated — a throwaway spine may run it quietly or skip it —
|
|
# but whenever the gate runs, every entry here runs with it (the configured floor, never cherry-
|
|
# picked); only ad-hoc lenses are optional, and headless never skips the gate.
|
|
#
|
|
# Entries follow the standard prefix convention:
|
|
# "skill:NAME" invoke the named review skill as a subagent against ARCHITECTURE-SPINE.md
|
|
# "file:PATH" load the file as a review prompt; spawn an adversarial subagent applying it
|
|
# plain text use the text directly as the subagent's review prompt
|
|
#
|
|
# Resolved on-demand (not at activation). Override TOML may append.
|
|
finalize_reviewers = [
|
|
"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.",
|
|
"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.",
|
|
]
|