Skip to content

Delimit publishable content in merge approval prompt #531

Description

@williamthorsen

Delimit publishable content in merge approval prompt

Problem

The merge approval prompt rendered by the merge-pr skill mixes the merge commit's title and body with surrounding metadata (header line, strategy/delete fields, CI status, free-form context). With no visual boundary around the publishable content, it's hard to tell at a glance where the body ends and unrelated agent commentary begins.

The same Title:/Body: shape is reused by merge-bb-pr for its "auto-merge unavailable, here's what would have merged" fallback notice, so the same confusion applies there.

Context

  • The prompt template lives in packages/agents/content/skills/merge-pr/SKILL.md step 7 ("Approval gate").
  • The Bitbucket fallback template lives in packages/agents/content/skills/merge-bb-pr/SKILL.md.
  • Agents frequently append freelance context (CI status, branch fate, etc.) after the body and before the approval question. That text isn't part of the template but renders adjacent to the body, contributing to the confusion.

Solution

Wrap the publishable fields in inward-pointing triangle delimiters so the boundary between "what will be published" and "everything else" is unmistakable:

  • Title: Wrap inline with ▶︎ … ◀︎. Pattern: Title: ▶︎ {merge_title} ◀︎.
  • Body: Replace the Body: label with a ▼ Body heading on its own line, and add a closing on its own line after the body content. Both glyphs point at the body region.

Before

  Title:    #384 root|tooling: Move CWS pack output to tmp directory (#392)
  Strategy: squash
  Delete:   remote

  Body:
  Moves the Chrome Web Store upload artifact from `.dist/dist-cws.zip` to `tmp/cws-packed/extension.zip`. The previous location was a single-character variant of the loose-extension `dist/` directory, inviting typos in scripts and confusion in code review. The new location nests under the existing `tmp/` (already gitignored), is consistent with the artifact's ephemeral lifecycle, and adds no new top-level entries to the project root.

  Closes #384

CI status: code-quality ✓, audit ✓, e2e ✓ (mergeStateStatus: CLEAN). Squash will land a single commit on main; the local 384 branch stays untouched, remote origin/384 will be deleted.

Proceed with merge? 👍🏼👎🏼

After

  Title:    ▶︎ #384 root|tooling: Move CWS pack output to tmp directory (#392) ◀︎
  Strategy: squash
  Delete:   remote

  ▼ Body
  Moves the Chrome Web Store upload artifact from `.dist/dist-cws.zip` to `tmp/cws-packed/extension.zip`. The previous location was a single-character variant of the loose-extension `dist/` directory, inviting typos in scripts and confusion in code review. The new location nests under the existing `tmp/` (already gitignored), is consistent with the artifact's ephemeral lifecycle, and adds no new top-level entries to the project root.

  Closes #384
  ▲

CI status: code-quality ✓, audit ✓, e2e ✓ (mergeStateStatus: CLEAN). Squash will land a single commit on main; the local 384 branch stays untouched, remote origin/384 will be deleted.

Proceed with merge? 👍🏼👎🏼

Apply the same treatment to:

  1. merge-pr/SKILL.md step 7 (pre-merge approval prompt).
  2. merge-bb-pr/SKILL.md (Bitbucket fallback notice).

Anything outside the delimiters — strategy/delete fields, the trailing approval question, freelance commentary the agent adds — is unambiguously metadata.

Acceptance criteria

  • merge-pr/SKILL.md step 7 prompt template wraps Title: inline with ▶︎ … ◀︎.
  • merge-pr/SKILL.md step 7 prompt template uses ▼ Body / to delimit the body region (heading line + closing-glyph line).
  • merge-bb-pr/SKILL.md notice template applies the same title and body delimiters.
  • Both updated templates render correctly when the body is empty or single-paragraph (no orphan delimiters, no double blank lines).
  • Agent guidance covers the convention (template uses delimiters; freelance context goes outside the delimited region).

Metadata

Metadata

Labels

featureAdded or improved external functionalityscope:agents

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions