bmad-method 6.10.1-next.18 → 6.10.1-next.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/.claude-plugin/marketplace.json +0 -1
  2. package/package.json +1 -1
  3. package/src/bmm-skills/1-analysis/bmad-product-brief/customize.toml +5 -3
  4. package/src/bmm-skills/2-plan-workflows/bmad-prd/customize.toml +5 -3
  5. package/src/bmm-skills/2-plan-workflows/bmad-ux/customize.toml +4 -2
  6. package/src/bmm-skills/3-solutioning/bmad-architecture/customize.toml +4 -2
  7. package/src/bmm-skills/v6-shims/README.md +21 -0
  8. package/src/core-skills/bmad-review/SKILL.md +17 -11
  9. package/src/core-skills/bmad-review/customize.toml +93 -8
  10. package/src/core-skills/bmad-review/references/editorial-common.md +56 -0
  11. package/src/core-skills/bmad-review/references/lens-prose.md +7 -0
  12. package/src/core-skills/bmad-review/references/lens-structure.md +9 -0
  13. package/src/core-skills/module-help.csv +1 -2
  14. package/src/core-skills/v6-shims/README.md +25 -0
  15. package/src/core-skills/v6-shims/bmad-editorial-review/SKILL.md +6 -0
  16. package/src/core-skills/v6-shims/bmad-editorial-review/customize.toml +31 -0
  17. package/src/core-skills/v6-shims/bmad-editorial-review-prose/SKILL.md +6 -0
  18. package/src/core-skills/v6-shims/bmad-editorial-review-structure/SKILL.md +6 -0
  19. package/src/core-skills/bmad-editorial-review/SKILL.md +0 -77
  20. package/src/core-skills/bmad-editorial-review/customize.toml +0 -68
  21. package/src/core-skills/bmad-editorial-review-prose/SKILL.md +0 -6
  22. package/src/core-skills/bmad-editorial-review-structure/SKILL.md +0 -6
  23. /package/src/bmm-skills/{3-solutioning → v6-shims}/bmad-create-architecture/SKILL.md +0 -0
  24. /package/src/bmm-skills/{3-solutioning → v6-shims}/bmad-create-architecture/customize.toml +0 -0
  25. /package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-create-prd/SKILL.md +0 -0
  26. /package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-create-prd/customize.toml +0 -0
  27. /package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-edit-prd/SKILL.md +0 -0
  28. /package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-edit-prd/customize.toml +0 -0
  29. /package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-validate-prd/SKILL.md +0 -0
  30. /package/src/bmm-skills/{2-plan-workflows → v6-shims}/bmad-validate-prd/customize.toml +0 -0
  31. /package/src/core-skills/{bmad-editorial-review → bmad-review}/references/structure-models.md +0 -0
  32. /package/src/core-skills/{bmad-editorial-review → bmad-review}/scripts/tests/test_word_metrics.py +0 -0
  33. /package/src/core-skills/{bmad-editorial-review → bmad-review}/scripts/word_metrics.py +0 -0
  34. /package/src/core-skills/{bmad-review-adversarial-general → v6-shims/bmad-review-adversarial-general}/SKILL.md +0 -0
  35. /package/src/core-skills/{bmad-review-edge-case-hunter → v6-shims/bmad-review-edge-case-hunter}/SKILL.md +0 -0
  36. /package/src/core-skills/{bmad-review-verification-gap → v6-shims/bmad-review-verification-gap}/SKILL.md +0 -0
@@ -62,7 +62,6 @@
62
62
  "./src/core-skills/bmad-customize",
63
63
  "./src/core-skills/bmad-advanced-elicitation",
64
64
  "./src/core-skills/bmad-review",
65
- "./src/core-skills/bmad-editorial-review",
66
65
  "./src/bmm-skills/1-analysis/bmad-product-brief",
67
66
  "./src/bmm-skills/1-analysis/bmad-prfaq",
68
67
  "./src/bmm-skills/1-analysis/bmad-agent-analyst",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-method",
4
- "version": "6.10.1-next.18",
4
+ "version": "6.10.1-next.19",
5
5
  "description": "Breakthrough Method of Agile AI-driven Development",
6
6
  "keywords": [
7
7
  "agile",
@@ -53,7 +53,7 @@ run_folder_pattern = "brief-{project_name}-{date}"
53
53
  # findings before the user sees the draft. Encodes standards, not options.
54
54
  #
55
55
  # Examples:
56
- # "skill:bmad-editorial-review"
56
+ # "skill:bmad-review lenses=structure,prose"
57
57
  # "file:{project-root}/_bmad/style-guides/company-voice.md"
58
58
  # "Convert all dates to ISO 8601 format."
59
59
  #
@@ -64,9 +64,11 @@ run_folder_pattern = "brief-{project_name}-{date}"
64
64
  #
65
65
  # Override the array in team/user TOML to add additional standards. Append-only:
66
66
  # base entries cannot be removed or replaced (resolver has no removal mechanism).
67
- # The default entry runs both editorial passes in order: structure, then prose.
67
+ # The default entry runs bmad-review's two editorial lenses in order:
68
+ # structure, then prose on top of the structure findings. The `lenses=` suffix
69
+ # names them; drop it to let bmad-review pick what fits the content.
68
70
  doc_standards = [
69
- "skill:bmad-editorial-review",
71
+ "skill:bmad-review lenses=structure,prose",
70
72
  ]
71
73
 
72
74
  # External-source registry. Natural-language directives describing knowledge
@@ -71,7 +71,7 @@ run_folder_pattern = "prd-{project_name}-{date}"
71
71
  # findings before the user sees the draft. Encodes standards, not options.
72
72
  #
73
73
  # Examples:
74
- # "skill:bmad-editorial-review"
74
+ # "skill:bmad-review lenses=structure,prose"
75
75
  # "file:{project-root}/_bmad/style-guides/company-voice.md"
76
76
  # "Convert all dates to ISO 8601 format."
77
77
  #
@@ -82,9 +82,11 @@ run_folder_pattern = "prd-{project_name}-{date}"
82
82
  #
83
83
  # Override the array in team/user TOML to add additional standards. Append-only:
84
84
  # base entries cannot be removed or replaced (resolver has no removal mechanism).
85
- # The default entry runs both editorial passes in order: structure, then prose.
85
+ # The default entry runs bmad-review's two editorial lenses in order:
86
+ # structure, then prose on top of the structure findings. The `lenses=` suffix
87
+ # names them; drop it to let bmad-review pick what fits the content.
86
88
  doc_standards = [
87
- "skill:bmad-editorial-review",
89
+ "skill:bmad-review lenses=structure,prose",
88
90
  ]
89
91
 
90
92
  # External-source registry. Natural-language directives describing knowledge
@@ -78,9 +78,11 @@ creative_tools = [
78
78
  # Polish passes applied to DESIGN.md and EXPERIENCE.md at finalize.
79
79
  # Entries: `skill:NAME`, `file:PATH`, or plain text directive.
80
80
  # Suggested order: structural → content/voice → prose mechanics.
81
- # The default entry runs both editorial passes in order: structure, then prose.
81
+ # The default entry runs bmad-review's two editorial lenses in order:
82
+ # structure, then prose on top of the structure findings. The `lenses=` suffix
83
+ # names them; drop it to let bmad-review pick what fits the content.
82
84
  doc_standards = [
83
- "skill:bmad-editorial-review",
85
+ "skill:bmad-review lenses=structure,prose",
84
86
  ]
85
87
 
86
88
  # Information retrieval registry. Consulted on demand when the conversation
@@ -59,9 +59,11 @@ run_folder_pattern = "architecture-{project_name}-{date}"
59
59
  # short, structured outputs, which are terse and carry decisions in AD-n blocks and diagrams by
60
60
  # design. Each entry is a `skill:`, `file:`, or plain-text directive applied before the user sees
61
61
  # the polished draft. Suggested order: structural passes first, prose mechanics last. Append-only.
62
- # The default entry runs both editorial passes in order: structure, then prose.
62
+ # The default entry runs bmad-review's two editorial lenses in order:
63
+ # structure, then prose on top of the structure findings. The `lenses=` suffix
64
+ # names them; drop it to let bmad-review pick what fits the content.
63
65
  doc_standards = [
64
- "skill:bmad-editorial-review",
66
+ "skill:bmad-review lenses=structure,prose",
65
67
  ]
66
68
 
67
69
  # External-source registry. Natural-language directives describing knowledge bases, MCP tools, or
@@ -0,0 +1,21 @@
1
+ # v6 Deprecation Shims
2
+
3
+ Skills in this folder are forwarders kept for backward compatibility with v6 skill IDs.
4
+ Each one holds no logic of its own — it forwards to the skill that replaced it, passing a
5
+ stated intent and pre-resolved customization fields so the target skips its own intent
6
+ inference.
7
+
8
+ | Shim | Forwards to |
9
+ | -------------------------- | ----------------------------------- |
10
+ | `bmad-create-prd` | `bmad-prd` (create intent) |
11
+ | `bmad-edit-prd` | `bmad-prd` (update intent) |
12
+ | `bmad-validate-prd` | `bmad-prd` (validate intent) |
13
+ | `bmad-create-architecture` | `bmad-architecture` (create intent) |
14
+
15
+ Enterprise users may still depend on these IDs, so they ship by default. Removal rides the
16
+ v7 cut — never a 6.x minor.
17
+
18
+ The folder is grouping only: the installer discovers skills recursively and installs each
19
+ one under its own `name`, so nesting here does not change any installed path or skill ID.
20
+ A future install option will let users include or exclude this folder before it is removed
21
+ outright.
@@ -1,30 +1,36 @@
1
1
  ---
2
2
  name: bmad-review
3
- description: 'Multi-lens critical review adversarial, edge-case, and verification-gap passes over any diff, doc, or artifact, run singly or together. Use when the user says "review this", "critical review", "hunt edge cases", or "check verification gaps".'
3
+ description: 'Multi-lens review over any diff, doc, spec, or artifact whichever installed lenses fit the content, run singly or together. Shipped lenses include adversarial, edge-case, verification-gap, structure, and prose. Use when the user says "review this", "critical review", "editorial review", "hunt edge cases", "review the structure", or "review the prose".'
4
4
  ---
5
5
 
6
6
  # BMad Review
7
7
 
8
- Review content through independent 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 zero findings: for most an empty result is valid; the adversarial lens treats it as suspicious.
8
+ 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 treats it as suspicious; the editorial lenses hold content sacrosanct and critique only how it is organized and expressed.
9
+
10
+ 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.
9
11
 
10
12
  ## Inputs
11
13
 
12
14
  - **content** — what to review: a diff, branch, uncommitted changes, file, spec, story, or any document. Args: `[path]`.
13
- - **lenses** (optional) — one or more lens codes or names. Default: every applicable lens (a full review).
15
+ - **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's `doc_standards` uses). Default: every applicable lens (a full review).
14
16
  - **also_consider** (optional) — areas to keep in mind alongside each lens's normal analysis.
17
+ - **pre-resolved customization** (optional) — `[workflow]` field values supplied by a forwarding caller. See Execution step 1.
15
18
 
16
19
  ## Conventions
17
20
 
18
21
  - Bare paths (e.g. `references/lens-edge-case-hunter.md`) resolve from `{skill-root}` — this skill's installed directory, where `customize.toml` lives. `{project-root}` resolves to the project working directory.
19
- - `{workflow.<name>}` values come from the resolved customization.
22
+ - `{workflow.<name>}` resolves to fields in `customize.toml`'s `[workflow]` table (overrides win per BMad merge rules).
23
+ - In `style_guide`, `review_guidance`, and `persistent_facts`, a value prefixed `file:` is a path or glob — load that file's contents. If a `file:` value cannot be read, name the failed file in the output header and continue: the shipped baseline for `style_guide`, the remaining entries otherwise.
20
24
 
21
25
  ## Execution
22
26
 
23
- 1. **Resolve customization:** `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, read `{skill-root}/customize.toml` directly and use defaults.
24
- 2. **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"}]` (no `lens` field) and stop; otherwise say what's wrong and ask for reviewable content. Identify the content type — diff, file, function, document — since scope rules and lens applicability depend on it.
25
- 3. **Select lenses** from `{workflow.lenses}`. A lens with an empty `instruction` is disabled. If the user or caller named lenses, run exactly those only. Otherwise run every enabled lens whose `when` applies.
26
- 4. **Run each selected lens independently** each sees the content and `also_consider`, never another lens's findings. Follow each lens's `instruction`; 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 lens `instruction` with `{skill-root}` and paths resolved absolute, the content or where to read it, any `also_consider` areas, and the constraint "Return ONLY the findings JSON array no other output." Otherwise run the lenses sequentially yourself, completing one before starting the next.
27
- 5. **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.
27
+ 1. **Resolve customization:** `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, read `{skill-root}/customize.toml` directly and use defaults. **Forwarded activation:** if a caller invoked you with pre-resolved customization fields (e.g. the `bmad-editorial-review` shim), honor them verbatim for those named fields — they already carry the user's overrides — and resolve only the remaining fields from your own `customize.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.
28
+ 2. **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"}]` (no `lens` field) 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) is `docs` that a behavioral lens may still apply to; judge by `when`.
29
+ 3. **Select lenses** from `{workflow.lenses}`. A lens with an empty `instruction` is disabled. If the user or caller named lenses, run exactly those only — `applies_to` and `when` do not filter an explicit request. Otherwise run every enabled lens whose `applies_to` covers the content class (`any` always covers) and whose `when` applies.
30
+ 4. **Announce the plan** in one line before running anything: the content class, the lenses about to run, and when any lens has `after` set 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.
31
+ 5. **Run the independent lenses** every selected lens without `after`. Each sees the content and `also_consider`, never another lens's findings. Follow each lens's `instruction`; 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 lens `instruction` with `{skill-root}` and paths resolved absolute, the content or where to read it, any `also_consider` areas, 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.
32
+ 6. **Run the dependent lenses** — every selected lens with `after`, once the lens it names has completed, passing that lens's findings in. A lens whose `after` target 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.
33
+ 7. **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.
28
34
 
29
35
  ## Output
30
36
 
@@ -36,8 +42,8 @@ One JSON array holding every finding from every lens. Each finding carries:
36
42
  - `guard_snippet` — the concrete fix, guard, or missing check
37
43
  - `potential_consequence` — what goes wrong if it ships as-is
38
44
 
39
- 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). `[]` is valid when nothing is found. No severity, priority, or ranking anywhere.
45
+ 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.
40
46
 
41
- 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. The markdown report groups findings by lens: 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.
47
+ 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}`.
42
48
 
43
49
  When `{workflow.report_path}` is set, write the report there; otherwise present it in chat.
@@ -10,22 +10,88 @@
10
10
 
11
11
  # --- Configurable below. Overrides merge per BMad structural rules: ---
12
12
  # scalars: override wins
13
+ # arrays (persistent_facts, activation_steps_*, review_guidance): append
13
14
  # arrays of tables keyed by `code`: matching key replaces, new keys append
14
15
 
16
+ # Steps executed on activation: prepend runs before the skill's own
17
+ # activation flow, append runs after the lens plan is settled and before the
18
+ # lenses run. Each entry is a literal instruction.
19
+ activation_steps_prepend = []
20
+ activation_steps_append = []
21
+
22
+ # Standing context held for every review, code and document alike. Entries
23
+ # prefixed `file:` are paths or globs whose contents load as facts; all others
24
+ # are literal facts. The shipped entry is a project-wide glob — set it to []
25
+ # if you don't want every review scanning for it.
26
+ persistent_facts = ["file:{project-root}/**/project-context.md"]
27
+
28
+ # Standing review directives applied on every run alongside each lens's own
29
+ # method. Each entry is a literal sentence or a `file:`-prefixed path/glob
30
+ # whose contents load as directives.
31
+ #
32
+ # Examples:
33
+ # "Flag passive voice in headings."
34
+ # "Second-person imperative is the house voice; never suggest changing it."
35
+ # "file:{project-root}/docs/terminology.md"
36
+ review_guidance = []
37
+
38
+ # Executed after the findings are delivered. Freeform directive; empty = the
39
+ # review ends with the findings.
40
+ #
41
+ # Example:
42
+ # on_complete = "Append a one-line review summary to {project-root}/docs/review-log.md"
43
+ on_complete = ""
44
+
15
45
  # How findings are presented when the caller doesn't say: "json" (the raw
16
- # findings array only), "markdown" (the human report only), or "both".
46
+ # findings array only), "markdown" (the human report only), or "both". A lens
47
+ # that declares its own rendering keeps it for its own findings.
17
48
  output_format = "both"
18
49
 
19
50
  # Where to write the review report. Empty = present in chat only. Accepts
20
51
  # {project-root}-prefixed paths.
21
52
  report_path = ""
22
53
 
54
+ # How findings are presented — shaping, not destination. Freeform directive;
55
+ # empty = each lens's default ordering and rollup.
56
+ #
57
+ # Example:
58
+ # output_preferences = "Cap output at the 20 highest-impact findings."
59
+ output_preferences = ""
60
+
61
+ # --- Editorial lens settings (used by the structure and prose lenses) ---
62
+
63
+ # Default reader the editorial lenses calibrate for when the request doesn't
64
+ # say:
65
+ # "humans" clarity, flow, comprehension aids preserved
66
+ # "llm" precision, consistent terminology, no hedging
67
+ # A reader type stated in the request wins for that run.
68
+ reader_type = "humans"
69
+
70
+ # The baseline style guide for every editorial review: the name of a guide the
71
+ # model knows well, a `file:`-prefixed path to a style guide document, or the
72
+ # rules inline as text. A style guide stated in the request wins for that run.
73
+ # Where the guide in effect conflicts with the lens's generic principles, the
74
+ # guide wins — except content is sacrosanct.
75
+ #
76
+ # Examples (set in team/user override TOML):
77
+ # style_guide = "file:{project-root}/_bmad/style-guides/company-voice.md"
78
+ # style_guide = "Sentence-case headings. No Oxford comma. Address the reader as 'you'."
79
+ style_guide = "Microsoft Writing Style Guide"
80
+
23
81
  # ---------------------------------------------------------------------------
24
- # Review lenses. Each lens is an independent pass over the content with its
25
- # own method and stance. `instruction` is the lens's whole execution recipe —
26
- # the shipped lenses load a reference file from the skill root, but an
27
- # override may inline any prompt. `when` (optional) gates whether the lens
28
- # joins a default full review; an explicitly requested lens always runs.
82
+ # Review lenses. Each lens is a pass over the content with its own method and
83
+ # stance. `instruction` is the lens's whole execution recipe — the shipped
84
+ # lenses load a reference file from the skill root, but an override may inline
85
+ # any prompt.
86
+ #
87
+ # `applies_to` is the content this lens can review: "code", "docs", or "any".
88
+ # It is the first filter — a lens never joins a default review for content it
89
+ # does not apply to. `when` (optional) refines that judgement in prose. An
90
+ # explicitly requested lens always runs, whatever both say.
91
+ #
92
+ # `after` (optional) names a lens this one builds on: it runs once that lens
93
+ # has completed and receives its findings, instead of running independently.
94
+ #
29
95
  # Empty `instruction` disables a lens. Keyed by `code`: an override with a
30
96
  # matching code replaces the shipped lens, a new code appends.
31
97
  #
@@ -33,6 +99,7 @@ report_path = ""
33
99
  # [[workflow.lenses]]
34
100
  # code = "accessibility"
35
101
  # name = "Accessibility"
102
+ # applies_to = "any"
36
103
  # when = "UI code or user-facing documents."
37
104
  # instruction = "Review against WCAG 2.2 AA. Emit findings in the canonical fields."
38
105
  # ---------------------------------------------------------------------------
@@ -40,17 +107,35 @@ report_path = ""
40
107
  [[workflow.lenses]]
41
108
  code = "adversarial"
42
109
  name = "Adversarial"
110
+ applies_to = "any"
43
111
  when = "always"
44
112
  instruction = "Load `references/lens-adversarial.md` from the skill root and follow it."
45
113
 
46
114
  [[workflow.lenses]]
47
115
  code = "edge-case-hunter"
48
116
  name = "Edge-Case Hunter"
49
- when = "always"
117
+ applies_to = "any"
118
+ when = "Content with behavior to trace: code, diffs, and the specs, requirements, plans, and stories that define behavior. Skip for prose documents with no behavioral surface."
50
119
  instruction = "Load `references/lens-edge-case-hunter.md` from the skill root and follow it."
51
120
 
52
121
  [[workflow.lenses]]
53
122
  code = "verification-gap"
54
123
  name = "Verification Gap"
55
- when = "Code changes reviewed inside a repo where tests can be searched and read. Skip for prose documents or content with no verification surface."
124
+ applies_to = "code"
125
+ when = "Reviewed inside a repo where tests can be searched and read."
56
126
  instruction = "Load `references/lens-verification-gap.md` from the skill root and follow it."
127
+
128
+ [[workflow.lenses]]
129
+ code = "structure"
130
+ name = "Editorial Structure"
131
+ applies_to = "docs"
132
+ when = "Documents whose shape is the author's to change."
133
+ instruction = "Load `references/lens-structure.md` from the skill root and follow it."
134
+
135
+ [[workflow.lenses]]
136
+ code = "prose"
137
+ name = "Editorial Prose"
138
+ applies_to = "docs"
139
+ after = "structure"
140
+ when = "Documents being copy-edited."
141
+ instruction = "Load `references/lens-prose.md` from the skill root and follow it."
@@ -0,0 +1,56 @@
1
+ # Editorial Lenses — Common Ground
2
+
3
+ Shared by the `structure` and `prose` lenses. Load this once; when both lenses run, the setup below is done once and serves both.
4
+
5
+ ## Stance
6
+
7
+ Review a document as a clinical editor and return suggested fixes the author can accept or reject row by row. Two passes: **structure** (cuts, merges, moves, condensing — does the document's shape serve its purpose?) then **prose** (copy-edit for communication issues that impede comprehension). Which of the two run, and in what order, is decided by lens selection — see the skill's Execution section.
8
+
9
+ **Content is sacrosanct.** Never challenge ideas — only how they're organized and expressed. Propose, don't execute: the author decides what to accept.
10
+
11
+ The baseline style guide is `{workflow.style_guide}`; a style guide stated in the request wins over the configured one for that run. Where the style guide in effect conflicts with a generic principle here — including the reader calibration — the style guide wins. Nothing overrides content being sacrosanct.
12
+
13
+ ## Setup
14
+
15
+ 1. Gather inputs: the content (required — a path or pasted text), plus whatever the request states: purpose, target audience, length target, reader type, style guide. If no reviewable content was provided, say so and stop. Request-level values win; `{workflow.reader_type}` and `{workflow.style_guide}` fill what the request leaves unstated. Treat `{workflow.review_guidance}` entries as standing review directives.
16
+ 2. When the content is a file, get exact word counts — document total and per heading section — via `uv run {skill-root}/scripts/word_metrics.py <path>` (`--help` documents the output), and ground every word-impact estimate and the reduction summary in those numbers. If the content was pasted or the script cannot run, estimate and mark the numbers as estimates.
17
+ 3. Infer purpose and audience from the content and standing context when not provided, and open the output with your one-sentence read — "this document exists to help [audience] accomplish [goal]" — so the author can correct a wrong premise before acting on the findings.
18
+
19
+ ## Reader calibration
20
+
21
+ Calibrate every finding to the reader type — stated in the request, else `{workflow.reader_type}`.
22
+
23
+ **humans** (default) — optimize for clarity, flow, and natural progression. These elements serve comprehension and engagement; preserve them unless clearly wasteful, and flag any recommendation that would cut one:
24
+
25
+ - Visual aids: diagrams, images, and flowcharts anchor understanding
26
+ - Expectation-setting: "What You'll Learn" helps readers confirm they're in the right place
27
+ - Reader's journey: organize content as a linear progression, not a database
28
+ - Mental models: overview before details prevents cognitive overload
29
+ - Warmth: encouraging tone reduces anxiety for new users
30
+ - Whitespace: admonitions and callouts provide visual breathing room
31
+ - Summaries: recaps help retention; they're reinforcement, not redundancy
32
+ - Examples: concrete illustrations make abstract concepts accessible
33
+ - Engagement: flow techniques (transitions, variety) are functional, not fluff — they maintain attention
34
+
35
+ **llm** — optimize for precision and unambiguity. An LLM-targeted document may run longer where explicitness pays and shorter where warmth was cut:
36
+
37
+ - Dependency-first: define concepts before usage to minimize hallucination risk
38
+ - Cut emotional language, encouragement, and orientation sections
39
+ - Reference well-known standards ("conventional commits", "REST APIs") instead of re-teaching them; be explicit where a concept is not well-known — and either way, ground the expectation with an example
40
+ - Consistent terminology: same word for same concept throughout
41
+ - No hedging ("might", "could", "generally") — direct statements
42
+ - Prefer structured formats (tables, lists, YAML) over prose
43
+ - Unambiguous references: no unclear antecedents ("it", "this", "the above")
44
+
45
+ ## Findings shape
46
+
47
+ The editorial lenses render as a findings table rather than the canonical JSON fields. One findings table serves both passes:
48
+
49
+ | Pass | Original Text | Revised Text | Changes |
50
+ | --------- | ----------------------------------------------------- | --------------------------------------------- | -------------------------------------------------------------------- |
51
+ | structure | §Setup — full section (~180 words) | MERGE into §Installation | Duplicates the install steps; one source of truth (saves ~150 words) |
52
+ | prose | The system will processes data and it handles errors. | The system processes data and handles errors. | Fixed subject-verb agreement; removed redundant "it" |
53
+
54
+ Structure rows name the section or passage in **Original Text** and carry the tagged disposition (with move target or condensed rewrite) in **Revised Text**; prose rows quote the exact text and its revision. Order rows by comprehension impact; when a long document would produce more rows than an author can realistically act on, present the highest-impact rows and roll the rest into one closing line — "N further minor fixes; ask to expand." Above the table, give the purpose/audience read plus — when the structure pass ran — the chosen structure model. When the structure pass ran, close with a summary: total recommendations, estimated reduction (words and % of original, computed from the word-metrics counts) if all are accepted, whether a provided length target is met, and any comprehension trade-offs (cuts that sacrifice reader engagement for brevity). A pass that finds nothing is a valid result; say so.
55
+
56
+ Shape the table per `{workflow.output_preferences}`.
@@ -0,0 +1,7 @@
1
+ # Prose Lens
2
+
3
+ Load `references/editorial-common.md` from the skill root first and follow it — stance, setup, reader calibration, and findings shape are shared with the structure lens. When the structure lens ran ahead of this one, its findings are supplied to you; when this lens runs alone, there are none and the clauses below that depend on them do not apply.
4
+
5
+ You are a clinical copy-editor: precise, professional, neither warm nor cynical. First analyze the style, tone, and voice of the text and note intentional stylistic choices to preserve (informal tone, technical jargon, rhetorical patterns). Then copy-edit for communication issues that impede comprehension — never rewrite for preference, and apply the smallest fix that achieves clarity. Fix prose within the existing structure (shape problems belong to the structure pass). Skip code blocks, frontmatter, and structural markup. Preserve the author's voice and the stylistic choices you noted. When the structure pass ran, skip passages it tagged CUT, and attach fixes inside MERGE'd passages to the surviving location. Deduplicate: the same issue in several places is one row listing all locations, and merge overlapping fixes into single entries so no suggestions conflict. Phrase uncertain fixes as "Consider: …?" rather than definitive changes.
6
+
7
+ Emit rows with `Pass` = `prose`.
@@ -0,0 +1,9 @@
1
+ # Structure Lens
2
+
3
+ Load `references/editorial-common.md` from the skill root first and follow it — stance, setup, reader calibration, and findings shape are shared with the prose lens.
4
+
5
+ You are a structural editor focused on high-value density. Brevity is clarity: concise writing respects limited attention spans and enables effective scanning. Every section must justify its existence — cut anything that delays understanding. True redundancy is failure — but comprehension sets the floor: optimize for the minimum words that maintain understanding. Front-load value: critical information comes first; nice-to-know comes last (or goes).
6
+
7
+ Load `references/structure-models.md`, pick the model matching the document's purpose, and evaluate the document against it. Hunt for: sections that don't serve the stated purpose, true redundancy (identical information with no reinforcement value), scope violations (content that belongs in a different document), buried critical information, premature detail, missing scaffolding, and the classic anti-patterns — FAQs that should be inline, appendices that should be cut, overviews that repeat the body verbatim. For human readers, also assess pacing: is there enough whitespace and visual variety to maintain attention? Tag each finding CUT, MERGE, MOVE, CONDENSE, QUESTION, or PRESERVE (explicitly keep something that looks cuttable but serves comprehension), and state its word impact from the word-metrics counts. If a length target was provided, assess whether the recommendations meet it.
8
+
9
+ Emit rows with `Pass` = `structure`.
@@ -5,6 +5,5 @@ Core,bmad-party-mode,Party Mode,PM,Orchestrate multi-agent discussions when you
5
5
  Core,bmad-help,BMad Help,BH,,,,anytime,,,false,,
6
6
  Core,bmad-customize,BMad Customize,BC,"Use when you want to change how an agent or workflow behaves — add persistent facts, swap templates, insert activation hooks, or customize menus. Scans what's customizable, picks the right scope (agent vs workflow), writes the override to _bmad/custom/, and verifies the merge. No TOML hand-authoring required.",,,anytime,,,false,{project-root}/_bmad/custom,TOML override files
7
7
  Core,bmad-advanced-elicitation,Advanced Elicitation,AE,"Use at any checkpoint to push a just-produced draft, section, or plan past its first version — pick from a menu of elicitation methods (pre-mortem, first principles, red team, socratic) and apply the improvements.",,,anytime,,,false,,
8
- Core,bmad-editorial-review,Editorial Review,ED,"Two-pass editorial review — structure (cuts, merges, moves) then prose copy-edit. Runs both passes by default; ask for either alone. Use after drafting to tighten and polish any document.",,[path],anytime,,,false,,findings table with suggested fixes
9
- Core,bmad-review,Review,RV,"Multi-lens critical review — adversarial, edge-case, and verification-gap lenses over any diff, doc, or artifact; run one lens, several, or all. Code Review in other modules runs the lenses automatically; also useful for document and spec reviews.",,[path],anytime,,,false,,findings JSON array + markdown report
8
+ Core,bmad-review,Review,RV,"Use to review anything before it ships a diff, branch, or uncommitted changes; a PRD, spec, story, or architecture doc; any prose document. Runs whichever installed lenses fit the content and reports findings in one shape: shipped lenses cover adversarial critique, edge cases, verification gaps, document structure (cuts, merges, moves), and prose copy-edit, and installs may add more. Reach for it to tighten a bloated or LLM-slop draft, pressure-test a plan before building, or check a change is adequately tested. Run every applicable lens or name the ones you want. Code Review in other modules calls it automatically.",,[path],anytime,,,false,,findings JSON array + markdown report
10
9
  Core,bmad-forge-idea,Forge Idea,FI,"Use to pressure-test and harden an idea — software, business, creative, research, or life — until it proves out, hardens into something buildable, or dies cheaply. Persona-driven interrogation; optional handoff to bmad-spec or bmad-quick-dev.",,,anytime,,,false,{output_folder}/forge,refined-idea brief (optional)
@@ -0,0 +1,25 @@
1
+ # v6 Deprecation Shims
2
+
3
+ Skills in this folder are forwarders kept for backward compatibility with v6 skill IDs.
4
+ Each one holds no logic of its own — it forwards to the skill that replaced it, pinning
5
+ the legacy output contract so existing callers keep working.
6
+
7
+ | Shim | Forwards to |
8
+ | --------------------------------- | ---------------------------------------- |
9
+ | `bmad-editorial-review` | `bmad-review` (structure + prose lenses) |
10
+ | `bmad-editorial-review-prose` | `bmad-review` (prose lens) |
11
+ | `bmad-editorial-review-structure` | `bmad-review` (structure lens) |
12
+ | `bmad-review-adversarial-general` | `bmad-review` (adversarial lens) |
13
+ | `bmad-review-edge-case-hunter` | `bmad-review` (edge-case lens) |
14
+ | `bmad-review-verification-gap` | `bmad-review` (verification-gap lens) |
15
+
16
+ `bmad-editorial-review` keeps its `customize.toml` so existing team and user
17
+ overrides still resolve; the shim forwards those resolved values to `bmad-review`.
18
+
19
+ External module repos (gds, loop, tea, bmb, os-utils) still invoke these IDs, so they
20
+ ship by default. Removal rides the v7 cut — never a 6.x minor.
21
+
22
+ The folder is grouping only: the installer discovers skills recursively and installs each
23
+ one under its own `name`, so nesting here does not change any installed path or skill ID.
24
+ A future install option will let users include or exclude this folder before it is removed
25
+ outright.
@@ -0,0 +1,6 @@
1
+ ---
2
+ name: bmad-editorial-review
3
+ description: 'Deprecated — forwards to bmad-review.'
4
+ ---
5
+
6
+ Merged into `bmad-review`. Invoke the `bmad-review` skill on the same content with the `structure` and `prose` lenses — both, structure first, so prose runs on top of the structure findings — unless the caller asked for a structure-only or prose-only review, in which case pass only that lens. Pass through any `also_consider` areas, and forward this skill's resolved `[workflow]` fields as pre-resolved values — but only those that resolved to something, since an empty value here means no legacy override exists and bmad-review's own default should stand: `reader_type`, `style_guide`, `review_guidance`, `output_preferences`, `persistent_facts`, `activation_steps_prepend`, `activation_steps_append`, `on_complete`, and `review_output_path` as the report path. Present the findings in the legacy shape: the two-pass findings table `| Pass | Original Text | Revised Text | Changes |` with the purpose/audience read above it and, when the structure pass ran, the reduction summary below it — and no other lens's output.
@@ -0,0 +1,31 @@
1
+ # DO NOT EDIT -- overwritten on every update.
2
+ #
3
+ # Legacy override surface for bmad-editorial-review, which is deprecated and
4
+ # forwards to bmad-review's `structure` and `prose` lenses. These keys exist
5
+ # only so overrides written against the old skill keep resolving: the shim
6
+ # resolves them here and passes them to bmad-review as pre-resolved values,
7
+ # which bmad-review honors verbatim over its own.
8
+ #
9
+ # Every field is documented in bmad-review's customize.toml, which is where
10
+ # new customization belongs. Defaults are empty here so the shim contributes
11
+ # nothing of its own — an unset key falls through to bmad-review's default.
12
+ #
13
+ # Override files (not edited here):
14
+ # {project-root}/_bmad/custom/bmad-editorial-review.toml (team)
15
+ # {project-root}/_bmad/custom/bmad-editorial-review.user.toml (personal)
16
+ #
17
+ # Overrides merge per BMad structural rules: scalars win, arrays append.
18
+
19
+ [workflow]
20
+
21
+ activation_steps_prepend = []
22
+ activation_steps_append = []
23
+ persistent_facts = []
24
+ review_guidance = []
25
+ on_complete = ""
26
+ output_preferences = ""
27
+ reader_type = ""
28
+ style_guide = ""
29
+
30
+ # Where the findings table lands; forwarded as bmad-review's report path.
31
+ review_output_path = ""
@@ -0,0 +1,6 @@
1
+ ---
2
+ name: bmad-editorial-review-prose
3
+ description: 'Deprecated — forwards to bmad-review.'
4
+ ---
5
+
6
+ Merged into `bmad-review`. Invoke the `bmad-review` skill on the same content with only the `prose` lens, passing through the same inputs and any `also_consider` areas. Present the findings in the legacy shape: a three-column markdown table `| Original Text | Revised Text | Changes |` — no Pass column, no preamble above the table. If no issues are found, output exactly: `No editorial issues identified`.
@@ -0,0 +1,6 @@
1
+ ---
2
+ name: bmad-editorial-review-structure
3
+ description: 'Deprecated — forwards to bmad-review.'
4
+ ---
5
+
6
+ Merged into `bmad-review`. Invoke the `bmad-review` skill on the same content with only the `structure` lens, passing through the same inputs and any `also_consider` areas. Present the findings in the legacy report shape: a `## Document Summary` block (purpose, audience, reader type, structure model, current length), a `## Recommendations` list of numbered `[CUT/MERGE/MOVE/CONDENSE/QUESTION/PRESERVE]` entries each with rationale and word impact, and a closing `## Summary` (total recommendations, estimated reduction) — not the findings table. If no structural issues are found, output exactly: `No substantive changes recommended`.
@@ -1,77 +0,0 @@
1
- ---
2
- name: bmad-editorial-review
3
- description: 'Two-pass editorial review of a document — structure then prose. Use when user says "editorial review", "review the structure", or "review the prose".'
4
- ---
5
-
6
- # Editorial Review
7
-
8
- ## Overview
9
-
10
- Review a document as a clinical editor and return suggested fixes the author can accept or reject row by row. Two passes: **structure** (cuts, merges, moves, condensing — does the document's shape serve its purpose?) then **prose** (copy-edit for communication issues that impede comprehension). Run both, structure first, by default; run only one when the user asks for a structure-only or prose-only review.
11
-
12
- **Content is sacrosanct.** Never challenge ideas — only how they're organized and expressed. Propose, don't execute: the author decides what to accept.
13
-
14
- The baseline style guide is `{workflow.style_guide}`; a style guide stated in the request wins over the configured one for that run. Where the style guide in effect conflicts with a generic principle here — including the reader calibration — the style guide wins. Nothing overrides content being sacrosanct.
15
-
16
- ## Conventions
17
-
18
- - Bare paths and `{skill-root}` resolve from this skill's installed directory; `{project-root}` is the project working directory.
19
- - `{workflow.<name>}` resolves to fields in `customize.toml`'s `[workflow]` table (overrides win per BMad merge rules).
20
- - In `style_guide`, `review_guidance`, and `persistent_facts`, a value prefixed `file:` is a path or glob — load that file's contents. If a `file:` value cannot be read, name the failed file in the output header and continue: the shipped baseline for `style_guide`, the remaining entries otherwise.
21
-
22
- ## On Activation
23
-
24
- 1. Resolve customization: `uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow`. On failure, read `{skill-root}/customize.toml` directly and use defaults. Execute each `{workflow.activation_steps_prepend}` entry in order, and hold `{workflow.persistent_facts}` as standing context for the session.
25
- 2. Gather inputs: the content (required — a path or pasted text), plus whatever the request states: purpose, target audience, length target, reader type, style guide. If no reviewable content was provided, say so and stop. Request-level values win; `{workflow.reader_type}` and `{workflow.style_guide}` fill what the request leaves unstated. Treat `{workflow.review_guidance}` entries as standing review directives.
26
- 3. When the content is a file, get exact word counts — document total and per heading section — via `uv run {skill-root}/scripts/word_metrics.py <path>` (`--help` documents the output), and ground every word-impact estimate and the reduction summary in those numbers. If the content was pasted or the script cannot run, estimate and mark the numbers as estimates.
27
- 4. Infer purpose and audience from the content and standing context when not provided, and open the output with your one-sentence read — "this document exists to help [audience] accomplish [goal]" — so the author can correct a wrong premise before acting on the findings.
28
- 5. Execute each `{workflow.activation_steps_append}` entry in order.
29
-
30
- ## Reader calibration
31
-
32
- Calibrate every finding to the reader type — stated in the request, else `{workflow.reader_type}`.
33
-
34
- **humans** (default) — optimize for clarity, flow, and natural progression. These elements serve comprehension and engagement; preserve them unless clearly wasteful, and flag any recommendation that would cut one:
35
-
36
- - Visual aids: diagrams, images, and flowcharts anchor understanding
37
- - Expectation-setting: "What You'll Learn" helps readers confirm they're in the right place
38
- - Reader's journey: organize content as a linear progression, not a database
39
- - Mental models: overview before details prevents cognitive overload
40
- - Warmth: encouraging tone reduces anxiety for new users
41
- - Whitespace: admonitions and callouts provide visual breathing room
42
- - Summaries: recaps help retention; they're reinforcement, not redundancy
43
- - Examples: concrete illustrations make abstract concepts accessible
44
- - Engagement: flow techniques (transitions, variety) are functional, not fluff — they maintain attention
45
-
46
- **llm** — optimize for precision and unambiguity. An LLM-targeted document may run longer where explicitness pays and shorter where warmth was cut:
47
-
48
- - Dependency-first: define concepts before usage to minimize hallucination risk
49
- - Cut emotional language, encouragement, and orientation sections
50
- - Reference well-known standards ("conventional commits", "REST APIs") instead of re-teaching them; be explicit where a concept is not well-known — and either way, ground the expectation with an example
51
- - Consistent terminology: same word for same concept throughout
52
- - No hedging ("might", "could", "generally") — direct statements
53
- - Prefer structured formats (tables, lists, YAML) over prose
54
- - Unambiguous references: no unclear antecedents ("it", "this", "the above")
55
-
56
- ## Structure pass
57
-
58
- You are a structural editor focused on high-value density. Brevity is clarity: concise writing respects limited attention spans and enables effective scanning. Every section must justify its existence — cut anything that delays understanding. True redundancy is failure — but comprehension sets the floor: optimize for the minimum words that maintain understanding. Front-load value: critical information comes first; nice-to-know comes last (or goes).
59
-
60
- Load `references/structure-models.md`, pick the model matching the document's purpose, and evaluate the document against it. Hunt for: sections that don't serve the stated purpose, true redundancy (identical information with no reinforcement value), scope violations (content that belongs in a different document), buried critical information, premature detail, missing scaffolding, and the classic anti-patterns — FAQs that should be inline, appendices that should be cut, overviews that repeat the body verbatim. For human readers, also assess pacing: is there enough whitespace and visual variety to maintain attention? Tag each finding CUT, MERGE, MOVE, CONDENSE, QUESTION, or PRESERVE (explicitly keep something that looks cuttable but serves comprehension), and state its word impact from the word-metrics counts. If a length target was provided, assess whether the recommendations meet it.
61
-
62
- ## Prose pass
63
-
64
- You are a clinical copy-editor: precise, professional, neither warm nor cynical. First analyze the style, tone, and voice of the text and note intentional stylistic choices to preserve (informal tone, technical jargon, rhetorical patterns). Then copy-edit for communication issues that impede comprehension — never rewrite for preference, and apply the smallest fix that achieves clarity. Fix prose within the existing structure (shape problems belong to the structure pass). Skip code blocks, frontmatter, and structural markup. Preserve the author's voice and the stylistic choices you noted. When the structure pass ran, skip passages it tagged CUT, and attach fixes inside MERGE'd passages to the surviving location. Deduplicate: the same issue in several places is one row listing all locations, and merge overlapping fixes into single entries so no suggestions conflict. Phrase uncertain fixes as "Consider: …?" rather than definitive changes.
65
-
66
- ## Output
67
-
68
- One findings table serves both passes:
69
-
70
- | Pass | Original Text | Revised Text | Changes |
71
- |------|---------------|---------------|---------|
72
- | structure | §Setup — full section (~180 words) | MERGE into §Installation | Duplicates the install steps; one source of truth (saves ~150 words) |
73
- | prose | The system will processes data and it handles errors. | The system processes data and handles errors. | Fixed subject-verb agreement; removed redundant "it" |
74
-
75
- Structure rows name the section or passage in **Original Text** and carry the tagged disposition (with move target or condensed rewrite) in **Revised Text**; prose rows quote the exact text and its revision. Order rows by comprehension impact; when a long document would produce more rows than an author can realistically act on, present the highest-impact rows and roll the rest into one closing line — "N further minor fixes; ask to expand." Above the table, give the purpose/audience read plus — when the structure pass ran — the chosen structure model. When the structure pass ran, close with a summary: total recommendations, estimated reduction (words and % of original, computed from the word-metrics counts) if all are accepted, whether a provided length target is met, and any comprehension trade-offs (cuts that sacrifice reader engagement for brevity). A pass that finds nothing is a valid result; say so.
76
-
77
- Findings land in `{workflow.review_output_path}` when set (default: this table in chat), shaped by `{workflow.output_preferences}`. After the findings are delivered, execute `{workflow.on_complete}` if set.
@@ -1,68 +0,0 @@
1
- # DO NOT EDIT -- overwritten on every update.
2
- #
3
- # Workflow customization surface for bmad-editorial-review.
4
- #
5
- # Override files (not edited here):
6
- # {project-root}/_bmad/custom/bmad-editorial-review.toml (team)
7
- # {project-root}/_bmad/custom/bmad-editorial-review.user.toml (personal)
8
-
9
- [workflow]
10
-
11
- # --- Configurable below. Overrides merge per BMad structural rules: ---
12
- # scalars: override wins • arrays: append
13
-
14
- # Steps executed on activation: prepend runs before the skill's own
15
- # activation flow, append runs after it. Each entry is a literal instruction.
16
- activation_steps_prepend = []
17
- activation_steps_append = []
18
-
19
- # Standing context held for every review. Entries prefixed `file:` are paths
20
- # or globs whose contents load as facts; all others are literal facts.
21
- persistent_facts = ["file:{project-root}/**/project-context.md"]
22
-
23
- # Executed after the findings are delivered. Freeform directive; empty = the
24
- # review ends with the findings.
25
- #
26
- # Example:
27
- # on_complete = "Append a one-line review summary to {project-root}/docs/review-log.md"
28
- on_complete = ""
29
-
30
- # Default reader the review calibrates for when the request doesn't say:
31
- # "humans" clarity, flow, comprehension aids preserved
32
- # "llm" precision, consistent terminology, no hedging
33
- # A reader type stated in the request wins for that run.
34
- reader_type = "humans"
35
-
36
- # The baseline style guide for every review: the name of a guide the model
37
- # knows well, a `file:`-prefixed path to a style guide document, or the rules
38
- # inline as text. A style guide stated in the request wins for that run.
39
- # Where the guide in effect conflicts with the skill's generic principles,
40
- # the guide wins — except content is sacrosanct.
41
- #
42
- # Examples (set in team/user override TOML):
43
- # style_guide = "file:{project-root}/_bmad/style-guides/company-voice.md"
44
- # style_guide = "Sentence-case headings. No Oxford comma. Address the reader as 'you'."
45
- style_guide = "Microsoft Writing Style Guide"
46
-
47
- # Where the findings table lands. A path or path directive; empty = chat.
48
- #
49
- # Example:
50
- # review_output_path = "Write the findings table to <target>-review.md beside the reviewed document."
51
- review_output_path = ""
52
-
53
- # How findings are presented — shaping, not destination. Freeform directive;
54
- # empty = the default table ordering and long-tail rollup.
55
- #
56
- # Example:
57
- # output_preferences = "Cap output at the 20 highest-impact findings."
58
- output_preferences = ""
59
-
60
- # Standing review directives applied on every run alongside the skill's own
61
- # principles. Each entry is a literal sentence or a `file:`-prefixed path/glob
62
- # whose contents load as directives.
63
- #
64
- # Examples:
65
- # "Flag passive voice in headings."
66
- # "Second-person imperative is the house voice; never suggest changing it."
67
- # "file:{project-root}/docs/terminology.md"
68
- review_guidance = []
@@ -1,6 +0,0 @@
1
- ---
2
- name: bmad-editorial-review-prose
3
- description: 'Deprecated — forwards to bmad-editorial-review.'
4
- ---
5
-
6
- Invoke `bmad-editorial-review` in prose-only mode with the same target and inputs. Present the findings in the legacy shape: a three-column markdown table `| Original Text | Revised Text | Changes |` — no Pass column, no preamble above the table. If no issues are found, output exactly: `No editorial issues identified`.
@@ -1,6 +0,0 @@
1
- ---
2
- name: bmad-editorial-review-structure
3
- description: 'Deprecated — forwards to bmad-editorial-review.'
4
- ---
5
-
6
- Invoke `bmad-editorial-review` in structure-only mode with the same target and inputs. Present the findings in the legacy report shape: a `## Document Summary` block (purpose, audience, reader type, structure model, current length), a `## Recommendations` list of numbered `[CUT/MERGE/MOVE/CONDENSE/QUESTION/PRESERVE]` entries each with rationale and word impact, and a closing `## Summary` (total recommendations, estimated reduction) — not the findings table. If no structural issues are found, output exactly: `No substantive changes recommended`.