Skip to content

feat: support custom additional information in PR welcome message #1143

Description

@rnetser

Problem

The PR welcome message only displays server-managed content (commands, labels, merge requirements). There's no way for repository owners to add project-specific information — deployment checklists, review guidelines, team contacts, or repo-specific notes.

Solution

Add a welcome-extra-info feature that renders user-provided content as an "Additional Information" section at the end of the PR welcome message. Content is injected as-is (markdown).

Priority Chain (first match wins)

Priority Source Location
1 (highest) .github-webhook-server-welcome-message.md In the repo (default branch)
2 .github-webhook-server.yamlwelcome-extra-info In the repo (default branch)
3 config.yamlrepositories.X.welcome-extra-info Server config, per-repo
4 (lowest) config.yamlwelcome-extra-info Server config, global

Config

# Global (config.yaml)
welcome-extra-info: "Please review the contribution guide before merging."

# Per-repo (config.yaml or .github-webhook-server.yaml)
welcome-extra-info: |
  **Important:** All PRs must include unit tests and documentation updates.

File-based (.github-webhook-server-welcome-message.md)

A markdown file in the repo root (read from the default branch). Supports rich markdown — tables, checklists, links. Max 10KB.

Rendering

Section appears at the end of the welcome message:

... (existing sections) ...

#### Additional Information
<content from file or config, injected as-is>

For more information...

Done

  • Schema: welcome-extra-info (global + per-repo string field)
  • Load .github-webhook-server-welcome-message.md from repo default branch
  • Priority chain: file → repo YAML → per-repo config → global config
  • Render as "Additional Information" section at end of welcome message
  • /regenerate-welcome includes the section
  • Remove all custom-commands code from the branch
  • Tests: config loading, file loading, priority, rendering, empty/missing cases
  • Schema validation tests
  • Update examples/config.yaml

Design Decisions (Updated)

Section Header Format

The section uses ### 📌 Additional Information (h3 with pin emoji), matching the heading level used by all other welcome message sections (Tips, Merge Requirements, Review Process, etc.). This is a deliberate design choice — not the originally specced #### Additional Information — made during implementation to maintain visual consistency.

Content Processing

File content is .strip()-ed before injection. This is standard file-reading behavior — leading/trailing whitespace in files is typically unintentional (trailing newlines from editors, etc.). GitHub's markdown renderer ignores leading/trailing whitespace anyway, so .strip() has no visual effect while keeping the stored value clean.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions