name: 'step-04-review' description: 'Review and finalize the tech-spec'
workflow_path: '{project-root}/_bmad/bmm/workflows/bmad-quick-flow/create-tech-spec'
Progress: Step 4 of 4 - Final Step
{communication_language}{wipFile} from Step 3.workflow.md.Read {wipFile} completely and extract slug from frontmatter for later use.
Present to user:
"Here's your complete tech-spec. Please review:"
[Display the complete spec content - all sections]
"Quick Summary:
Does this capture your intent? Any changes needed?"
a) If user requests changes:
{wipFile}b) If the spec does NOT meet the "Ready for Development" standard:
c) If user has questions:
When user confirms the spec is good AND it meets the "Ready for Development" standard:
a) Update {wipFile} frontmatter:
---
# ... existing values ...
status: 'ready-for-dev'
stepsCompleted: [1, 2, 3, 4]
---
b) Rename WIP file to final filename:
slug extracted in Section 1{wipFile} → {implementation_artifacts}/tech-spec-{slug}.mdfinalFile for use in menus belowa) Display completion message and menu:
**Tech-Spec Complete!**
Saved to: {finalFile}
---
**Next Steps:**
[a] Advanced Elicitation - refine further
[r] Adversarial Review - critique of the spec (highly recommended)
[b] Begin Development - start implementing now (not recommended)
[d] Done - exit workflow
[p] Party Mode - get expert feedback before dev
---
Once you are fully satisfied with the spec (ideally after **Adversarial Review** and maybe a few rounds of **Advanced Elicitation**), it is recommended to run implementation in a FRESH CONTEXT for best results.
Copy this prompt to start dev:
\`\`\`
quick-dev {finalFile}
\`\`\`
This ensures the dev agent has clean context focused solely on implementation.
b) HALT and wait for user selection.
{advanced_elicitation}, then return here and redisplay menu{quick_dev_workflow} with the final spec file (warn: fresh context is better){party_mode_exec}, then return here and redisplay menu[r]: Execute Adversarial Review:
Invoke Adversarial Review Task:
With
{finalFile}constructed, invoke the review task. If possible, use information asymmetry: run this task, and only it, in a separate subagent or process with read access to the project, but no context except the{finalFile}. Review {finalFile} using {project-root}/_bmad/core/tasks/review-adversarial-general.xml Platform fallback: If task invocation not available, load the task file and execute its instructions inline, passing{finalFile}as the content. The task should: review{finalFile}and return a list of findings.
Process Findings:
Capture the findings from the task output. If zero findings: HALT - this is suspicious. Re-analyze or request user guidance. Evaluate severity (Critical, High, Medium, Low) and validity (real, noise, undecided). DO NOT exclude findings based on severity or validity unless explicitly asked to do so. Order findings by severity. Number the ordered findings (F1, F2, F3, etc.). If TodoWrite or similar tool is available, turn each finding into a TODO, include ID, severity, validity, and description in the TODO; otherwise present findings as a table with columns: ID, Severity, Validity, Description
Return here and redisplay menu.
When user selects [d]:
"All done! Your tech-spec is ready at:
{finalFile}
When you're ready to implement, run:
quick-dev {finalFile}
Ship it!"
tech-spec-{slug}.md.stepsCompleted: [1, 2, 3, 4] set and file renamed.