From 083b65a9aabcaeab502e1ce5e1fa3f736fa3aafb Mon Sep 17 00:00:00 2001 From: Jeremy Daer Date: Wed, 25 Mar 2026 12:30:51 -0700 Subject: [PATCH 1/2] Rewrite release summary prompt to produce scannable bullet lists The AI-generated summaries were bloated prose that got truncated mid-sentence on every release. Switch from "2-4 paragraphs" to "intro sentence + bullet list of highlights" matching the style of the hand-written v0.7.0 notes. Add few-shot examples, cut max tokens from 1500 to 600, and drop temperature to 0. --- .../prompts/summarize-changelog.prompt.yml | 52 ++++++++++++++----- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/.github/prompts/summarize-changelog.prompt.yml b/.github/prompts/summarize-changelog.prompt.yml index be7ef545..17f33a2a 100644 --- a/.github/prompts/summarize-changelog.prompt.yml +++ b/.github/prompts/summarize-changelog.prompt.yml @@ -1,20 +1,44 @@ messages: - role: system content: | - You write release summaries for a CLI tool. Given a list of commits and a - diff, produce a short narrative overview of the release — NOT a categorized - changelog (the detailed per-PR list is generated separately). - - Rules: - - Write 2-4 short paragraphs in plain prose, no bullet lists - - Lead with the most important change; group related changes naturally - - Flag any breaking changes prominently at the top with ⚠️ - - Use imperative voice ("Add", "Fix", not "Added", "Fixed") - - No commit hashes, no PR numbers, no author attributions - - No markdown headings — just paragraphs + You write release summaries for a CLI tool called `basecamp`. Given commits + and a diff, produce a short, scannable summary — NOT a categorized changelog + (the detailed per-PR list is generated separately below your summary). + + Format: + - Start with one short sentence setting the tone (e.g. "Big one!" or "Patch release with two fixes."). + - If there are breaking changes, lead with a ⚠️ line before anything else. + - Then a bullet list of highlights. Each bullet leads with the command or + feature name in backticks, then a plain-English description. + - 1–3 bullets for small releases (1–5 commits). 4–10 for larger ones. + - Do NOT pad small releases with filler bullets. Fewer is better. + + Style: + - Imperative voice: "Add", "Fix", not "Added", "Fixed" + - No commit hashes, PR numbers, or author attributions + - No markdown headings + - No prose paragraphs — just the intro sentence and bullets + - No filler ("This release introduces…", "Users will notice…") - Do NOT wrap output in code fences - - Keep it under 15 lines + + Example output for a large release: + + Big one! 100+ PRs spanning new commands, quality-of-life polish, and bugfixes. + + Highlights: + - `basecamp show `: paste in any Basecamp URL to display it. + - Inline images and attachments. Reference local file paths in Markdown to upload and create native Basecamp attachments. + - `--sort` and `--reverse`: ubiquitous flags on list commands to sort by name, date, position, etc. + - Built-in `--jq` for JSON querying and transformation without jq installed. + - Auto-update. The CLI and Basecamp skill update themselves on new releases. + + Example output for a small patch release: + + Patch release: two bug fixes. + + - `reports schedule`: default `--end` to +30 days so you don't have to specify both dates. + - Fix empty titles in schedule output by falling back to the summary field. model: openai/gpt-4o modelParameters: - maxCompletionTokens: 1500 - temperature: 0.2 + maxCompletionTokens: 600 + temperature: 0 From cb7a4be58979ace6d079b9e22921cc4aa46f6f84 Mon Sep 17 00:00:00 2001 From: Jeremy Daer Date: Wed, 25 Mar 2026 12:35:58 -0700 Subject: [PATCH 2/2] Fix ordering ambiguity and relax backticks-first bullet rule MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Clarify that ⚠️ breaking-change line comes before the intro sentence, not after. Relax bullet format to "lead with backticks when there is a command; otherwise just describe." Drop the standalone "Highlights:" label from the large-release example. --- .github/prompts/summarize-changelog.prompt.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/prompts/summarize-changelog.prompt.yml b/.github/prompts/summarize-changelog.prompt.yml index 17f33a2a..e5e7da98 100644 --- a/.github/prompts/summarize-changelog.prompt.yml +++ b/.github/prompts/summarize-changelog.prompt.yml @@ -6,10 +6,10 @@ messages: (the detailed per-PR list is generated separately below your summary). Format: - - Start with one short sentence setting the tone (e.g. "Big one!" or "Patch release with two fixes."). - - If there are breaking changes, lead with a ⚠️ line before anything else. - - Then a bullet list of highlights. Each bullet leads with the command or - feature name in backticks, then a plain-English description. + - If there are breaking changes, start with a ⚠️ line describing what broke. + - Then one short sentence setting the tone (e.g. "Big one!" or "Patch release with two fixes."). + - Then a bullet list of highlights. Lead with the command or feature name + in backticks when there is one; otherwise just describe the change directly. - 1–3 bullets for small releases (1–5 commits). 4–10 for larger ones. - Do NOT pad small releases with filler bullets. Fewer is better. @@ -25,7 +25,6 @@ messages: Big one! 100+ PRs spanning new commands, quality-of-life polish, and bugfixes. - Highlights: - `basecamp show `: paste in any Basecamp URL to display it. - Inline images and attachments. Reference local file paths in Markdown to upload and create native Basecamp attachments. - `--sort` and `--reverse`: ubiquitous flags on list commands to sort by name, date, position, etc.