Skip to content

feat: AI-powered release notes generator#575

Open
timotheeguerin wants to merge 7 commits into
mainfrom
feat/release-notes-generator
Open

feat: AI-powered release notes generator#575
timotheeguerin wants to merge 7 commits into
mainfrom
feat/release-notes-generator

Conversation

@timotheeguerin

Copy link
Copy Markdown
Owner

Summary

Adds a new chronus release-notes CLI command that collects pending change descriptions and assembles a structured prompt for AI tools (GitHub Copilot Cloud Agent, Claude, etc.) to generate blog-post-style release notes.

What's included

  • chronus release-notes CLI command

    • --context-only: outputs raw structured change data (markdown or JSON)
    • Default: outputs the full assembled prompt (template + context)
    • --package / --policy: scope to specific packages or version policies
    • --output / --format: control output destination and format
  • Prompt template system

    • Built-in default template that produces release notes matching the TypeSpec website format (frontmatter, highlights with narrative, bug fixes, additional improvements, full changelog in <details>)
    • Customizable via .chronus/release-notes-prompt.md in the repo
    • Template variables: {{context}}, {{version}}, {{slug}}, {{packages}}, {{releaseDate}}, {{policy}}
  • GitHub enricher plugin (@chronus/github/release-notes)

    • Adds PR numbers, URLs, author info, and commit links to change metadata
    • Follows the same plugin pattern as the existing changelog generator
  • Copilot Cloud Agent skill (.github/copilot/release-notes.md)

    • Instructions for the GitHub Cloud Agent to invoke chronus and produce release notes
  • New package exports

    • @chronus/chronus/release-notes
    • @chronus/github/release-notes

Usage

# Full prompt ready for an AI tool
chronus release-notes --policy my-policy

# Just the structured context (for Cloud Agent consumption)
chronus release-notes --context-only --policy my-policy

# Output to file
chronus release-notes --policy my-policy -o release-notes-prompt.md

Design

The prompt template is modeled after the typespec-release-notes-author project's output format, producing release notes pages with:

  • YAML frontmatter
  • One-line intro + thank-you
  • Narrative highlight sections with code examples and Related PR links
  • Bug fix narratives
  • Additional improvements
  • Full mechanical changelog in a collapsible <details> block

Add a new `chronus release-notes` CLI command that collects pending change
descriptions and assembles a structured prompt for AI tools to generate
blog-post-style release notes.

Key components:
- Context collection: gathers changes, groups by kind/package, applies enrichers
- Prompt template system: default template with {{variable}} interpolation,
  customizable via .chronus/release-notes-prompt.md
- CLI command: --context-only for raw data, full prompt output by default
- GitHub enricher plugin: adds PR numbers, authors, commit URLs
- Copilot Cloud Agent skill: .github/copilot/release-notes.md
- New package exports: @chronus/chronus/release-notes, @chronus/github/release-notes
@pkg-pr-new

pkg-pr-new Bot commented Jun 10, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@chronus/chronus@575
npm i https://pkg.pr.new/@chronus/github@575

commit: 3873abd

@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

All changed packages have been documented.

  • @chronus/chronus
  • @chronus/github
Show changes

@chronus/chronus - feature ✏️

Add chronus ai-release-notes command that generates an AI prompt for writing blog-post-style release notes from pending changes.,> ,> The command collects all pending changes (grouped by package and change kind) into a structured context and renders it into a ready-to-use prompt for an LLM. You can scope it to specific packages or policies, output the raw context as Markdown/JSON, or write the result to a file.,> ,> bash,> # Print the full AI prompt for all pending changes,> chronus ai-release-notes,> ,> # Scope to specific packages and write the prompt to a file,> chronus ai-release-notes --package @chronus/chronus --package @chronus/github -o release-notes-prompt.md,> ,> # Output only the raw change context (no prompt template) as JSON,> chronus ai-release-notes --context-only --format json,> ,> ,> The prompt template can be customized via the releaseNotes.prompt option in .chronus/config.yaml.

@chronus/github - feature ✏️

Enrich chronus ai-release-notes with GitHub pull request and author information.,> ,> When generating release notes, each change is now linked to the pull request that introduced it and credited to its author, so the resulting notes can reference PRs and contributors. If no GitHub token is available the changes are left unchanged.

@chronus/chronus - internal ✏️

Make chronus ai-release-notes generate notes end to end, optionally driving an AI CLI for you.,> ,> ## Usage,> ,> Print the prompt (default) and pipe it into the agent of your choice:,> ,> bash,> chronus ai-release-notes --policy my-policy,> ,> ,> Or let chronus run the agent and capture the generated notes directly:,> ,> bash,> # Requires the `copilot` (GitHub Copilot CLI) or `claude` (Claude Code) binary on your PATH and logged in,> chronus ai-release-notes --policy my-policy --tool copilot -o release-notes/next.md,> ,> ,> A progress spinner is shown on stderr while the agent runs; the generated document is written to --output (or stdout).,> ,> ## Configure defaults in .chronus/config.yaml,> ,> yaml,> releaseNotes:,> tool: copilot # copilot | claude | none (default: none, just print the prompt),> output: release-notes/{{slug}}.md # where to write the notes; supports {{version}} and {{slug}},> prompt: ./custom-prompt.md # optional: override the built-in prompt template,> ,> ,> The --tool and --output flags override the config. The built-in prompt produces plain, framework-agnostic Markdown (no front matter, MDX, or HTML), so it works regardless of your docs site.,> ,> ## What changed,> ,> - Bundle the default prompt template so the command works when installed (previously failed with ENOENT on default-prompt.md).,> - Add --tool <copilot|claude|none> / releaseNotes.tool to run the prompt non-interactively and capture the result.,> - Add releaseNotes.output (with {{version}}/{{slug}} placeholders) to write notes to a configured path.,> - Rewrite the default prompt to be plain-Markdown and framework/folder-structure agnostic.,> - Allow the releaseNotes section (prompt, output, enrichers, tool) in .chronus/config.yaml.

@timotheeguerin timotheeguerin marked this pull request as ready for review June 26, 2026 15:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant