
BMad Review
FreeMulti-lens content review for precise analysis.
Free · Opens the source repo
What BMad Review does
BMad Review is a Python-based skill designed for thorough content evaluation through multiple analytical lenses. It allows users to review diffs, documents, specifications, and other artifacts by applying various lenses that each provide a unique perspective on the content. The skill's architecture supports a flexible lens system, meaning users can customize which lenses to apply based on their specific needs. The shipped lenses include adversarial, edge-case, verification-gap, structure, and prose, each with its own criteria for evaluation and reporting.
When you invoke BMad Review, it processes the specified content and selects applicable lenses based on the content type and the user's directives. Each lens operates independently, providing findings that are then aggregated into a single report. This approach ensures that the analysis is comprehensive and respects the integrity of the content being reviewed. The adversarial lens, for example, demands a minimum of ten findings, whereas the editorial lenses focus on the organization and expression of the content without altering its substance.
This skill is particularly valuable for developers and content creators who need to ensure the quality and robustness of their work. It aids in identifying potential issues such as edge cases, structural flaws, and prose clarity, making it an essential tool for critical reviews. By leveraging BMad Review, teams can enhance their review processes, ensuring that all aspects of the content are scrutinized effectively.
Overall, BMad Review streamlines the review process by providing a structured and methodical approach to content analysis, making it easier for users to identify and address issues before finalizing their work.
When to use it
Use this skill when you need a detailed review of any content, especially when multiple viewpoints are beneficial for thorough analysis.
When not to use it
This skill may not be suitable for quick reviews or when a single perspective is sufficient, as it focuses on comprehensive analysis rather than rapid feedback.
What you can build with it
Reviewing Code Changes
Use BMad Review to analyze code diffs for potential issues, ensuring robustness before merging changes.
Evaluating Documentation
Apply the prose and structure lenses to improve the clarity and organization of technical documents.
Conducting Quality Assurance
Leverage the edge-case and adversarial lenses to identify hidden flaws in specifications and requirements.
How to install BMad Review
View source1. Install with the skills CLI
npx skills add bmad-code-org/bmad-method/bmad-review --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by bmad-code-orgBMad Review
Review content through lenses — each a distinct method and stance — and report findings in one canonical shape. Report what is real — never pad to look thorough. Each lens sets its own stance toward the content and toward zero findings: for most an empty result is valid; the adversarial lens requires at least ten concrete findings and treats an empty list as a signal to re-check; the editorial lenses hold content sacrosanct and critique only how it is organized and expressed.
The lens set is whatever {workflow.lenses} resolves to, not a fixed list — overrides add lenses and replace shipped ones. Never claim a capability from this file; read the resolved lenses and work from those.
Inputs
- content — what to review: a diff, branch, uncommitted changes, file, spec, story, or any document. Args:
[path]. - lenses (optional) — one or more lens codes or names, however the caller expresses them: a spoken request, or a directive of the form
skill:bmad-review lenses=<code>[,<code>...](the form bmm'sdoc_standardsuses). Default: every applicable lens (a full review). - also_consider (optional) — areas to keep in mind alongside each lens's normal analysis.
- pre-resolved customization (optional) —
[workflow]field values supplied by a forwarding caller. See Execution step 1.
Conventions
- Bare paths (e.g.
references/lens-edge-case-hunter.md) resolve from{skill-root}— this skill's installed directory, wherecustomize.tomllives.{project-root}resolves to the project working directory. {workflow.<name>}resolves to fields incustomize.toml's[workflow]table (overrides win per BMad merge rules).- In
style_guide,review_guidance, andpersistent_facts, a value prefixedfile:is a path or glob — load that file's contents. If afile:value cannot be read, name the failed file in the output header and continue: the shipped baseline forstyle_guide, the remaining entries otherwise.
Execution
- Resolve customization:
uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow. On failure, read{skill-root}/customize.tomldirectly and use defaults. Forwarded activation: if a caller invoked you with pre-resolved customization fields (e.g. thebmad-editorial-reviewshim), honor them verbatim for those named fields — they already carry the user's overrides — and resolve only the remaining fields from your owncustomize.toml. Then execute each{workflow.activation_steps_prepend}entry in order, hold{workflow.persistent_facts}as standing context for the session, and treat{workflow.review_guidance}entries as standing review directives for every lens. - Load the content. If it is empty or cannot be decoded as text: when the caller expects the raw findings JSON array (e.g. the legacy edge-case forwarder), return
[{"location":"N/A","trigger_condition":"Input empty or undecodable","guard_snippet":"Provide valid content to review","potential_consequence":"Review skipped — no analysis performed"}](nolensfield) and stop; otherwise say what's wrong and ask for reviewable content. Classify the content — diff, source file, function, or document — and whether it is code or docs; scope rules and lens applicability both depend on it. A document that defines behavior (spec, requirements, plan, story) isdocsthat a behavioral lens may still apply to; judge bywhen. - Select lenses from
{workflow.lenses}. A lens with an emptyinstructionis disabled. If the user or caller named lenses, run exactly those only —applies_toandwhendo not filter an explicit request. Otherwise run every enabled lens whoseapplies_tocovers the content class (anyalways covers) and whosewhenapplies. - Announce the plan in one line before running anything: the content class, the lenses about to run, and — when any lens has
afterset — that it runs on top of the named lens's findings. Skip the announcement entirely when the caller pinned an exact output contract (the legacy forwarders that demand raw JSON or one exact line) — their contract covers everything you emit, not just the findings block. Then execute each{workflow.activation_steps_append}entry in order. - Run the independent lenses — every selected lens without
after. Each sees the content andalso_consider, never another lens's findings. Follow each lens'sinstruction; the shipped lenses load their reference file just-in-time, so load only what runs. When subagents are available, spawn one per lens in parallel: give it the lensinstructionwith{skill-root}and paths resolved absolute, the content or where to read it, anyalso_considerareas, the standing review directives, and the constraint "Return ONLY your findings — no other output." Otherwise run the lenses sequentially yourself, completing one before starting the next. - Run the dependent lenses — every selected lens with
after, once the lens it names has completed, passing that lens's findings in. A lens whoseaftertarget was not selected or produced nothing still runs, with no prior findings. Dependent lenses that name different targets are independent of each other and may run in parallel. - Assemble and present per Output below. Keep every lens's findings — overlap between lenses is signal, not duplication; note it in the markdown report rather than deduping. Execute
{workflow.on_complete}if set.
Output
One JSON array holding every finding from every lens. Each finding carries:
lens— the code of the lens that produced itlocation— where in the content (file:line-range for code, section for documents)trigger_condition— the problem, or the condition that exposes it, in one lineguard_snippet— the concrete fix, guard, or missing checkpotential_consequence— what goes wrong if it ships as-is
Each lens file refines these semantics for its findings and may add lens-specific fields (e.g. kind/confidence on deletion findings, gap_shape/consumer/evidence on verification-gap findings). A lens file may instead declare its own findings shape and rendering — the editorial lenses render a findings table — and that shape wins for that lens's findings. [] is valid when nothing is found. No severity, priority, or ranking anywhere.
Present per {workflow.output_format} — "json" (the raw array in a fenced json block), "markdown", or "both" — unless the caller requested a specific shape; a legacy forwarder's output contract always wins, and governs everything you emit rather than the findings block alone. The markdown report groups findings by lens, each rendered in its declared shape: a short block per finding rendering the fields plus any extras worth surfacing, one line for a lens that found nothing, and a plain clean statement when the whole review is clean. Shape the report per {workflow.output_preferences}.
When {workflow.report_path} is set, write the report there; otherwise present it in chat.
Frequently asked questions about BMad Review
Similar skills
Quality Playbook Generator
Run comprehensive quality audits on any codebase.
PR Draft Summary
Automate PR summary generation for openai-agents-python.
Final Release Review
Streamline your release candidate audits with ease.
Unit Test Vue Pinia
Efficiently write and review unit tests for Vue 3 applications.
Slang Shader Expert
Optimize and integrate Slang shaders with ease.
Telemetry Standards
Ensure consistent event tracking in Supabase Studio.
