# DO NOT EDIT -- overwritten on every update. # # Workflow customization surface for bmad-product-brief. # # Override files (not edited here): # {project-root}/_bmad/custom/bmad-product-brief.toml (team) # {project-root}/_bmad/custom/bmad-product-brief.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, compliance 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 # (standards, compliance constraints, stylistic 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 has produced one — this gives # the facilitator persistent awareness of the project's tech, domain, and constraints without # re-asking. Common opt-ins (set in team/user override TOML): # "skill:acme-co:terms-and-conditions" # a skill that contains some relevant info # "Elvis has left the building" # generic agent instruction persistent_facts = [ "file:{project-root}/**/project-context.md", ] # Executed when the workflow completes (after the user has been told the # brief is ready). Accepts either a string scalar (single instruction) # or an array of instructions executed in order. Empty for none. on_complete = "" # Default brief structure. Treated as a starting point — the LLM adapts it # to the product, purpose, and domain. Override the path in team/user TOML # to enforce a different structure (e.g. regulated-industry, investor-deck). brief_template = "assets/brief-template.md" # Run folder location. The brief and optional addendum land inside `{brief_output_path}/{run_folder_pattern}/`. # Resume-check scans `{brief_output_path}` for prior unfinished runs. brief_output_path = "{planning_artifacts}/briefs" run_folder_pattern = "brief-{project_name}-{date}" # Document standards applied to human-consumed docs at finalize. Each entry is # a `skill:`, `file:`, or plain-text directive; the parent LLM applies the # findings before the user sees the draft. Encodes standards, not options. # # Examples: # "skill:bmad-editorial-review-prose" # "file:{project-root}/_bmad/style-guides/company-voice.md" # "Convert all dates to ISO 8601 format." # # Suggested order (broader passes first, narrower last): # 1. Structural (cuts, reorganization, section sizing) # 2. Content/voice/conventions (org standards, tone, terminology, compliance) # 3. Prose mechanics (grammar, clarity, typos) # # Override the array in team/user TOML to add additional standards. Append-only: # base entries cannot be removed or replaced (resolver has no removal mechanism). 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 during the workflow # when a relevant need surfaces. The LLM does NOT query these preemptively — # it consults them on demand (during Discovery, validation, drafting, etc.). # Each entry names the tool, the conditions for using it, and any fields the # tool needs. If a named MCP tool is unavailable at runtime, the LLM falls # back to standard behavior and notes the gap. Empty by default. # # Examples (set in team/user override TOML): # "When researching internal product context, consult corp:kb_search (database='product-docs') before web search." # "For voice-of-customer signal during Discovery, query corp:feedback_search with project={project_name}." # "When validating domain-compliance claims for a healthcare brief, cross-check against corp:hipaa_reference." external_sources = [] # External-handoff routing. Natural-language directives the LLM applies at # Finalize to route outputs beyond local files (Confluence, Notion, Google # Drive, ticket systems, etc.). Each entry names the MCP tool, the destination, # and the fields the tool needs. Handoffs run after the artifact is polished # and before the final user-facing message. URLs or IDs returned by the # destination are captured and surfaced to the user. If a named tool is # unavailable at runtime, the handoff is skipped and flagged in the JSON # status; local files always exist regardless. Fires automatically — users # can opt out in their prompt for a specific run. Empty by default. # # Examples (set in team/user override TOML): # "After finalize, upload brief.md and addendum.md to Confluence via corp:confluence_upload (space_key='PROD', parent_page='Product Briefs', label='brief', author={user_name})." # "Post a ready-for-review ping to Slack via corp:slack_post (channel='#product', text='New brief: '+{confluence_url})." external_handoffs = []