Release & Maintenance Guide Generator
Produce a single .docx document covering how a project keeps moving forward
after a transition — release process, coding conventions, who owns what, what's
outstanding, and a concrete ownership-transfer checklist with sign-off. This is
the most people-and-process-oriented of the handover documents: prefer
checklists and tables over long narrative paragraphs so a new team can act on
it, not just read it once.
Sections (in this order)
Cover page, Version History, Document Approval, Revision Log, and TOC are
automatic — your sections array starts at "1. Release Overview".
| # |
Section |
Content |
Diagram? |
| 1 |
Release Overview |
Why this handover/transition is happening and its effective date; current release status |
|
| 2 |
Branch Strategy & Release Process |
Branching model, naming conventions, versioning/tagging, merge/release process, branch protection rules |
|
| 3 |
Coding Standards |
Linting/formatting tools, naming conventions, PR/review requirements |
|
| 4 |
Documentation References |
Links to the other handover documents (Project Overview, Architecture, HLD, Ops & Deployment Guide, Runbook, API docs, Database Design) and any wikis/ADRs |
|
| 5 |
External Dependencies & Vendor Ownership |
Third-party services/vendors the project depends on, and who owns each relationship |
|
| 6 |
Team Contacts |
Table: Name, Role, Area of Expertise, Contact, Availability After Handover |
|
| 7 |
Known Issues |
Table: Issue, Impact, Current Workaround, Tracking Ticket |
|
| 8 |
Technical Debt |
Table: Item, Reason It Exists, Risk if Unaddressed, Suggested Priority |
|
| 9 |
Pending Enhancements / Roadmap |
Bullet list: in-flight or planned work, with status/owner/target date where known |
|
| 10 |
Ownership Transfer Checklist |
Checklist table: Item (repo access, cloud console, domain/DNS, third-party accounts, on-call rotation, Slack channels, shared inboxes...), Transferred? (Y/N), Date, Notes |
Ownership Transfer Flow diagram |
| 11 |
Sign-off |
Use documentApprovalTable()-style table captioned "Handed over by" / "Received by" — name, signature, date |
|
| 12 |
Appendix |
Anything else worth preserving |
|
Diagram Policy
Applies to the .docx path only — Markdown embeds Mermaid source
directly instead of rendering anything (see "Output Format" below).
Prefer a real Mermaid diagram — rendered via mmdc and embedded with
B.diagramImage() — over diagramPlaceholder(), but only once you have
concrete structure to draw (real names, not "TBD"). Read
references/diagram-generation.md when you're actually about to render one
— it has the full build order, the bundled config
(assets/mermaid-config.json), the exact mmdc flags, and token-saving
tips. Skip it entirely if this document ends up needing no diagrams.
Missing Information Policy
Never invent contacts, known issues, or technical debt items you have no
basis for. Use toBeCompleted("...") for sections you lack real input for,
explaining what's needed, and still generate everything else. Never place
actual passwords, API keys, or secret values anywhere in this document —
reference where they're stored (password manager, secrets vault) and who can
grant access instead.
Output Format
Ask the user which output format they want, unless they've already said so in
this request (e.g., "as a docx", "in markdown," "just give me an .md file") —
a quick single-choice question is enough, don't block on it otherwise:
Word document (.docx) — the default assumption if the person hasn't
specified and their context suggests a formal deliverable. Follow "Using
the builder" below.
Markdown (.md) — no script needed, write the file directly. Use these
conventions so it stays structurally equivalent to the docx version:
Front matter: instead of a cover page, open with the title as an #
heading, the project name as an italic subtitle line, then a metadata
table instead of separate Version History / Approval / Revision Log
tables:
# Release & Maintenance Guide
*Acme Order Platform*
| Field | Value |
|---|---|
| Version | 0.1 |
| Author | Jane Doe |
| Date | 2026-07-19 |
| Status | Draft |
| Approved By | Jane Doe (Tech Lead) |
Headings: #/##/###/#### matching the same section levels used in
the table above — don't flatten everything to one level, that's what
keeps the document skimmable and consistent with the docx version.
Tables: standard Markdown tables.
Diagrams — unlike the .docx path, don't render or embed an image here.
Write the actual Mermaid source directly in a fenced code block; GitHub,
GitLab, Obsidian, and most modern Markdown viewers render mermaid code
blocks natively, so this is a real diagram, not a placeholder:
```mermaid
flowchart TD
A[Client] --> B[API Gateway]
B --> C[Order Service]
C --> D[(Database)]
```
Only fall back to a text placeholder if you don't yet have concrete
enough detail to draw something real (mirrors toBeCompleted above):
> 📊 **DIAGRAM PLACEHOLDER — TO BE COMPLETED**
> Not enough detail yet to draw the System Architecture Diagram — need
> the actual component names and how they connect.
"To be completed" callout — same blockquote treatment:
> ⚠️ **TO BE COMPLETED**
> Explanation of what input is needed to fill this in.
Save as Release_and_Maintenance_Guide.md instead of Release_and_Maintenance_Guide.docx.
Workflow
Ask the output format first (see "Output Format" above). For Markdown, skip straight to writing the file using those conventions — the numbered steps below describe the .docx path.
- Gather what's available — issue tracker export, existing contact list, or
ask directly about known issues, tech debt, and pending work.
- Draft each section as data using the builder functions below. Be as
concrete and exhaustive as the available information allows on the
Ownership Transfer Checklist — it's often the single most useful table in
the whole package for the receiving team.
- Build with
scripts/docx_builder.js.
- Skip PDF conversion by default —
docx_builder.js is already tested and
hardened (table widths and text alignment are enforced at the library
level), so routine generations don't need a re-render just to confirm it
worked. Only convert to PDF and view it if the user explicitly asks for
visual verification, or if something about this generation is unusual
(e.g., a new kind of content the library hasn't handled before, or a
reported rendering problem). When you do need it: soffice --headless --convert-to pdf <file>.docx (or libreoffice --headless ...), then
pdftoppm -jpeg -r 100 <file>.pdf page and view the images.
- Save to
/mnt/user-data/outputs/Release_and_Maintenance_Guide.docx (or .md if that's the chosen format) and present it.
Using the builder (for the .docx path)
This library requires the docx npm package. Before running any script,
check it's available with node -e "require('docx')"; if that fails, install
it with npm install docx in the working directory first — don't assume it's
pre-installed, since that varies by environment.
const B = require("./scripts/docx_builder.js");
const sections = [
B.h1("1. Release Overview"),
B.para("This project is transitioning from the founding team to the Platform Engineering team, effective 2026-08-01."),
B.h1("6. Team Contacts"),
B.table(["Name", "Role", "Area of Expertise", "Contact", "Availability After Handover"],
[["Jane Doe", "Tech Lead", "Order Service", "jane@acme.com", "Available 2 weeks post-handover"]],
[1800, 1800, 2000, 1800, 1800]),
B.h1("10. Ownership Transfer Checklist"),
B.table(["Item", "Transferred?", "Date", "Notes"],
[["GitHub repo admin access", "No", "", "Pending — needs org owner approval"]],
[3200, 1600, 1600, 2600]),
// Prefer B.diagramImage(path, {caption}) with a real mmdc render when
// possible (see "Diagram Policy" above) — diagramPlaceholder() is the fallback:
B.diagramPlaceholder({
name: "Ownership Transfer Flow",
purpose: "Show the sequence of access/ownership transfers and who approves each.",
recommendedContent: ["Outgoing team", "Incoming team", "Org admin approvals", "Vendor account transfers"],
}),
B.h1("11. Sign-off"),
B.table(["", "Name", "Signature", "Date"],
[["Handed over by", "", "", ""], ["Received by", "", "", ""]],
[2400, 2400, 2400, 1800]),
];
await B.buildDocument("/mnt/user-data/outputs/Release_and_Maintenance_Guide.docx", {
docLabel: "Release & Maintenance Guide",
title: "Release & Maintenance Guide",
subtitle: "Acme Order Platform",
versionHistory: [["0.1", "2026-07-19", "Jane Doe", "Initial draft"]],
approvers: [["Jane Doe", "Delivery Manager", "", ""]],
revisionLog: [],
sections,
});
Available functions: h1/h2/h3/h4, para, bullets, table(headers, rows, widths), pageBreak, toBeCompleted(explanation),
diagramPlaceholder({name, purpose, recommendedContent, notes}), and
buildDocument(path, options). Always use heading functions for titles so
Word's Table of Contents and Navigation Pane work correctly.
Success Criteria
A new team should be able to release a change, follow the project's
conventions, know who to ask about what, and see exactly what access still
needs transferring — using only this document.
1---2name: release-maintenance-guide3description: Generate a professional Release & Maintenance Guide as a formatted Word (.docx) file — release/branch strategy, coding standards, documentation index, external/vendor dependencies, team contacts, known issues, technical debt, pending enhancements, and an ownership transfer checklist with sign-off. Use this whenever someone asks for a "release guide," "maintenance guide," "ongoing ownership doc," "handover sign-off," or wants a standalone document covering how a project continues to be maintained and by whom after a transition. Part of an enterprise handover documentation suite (see also: project-overview-doc, architecture-document, high-level-design, operations-deployment-guide, support-runbook, api-documentation, database-design) but fully usable standalone.4---56# Release & Maintenance Guide Generator78Produce a single `.docx` document covering how a project keeps moving forward9after a transition — release process, coding conventions, who owns what, what's10outstanding, and a concrete ownership-transfer checklist with sign-off. This is11the most people-and-process-oriented of the handover documents: prefer12checklists and tables over long narrative paragraphs so a new team can act on13it, not just read it once.1415## Sections (in this order)1617Cover page, Version History, Document Approval, Revision Log, and TOC are18automatic — your `sections` array starts at "1. Release Overview".1920| # | Section | Content | Diagram? |21|---|---|---|---|22| 1 | Release Overview | Why this handover/transition is happening and its effective date; current release status | |23| 2 | Branch Strategy & Release Process | Branching model, naming conventions, versioning/tagging, merge/release process, branch protection rules | |24| 3 | Coding Standards | Linting/formatting tools, naming conventions, PR/review requirements | |25| 4 | Documentation References | Links to the other handover documents (Project Overview, Architecture, HLD, Ops & Deployment Guide, Runbook, API docs, Database Design) and any wikis/ADRs | |26| 5 | External Dependencies & Vendor Ownership | Third-party services/vendors the project depends on, and who owns each relationship | |27| 6 | Team Contacts | Table: Name, Role, Area of Expertise, Contact, Availability After Handover | |28| 7 | Known Issues | Table: Issue, Impact, Current Workaround, Tracking Ticket | |29| 8 | Technical Debt | Table: Item, Reason It Exists, Risk if Unaddressed, Suggested Priority | |30| 9 | Pending Enhancements / Roadmap | Bullet list: in-flight or planned work, with status/owner/target date where known | |31| 10 | Ownership Transfer Checklist | Checklist table: Item (repo access, cloud console, domain/DNS, third-party accounts, on-call rotation, Slack channels, shared inboxes...), Transferred? (Y/N), Date, Notes | **Ownership Transfer Flow** diagram |32| 11 | Sign-off | Use `documentApprovalTable()`-style table captioned "Handed over by" / "Received by" — name, signature, date | |33| 12 | Appendix | Anything else worth preserving | |3435## Diagram Policy3637**Applies to the `.docx` path only** — Markdown embeds Mermaid source38directly instead of rendering anything (see "Output Format" below).3940Prefer a real Mermaid diagram — rendered via `mmdc` and embedded with41`B.diagramImage()` — over `diagramPlaceholder()`, but only once you have42concrete structure to draw (real names, not "TBD"). Read43`references/diagram-generation.md` when you're actually about to render one44— it has the full build order, the bundled config45(`assets/mermaid-config.json`), the exact `mmdc` flags, and token-saving46tips. Skip it entirely if this document ends up needing no diagrams.4748## Missing Information Policy4950Never invent contacts, known issues, or technical debt items you have no51basis for. Use `toBeCompleted("...")` for sections you lack real input for,52explaining what's needed, and still generate everything else. Never place53actual passwords, API keys, or secret values anywhere in this document —54reference where they're stored (password manager, secrets vault) and who can55grant access instead.5657## Output Format5859Ask the user which output format they want, unless they've already said so in60this request (e.g., "as a docx", "in markdown," "just give me an .md file") —61a quick single-choice question is enough, don't block on it otherwise:6263- **Word document (.docx)** — the default assumption if the person hasn't64 specified and their context suggests a formal deliverable. Follow "Using65 the builder" below.66- **Markdown (.md)** — no script needed, write the file directly. Use these67 conventions so it stays structurally equivalent to the docx version:6869 - Front matter: instead of a cover page, open with the title as an `#`70 heading, the project name as an italic subtitle line, then a metadata71 table instead of separate Version History / Approval / Revision Log72 tables:7374 ```markdown75 # Release & Maintenance Guide76 *Acme Order Platform*7778 | Field | Value |79 |---|---|80 | Version | 0.1 |81 | Author | Jane Doe |82 | Date | 2026-07-19 |83 | Status | Draft |84 | Approved By | Jane Doe (Tech Lead) |85 ```86 - Headings: `#`/`##`/`###`/`####` matching the same section levels used in87 the table above — don't flatten everything to one level, that's what88 keeps the document skimmable and consistent with the docx version.89 - Tables: standard Markdown tables.90 - Diagrams — unlike the `.docx` path, don't render or embed an image here.91 Write the actual Mermaid source directly in a fenced code block; GitHub,92 GitLab, Obsidian, and most modern Markdown viewers render `mermaid` code93 blocks natively, so this is a real diagram, not a placeholder:9495 ````markdown96 ```mermaid97 flowchart TD98 A[Client] --> B[API Gateway]99 B --> C[Order Service]100 C --> D[(Database)]101 ```102 ````103 Only fall back to a text placeholder if you don't yet have concrete104 enough detail to draw something real (mirrors `toBeCompleted` above):105 ```markdown106 > 📊 **DIAGRAM PLACEHOLDER — TO BE COMPLETED**107 > Not enough detail yet to draw the System Architecture Diagram — need108 > the actual component names and how they connect.109 ```110 - "To be completed" callout — same blockquote treatment:111112 ```markdown113 > ⚠️ **TO BE COMPLETED**114 > Explanation of what input is needed to fill this in.115 ```116 - Save as `Release_and_Maintenance_Guide.md` instead of `Release_and_Maintenance_Guide.docx`.117118## Workflow119120Ask the output format first (see "Output Format" above). For Markdown, skip straight to writing the file using those conventions — the numbered steps below describe the `.docx` path.1211221. Gather what's available — issue tracker export, existing contact list, or123 ask directly about known issues, tech debt, and pending work.1242. Draft each section as data using the builder functions below. Be as125 concrete and exhaustive as the available information allows on the126 Ownership Transfer Checklist — it's often the single most useful table in127 the whole package for the receiving team.1283. Build with `scripts/docx_builder.js`.1294. Skip PDF conversion by default — `docx_builder.js` is already tested and130 hardened (table widths and text alignment are enforced at the library131 level), so routine generations don't need a re-render just to confirm it132 worked. Only convert to PDF and view it if the user explicitly asks for133 visual verification, or if something about this generation is unusual134 (e.g., a new kind of content the library hasn't handled before, or a135 reported rendering problem). When you do need it: `soffice --headless136 --convert-to pdf <file>.docx` (or `libreoffice --headless ...`), then137 `pdftoppm -jpeg -r 100 <file>.pdf page` and view the images.1385. Save to `/mnt/user-data/outputs/Release_and_Maintenance_Guide.docx` (or `.md` if that's the chosen format) and present it.139140## Using the builder (for the .docx path)141142This library requires the `docx` npm package. Before running any script,143check it's available with `node -e "require('docx')"`; if that fails, install144it with `npm install docx` in the working directory first — don't assume it's145pre-installed, since that varies by environment.146147```javascript148const B = require("./scripts/docx_builder.js");149150const sections = [151 B.h1("1. Release Overview"),152 B.para("This project is transitioning from the founding team to the Platform Engineering team, effective 2026-08-01."),153154 B.h1("6. Team Contacts"),155 B.table(["Name", "Role", "Area of Expertise", "Contact", "Availability After Handover"],156 [["Jane Doe", "Tech Lead", "Order Service", "jane@acme.com", "Available 2 weeks post-handover"]],157 [1800, 1800, 2000, 1800, 1800]),158159 B.h1("10. Ownership Transfer Checklist"),160 B.table(["Item", "Transferred?", "Date", "Notes"],161 [["GitHub repo admin access", "No", "", "Pending — needs org owner approval"]],162 [3200, 1600, 1600, 2600]),163164 // Prefer B.diagramImage(path, {caption}) with a real mmdc render when165 // possible (see "Diagram Policy" above) — diagramPlaceholder() is the fallback:166 B.diagramPlaceholder({167 name: "Ownership Transfer Flow",168 purpose: "Show the sequence of access/ownership transfers and who approves each.",169 recommendedContent: ["Outgoing team", "Incoming team", "Org admin approvals", "Vendor account transfers"],170 }),171172 B.h1("11. Sign-off"),173 B.table(["", "Name", "Signature", "Date"],174 [["Handed over by", "", "", ""], ["Received by", "", "", ""]],175 [2400, 2400, 2400, 1800]),176];177178await B.buildDocument("/mnt/user-data/outputs/Release_and_Maintenance_Guide.docx", {179 docLabel: "Release & Maintenance Guide",180 title: "Release & Maintenance Guide",181 subtitle: "Acme Order Platform",182 versionHistory: [["0.1", "2026-07-19", "Jane Doe", "Initial draft"]],183 approvers: [["Jane Doe", "Delivery Manager", "", ""]],184 revisionLog: [],185 sections,186});187```188189Available functions: `h1`/`h2`/`h3`/`h4`, `para`, `bullets`, `table(headers,190rows, widths)`, `pageBreak`, `toBeCompleted(explanation)`,191`diagramPlaceholder({name, purpose, recommendedContent, notes})`, and192`buildDocument(path, options)`. Always use heading functions for titles so193Word's Table of Contents and Navigation Pane work correctly.194195## Success Criteria196197A new team should be able to release a change, follow the project's198conventions, know who to ask about what, and see exactly what access still199needs transferring — using only this document.