$VARIABLE_NAME$ syntax and are replaced at generation time by the parseVariables() function in src/utils/templates.mjs. Substitution is a global string replacement — every occurrence of a variable in a template is replaced. Any variable that has no value is replaced with an empty string.
How substitution works
$ delimiters). If a value is falsy (null, undefined, or empty string), the placeholder is replaced with ''.
Variables in minutes_base_<shortname>
These variables are available when generateMeetingMinutes() processes the minutes template:
The generated meeting title. Constructed from the
HOST and GROUP_NAME properties in meeting_base_<shortname> and the meeting date: {HOST} {GROUP_NAME} Meeting {YYYY-MM-DD}. Example: Node.js Technical Steering Committee (TSC) Meeting 2025-01-15.The full URL of the GitHub issue created for the meeting (e.g.,
https://github.com/nodejs/TSC/issues/1234). Available after the issue has been created.The full URL of the HackMD document for the meeting minutes (e.g.,
https://hackmd.io/@openjs-nodejs/abc123). Available after the HackMD document has been created.The raw contents of the
invited_<shortname> template file. Inserted verbatim into the Present section of the minutes.The raw contents of the
observers_<shortname> template file. Inserted verbatim after $INVITED$ in the Present section. Empty string if the observers file is empty.Auto-generated Markdown listing the GitHub issues and pull requests labelled with the group’s
AGENDA_TAG, grouped by repository. Each item is formatted as * {title} [#{number}]({url}). Empty if no agenda items are found.Variables in meeting_issue.md
These variables are available when generateMeetingIssue() processes the shared meeting_issue.md template:
The meeting start time formatted in UTC, e.g.
15:00 UTC. Derived from the calendar event.A Markdown table body with rows for multiple timezones, each showing the equivalent local date and time. Used inside the pre-formatted table in
meeting_issue.md.A formatted Markdown link to a timeanddate.com page for the specific meeting time, allowing anyone to convert it to their local timezone.
A formatted Markdown link to a Wolfram Alpha query for the meeting time, as an alternative timezone conversion tool.
The value of
AGENDA_TAG from meeting_base_<shortname> (e.g., tsc-agenda). Used in the issue body to describe which label was used to collect agenda items.The GitHub organization name. Sourced from the
USER property in meeting_base_<shortname> (typically nodejs).Same as in the minutes template: the auto-generated Markdown list of agenda items. Falls back to
*No agenda items found.* when empty.The raw contents of the
invited_<shortname> file. Inserted under the Invited heading in the meeting issue.The value of
JOINING_INSTRUCTIONS from meeting_base_<shortname>. Inserted under the Joining the meeting heading. Can be multi-line Markdown.The full URL of the HackMD minutes document. Appears in the Links section of the meeting issue.
The raw contents of the
observers_<shortname> file. Inserted under the Observers/Guests heading in the meeting issue.