Skills › BMAD Method › bmad-deep-recon › finalize.md
finalize.md
11 lines · skills/bmad-deep-recon/references/finalize.md at bd70c64
Most marks come from matching words in the file, so treat them as pointers.
1# Finalize
3Every mode ends here once `<folder name>.md` is assembled.
51. `<folder name>.md` is complete per `references/synthesis.md`: decision-first summary, findings, contrary evidence where found, recommendations with downstream bindings, source appendix, staleness map. Frontmatter metadata (`type`, `topic`, `decision`, `source`, `status`, dates) is what lets every downstream consumer trust it without reprocessing.
62. **Citation check — mechanical, then semantic.** Run `uv run {skill-root}/scripts/recon_kit.py citations {doc_workspace}/<folder name>.md` — it diffs inline `[n]` markers against the appendix and lists dangling markers and orphaned rows exactly; fix what it reports. Then a fresh-context subagent does only the judgment half: does each cited source actually say what the text claims? It never rewrites findings — a claim whose source doesn't back it gets its confidence downgraded and the mismatch logged as an `event`.
73. Render per `{workflow.output_format}` (see `references/html-briefing.md`): `auto` renders the briefing page on interactive runs, skips on headless/skill-invoked; `html`/`both` always; `md` never. `<folder name>.md` always exists — the briefing is its regenerable face.
84. Polish: apply each `{workflow.doc_standards}` entry (a `skill:`, `file:`, or plain-text directive) to `<folder name>.md`.
95. Execute each `{workflow.external_handoffs}` entry (NotebookLM, Confluence, …) — invoke the named tool, surface returned URLs; skip and flag unavailable tools.
106. Tell the user what exists and where — report, briefing, imports, memlog — plus what the staleness map says to re-check and when, and that Refresh/Deepen handle it. Invoke the `bmad` skill to suggest the next step.
117. Run `{workflow.on_complete}` if non-empty — a string is one instruction, an array is a sequence.
Finalize
Every mode ends here once <folder name>.md is assembled.
<folder name>.mdis complete perreferences/synthesis.md: decision-first summary, findings, contrary evidence where found, recommendations with downstream bindings, source appendix, staleness map. Frontmatter metadata (type,topic,decision,source,status, dates) is what lets every downstream consumer trust it without reprocessing.- Citation check — mechanical, then semantic. Run
uv run {skill-root}/scripts/recon_kit.py citations {doc_workspace}/<folder name>.md— it diffs inline[n]markers against the appendix and lists dangling markers and orphaned rows exactly; fix what it reports. Then a fresh-context subagent does only the judgment half: does each cited source actually say what the text claims? It never rewrites findings — a claim whose source doesn't back it gets its confidence downgraded and the mismatch logged as anevent. - Render per
{workflow.output_format}(seereferences/html-briefing.md):autorenders the briefing page on interactive runs, skips on headless/skill-invoked;html/bothalways;mdnever.<folder name>.mdalways exists — the briefing is its regenerable face. - Polish: apply each
{workflow.doc_standards}entry (askill:,file:, or plain-text directive) to<folder name>.md. - Execute each
{workflow.external_handoffs}entry (NotebookLM, Confluence, …) — invoke the named tool, surface returned URLs; skip and flag unavailable tools. - Tell the user what exists and where — report, briefing, imports, memlog — plus what the staleness map says to re-check and when, and that Refresh/Deepen handle it. Invoke the
bmadskill to suggest the next step. - Run
{workflow.on_complete}if non-empty — a string is one instruction, an array is a sequence.