diff --git a/src/core/tasks/workflow.xml b/src/core/tasks/workflow.xml
index 402678fc..dc9c3dd8 100644
--- a/src/core/tasks/workflow.xml
+++ b/src/core/tasks/workflow.xml
@@ -63,6 +63,8 @@
invoke-workflow xml tag → Execute another workflow with given inputs and the workflow.xml runner
invoke-task xml tag → Execute specified task
invoke-protocol name="protocol_name" xml tag → Execute reusable protocol from protocols section
+ invoke-bash cmd="command" → Execute shell command, capture stdout/stderr, set {{bash_exit_code}}, {{bash_stdout}}, {{bash_stderr}}
+ set-var name="varname" value="..." → Set runtime variable {{varname}} to specified value (supports expressions)
goto step="x" → Jump to specified step
@@ -126,6 +128,8 @@
invoke-workflow - Call another workflow
invoke-task - Call a task
invoke-protocol - Execute a reusable protocol (e.g., discover_inputs)
+ invoke-bash cmd="..." - Execute shell command, results in {{bash_exit_code}}, {{bash_stdout}}, {{bash_stderr}}
+ set-var name="..." value="..." - Set runtime variable dynamically
-
\ No newline at end of file
+
diff --git a/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml b/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml
index c148ef89..8cdc0fe1 100644
--- a/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml
+++ b/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml
@@ -18,6 +18,7 @@ sprint_status: "{sprint_artifacts}/sprint-status.yaml || {output_folder}/sprint-
installed_path: "{project-root}/.bmad/bmm/workflows/4-implementation/code-review"
instructions: "{installed_path}/instructions.xml"
validation: "{installed_path}/checklist.md"
+external_agent_prompt: "{installed_path}/external-agent-prompt.md"
template: false
variables:
@@ -25,6 +26,11 @@ variables:
project_context: "**/project-context.md"
story_dir: "{sprint_artifacts}"
+ # External code review agent configuration
+ # User selects preferred agent during install; detection verifies availability at runtime
+ # Supported values: codex, gemini, claude, none
+ external_review_agent: "{config_source}:external_review_agent || 'none'"
+
# Smart input file references - handles both whole docs and sharded docs
# Priority: Whole document first, then sharded version
# Strategy: SELECTIVE LOAD - only load the specific epic needed for this story review
@@ -51,4 +57,3 @@ input_file_patterns:
load_strategy: "INDEX_GUIDED"
standalone: true
-web_bundle: false