BMAD-METHOD/.agents/skills/bmad-story-automator/steps-c/step-02a-preflight-config.md

5.4 KiB

name description nextStep stateTemplate outputFolder outputFile buildStateDoc agentConfigPrompts agentConfigPresets
step-02a-preflight-config Configure agents and execution settings, then create state document ./step-02b-preflight-finalize.md ../templates/state-document.md {output_folder}/story-automator {outputFolder}/orchestration-{epic_id}-{timestamp}.md ../scripts/story-automator ../data/agent-config-prompts.md ../data/agent-config-presets.json

Step 2a: Pre-flight Configuration

Goal: Configure agents and execution settings, then create the orchestration state document. Interaction mode: Guided configuration (collaborative inputs, deterministic state creation).


Prerequisites

  • Step 2 completed.
  • Variables available: epic_id, epic_name, range_json, stories_json, selected_count, custom_instructions.

Do

1. Configure Execution Preferences

PREREQUISITE: Step 2 (preflight) MUST be complete. The Complexity Matrix MUST have been displayed. If not, STOP and complete step 2 first.

**Execution Settings:**

1. **Skip the 'automate' step (test automation)?** [N]o (default) / [Y]es
2. **Max parallel sessions?** (tmux sessions running concurrently, default: 1)

Enter choices (e.g., `N 1` or `Y 3`):

Wait.

Store responses as skip_automate (true/false) and max_parallel (integer).

2. Configure Agent (Complexity-Aware)

Using the complexity data from stories_json, present agent configuration options that reference the actual complexity breakdown.

2a. Check for Saved Presets

presets_result=$("{buildStateDoc}" agent-config list --file "{agentConfigPresets}")
preset_count=$(echo "$presets_result" | jq -r '.count')

Store preset_count — this determines whether [L]oad option appears in the menu.

2b. Present Complexity-Based Agent Options

Display prompts from {agentConfigPrompts}, selecting the appropriate table variant:

  • If skip_automate is false: show table WITH auto column
  • If skip_automate is true: show table WITHOUT auto column
  • If preset_count > 0: include [L]oad saved option
  • If preset_count == 0: omit [L] option

Wait.

2c. Handle Selection

  • IF S: Build agent_config_json from defaults (no save prompt).
  • IF U or C: Follow Uniform/Custom prompts from {agentConfigPrompts}, build agent_config_json, then proceed to 2d (Save Prompt).
  • IF L: Follow Load Saved Preset prompt from {agentConfigPrompts}. Load preset config as agent_config_json (no save prompt).
# Example shape with complexity-based config (auto column included when not skipped)
agent_config_json='{
  "complexityBased": true,
  "low": {"create":{"primary":"...","fallback":"..."},"dev":{...},"auto":{...},"review":{...}},
  "medium": {"create":{...},"dev":{...},"auto":{...},"review":{...}},
  "high": {"create":{...},"dev":{...},"auto":{...},"review":{...}},
  "auto": {"skip": $skip_automate}
}'

Store:

  • agent_config_json = full config object
  • primary_agent = default primary (for backwards compatibility)

2d. Save Prompt (U/C only)

Only when user chose [U]niform or [C]ustom, follow the Save Configuration prompt from {agentConfigPrompts}:

# If user provides a name:
"{buildStateDoc}" agent-config save --file "{agentConfigPresets}" --name "$save_name" --config-json "$agent_config_json"

3. Review

Display configuration summary:

  • Epic and story range
  • Custom instructions (if any)
  • Agent configuration
  • Execution settings

Pause for confirmation before starting execution.

3b. Confirm Autonomous Start (Optional Checkpoint)

Before creating state and launching autonomous phases, confirm:

Proceed with autonomous execution after preflight? [Y/n]

Wait.

  • If Y/Enter: continue.
  • If n: return to Step 1 (settings) for adjustments.

4. Create State Document

From {stateTemplate}:

  • Generate: orchestration-{epic_id}-{timestamp}.md
  • Fill frontmatter with all config
  • Initialize story progress table
  • Set status: "READY"
  • Save to {outputFolder}

Deterministic creation:

agent_cmd="claude --dangerously-skip-permissions"
if [ "$primary_agent" = "codex" ]; then agent_cmd="codex exec --full-auto"; fi

config_json=$(jq -n \
  --arg epic "$epic_id" \
  --arg epicName "$epic_name" \
  --argjson storyRange "$(echo "$range_json" | jq '.storyIds')" \
  --arg status "READY" \
  --arg currentStory "null" \
  --arg currentStep "preflight" \
  --arg aiCommand "$agent_cmd" \
  --arg customInstructions "$custom_instructions" \
  --argjson overrides "{\"skipAutomate\":$skip_automate,\"maxParallel\":$max_parallel}" \
  --argjson agentConfig "$agent_config_json" \
  '{epic:$epic,epicName:$epicName,storyRange:$storyRange,status:$status,currentStory:null,currentStep:$currentStep,aiCommand:$aiCommand,customInstructions:$customInstructions,overrides:$overrides,agentConfig:$agentConfig}'
)

state_result=$("{buildStateDoc}" build-state-doc --template "{stateTemplate}" --output-folder "{outputFolder}" --config-json "$config_json")
state_path=$(echo "$state_result" | jq -r '.path')

Display: "State document created." Record: state_path is the resolved {outputFile} for this run.

5. Auto-Proceed to Finalize

Persist any preflight notes to {outputFile}, update frontmatter (append step-02-preflight and step-02a-preflight-config, set lastUpdated).


Then

→ Load, read entire file, and execute {nextStep}