Skills › BMAD Method › bmad-build › customize.toml
customize.toml
186 lines · skills/bmad-build/customize.toml at bd70c64
1# DO NOT EDIT -- overwritten on every update.
2#
3# Default customization values for bmad-build.
4# Override in _bmad/custom/bmad-build.toml or
5# _bmad/custom/bmad-build.user.toml.
6#
7# Merge rules:
8# - Strings replace the default.
9# - Lists append to the default list.
10# - Tables merge key by key.
11# - Arrays of tables merge by `id`: matching `id` replaces, new `id`s append.
13[workflow]
15# Extra instructions to run before config is loaded and before the user is greeted.
17activation_steps_prepend = []
19# Extra instructions to run after the greeting and before step 01.
21activation_steps_append = []
23# Facts kept in context for the whole run.
24# Entries are literal text or file references prefixed with "file:".
25# File entries may use globs and are loaded during activation.
27persistent_facts = []
29# Execution route: "oneshot" implements in this session, "full" writes a plan
30# and hands implementation to a subagent, "auto" applies route_selection after
31# planning.
33route = "auto"
35# Automatic route selection. Replace the whole instruction to change the rule.
37route_selection = """
38Decide whether to use a coding subagent (full) or implement directly (oneshot).
39Using the information already gathered, with no further reading and minimal
40extra reasoning, estimate the lines of code to add or modify.
41100 lines or fewer: oneshot. Otherwise: full.
42If the change touches more than five files and is not simple or mechanical,
43consider upgrading to full.
44"""
46# Instruction run after Build completes.
47# Empty means no extra completion behavior.
49on_complete = ""
51# Optional instructions for opening a completed plan. The empty default leaves
52# the plan closed. Override this with the application and behavior you prefer.
53# Example requests for bmad-customize: "Open completed plans in Cursor and
54# reuse the project window" or "Do not open completed plans automatically."
55#
56# Example `open_plan` override instructions for bmad-build.user.toml:
57# {project-root} and {plan_file} are substituted at run time.
58#
59# VS Code and compatible GUI editors — a custom override can use `code`; Cursor,
60# Windsurf, Antigravity, Zed, and similar editors can use their own launcher.
61# Preserve reuse-window behavior when the launcher supports it, and always pass
62# the repository root first and the plan second:
63# Run `code -r "{project-root}" "{plan_file}"`, root first.
64# Run `cursor -r "{project-root}" "{plan_file}"`, root first.
65# Run `windsurf -r "{project-root}" "{plan_file}"`, root first.
66# Run `zed "{project-root}" "{plan_file}"`, root first.
67#
68# IntelliJ IDEA — its CLI accepts one path per invocation:
69# Run `idea "{project-root}"` to open the project, then
70# `idea "{plan_file}"` to open the plan in that project.
71#
72# Vim — keep repository context as the working directory:
73# Run `cd "{project-root}" && vim "{plan_file}"`.
74#
75# Emacs — reuse an Emacs server without waiting for the buffer to close:
76# Run `cd "{project-root}" && emacsclient -n "{plan_file}"`.
77#
78open_plan = ""
80# Handoff for the implementation subagent in step 03. The whole execution
81# recipe — a subagent by default, but an override may run it any other way
82# (a different model, an external coding tool via bash). {plan_file} is
83# substituted at run time.
85implementation_handoff = """
86Launch a subagent with no prior conversation context, with this prompt:
88> Read {plan_file} fully and implement it — the plan is the sole source of truth. Load every file listed in its frontmatter `context:` before you start.
89>
90> When done, report what you changed, how you verified it, and anything left incomplete or risky.
91"""
93# Review selection: "none" launches no lens and skips triage, "quick" runs
94# quick_lenses, "thorough" runs thorough_lenses, "auto" follows the resolved
95# route — oneshot selects quick, full selects thorough.
97review = "quick"
99# Review lenses for the review step, in two sets the review selection picks
100# between. `instruction` is the lens's whole execution recipe — subagents by
101# default, but an override may run anything (e.g. an external reviewer via
102# bash). {diff_file}, {claims_file}, {plan_file}, and {verbatim_intent} are
103# substituted at run time; the first three are paths, and {diff_file} is the
104# unified diff file the lens reads. `when` (optional) gates a lens; empty
105# `instruction` disables it.
107[[workflow.quick_lenses]]
108id = "quick"
109name = "Quick"
110instruction = """
111Launch a context-free subagent with this prompt:
113Read `{plan_file}` — the plan holding the acceptance criteria and intent — and the files its frontmatter `context:` lists. Read the agent instruction files (`AGENTS.md`, `CLAUDE.md`, or equivalents) at the repository root and in the directories the diff touches; those are the rules. Then read the unified diff at `{diff_file}` — it is the change under review.
115Report unmet acceptance criteria, broken rules, and bugs. Each finding: the location, what goes wrong, and evidence checked against the surrounding code. Output a Markdown list of findings only — no severity, priority, or ranking.
117Review by inspection only. Do not modify code, run builds or tests, or invoke quality gates. Do not invoke any skill, and do not spawn subagents of your own — you are the reviewer. Return your findings as text in your final message; do not route them through any findings-reporting tool the host may offer.
119"""
121[[workflow.thorough_lenses]]
122id = "blind-hunter"
123name = "Blind Hunter"
124instruction = """
125Launch a context-free subagent with this prompt:
127Conduct a review of CONTENT.
128Look for what's missing, not only what's wrong.
129Compute your finding floor N from the diff file's size: N = min(floor(sqrt(kB) + 1), 10), where kB is the file's size in kilobytes. State the arithmetic in one line, then find at least N issues to fix or improve.
130Output a Markdown list of findings only — no severity, priority, or ranking.
131If the content is empty, stop and say so.
132If you have zero findings, re-check and keep thinking; do not stop with an empty list.
134CONTENT: the unified diff at `{diff_file}`. Read that file — it is the content under review.
136Review by inspection only. Do not modify code, run builds or tests, or invoke quality gates. Do not invoke any skill, and do not spawn subagents of your own — you are the reviewer. Return your findings as text in your final message; do not route them through any findings-reporting tool the host may offer.
138"""
140[[workflow.thorough_lenses]]
141id = "edge-case-hunter"
142name = "Edge Case Hunter"
143instruction = """
144Launch a context-free subagent with this prompt:
146Read `{skill-root}/review-prompts/edge-case-hunter.md` completely and follow it as your review instructions.
148claims_file (leave unread until your instructions call for it): {claims_file}
150Review content: the unified diff at `{diff_file}`. Read that file — it is the content under review.
152Review by inspection only. Do not modify code, run builds or tests, or invoke quality gates. Do not invoke any skill, and do not spawn subagents of your own — you are the reviewer. If the instruction file is unreadable, report that exact failure and stop. Return your findings as text in your final message; do not route them through any findings-reporting tool the host may offer.
154"""
156[[workflow.thorough_lenses]]
157id = "verification-gap"
158name = "Verification Gap Reviewer"
159instruction = """
160Launch a context-free subagent with this prompt:
162Read `{skill-root}/review-prompts/verification-gap.md` completely and follow it as your review instructions.
164Review content: the unified diff at `{diff_file}`. Read that file — it is the content under review.
166Review by inspection only. Do not modify code, run builds or tests, or invoke quality gates. Do not invoke any skill, and do not spawn subagents of your own — you are the reviewer. If the instruction file is unreadable, report that exact failure and stop. Return your findings as text in your final message; do not route them through any findings-reporting tool the host may offer.
168"""
170[[workflow.thorough_lenses]]
171id = "intent-alignment"
172name = "Intent Alignment Auditor"
173instruction = """
174Launch a subagent with this prompt:
176You are an intent-alignment auditor. You have no other context about how this change was produced. Here is the verbatim intent this work started from:
178{verbatim_intent}
180The diff is the unified diff at `{diff_file}`. Read that file — it is the change under review.
182Your task is strictly descriptive — do not prescribe additional work. Report: (1) the defensible readings of the intent, enumerated; (2) which reading this diff implements; (3) where the readings and the diff diverge — specifically, which surface the intent's expectations live at versus which surface the diff's changes and its tests exercise.
184Review by inspection only. Do not modify code, run builds or tests, or invoke quality gates. Do not invoke any skill, and do not spawn subagents of your own — you are the reviewer. Return your findings as text in your final message; do not route them through any findings-reporting tool the host may offer.
186"""